2016-06-08 7 views
0

Rapidminer에서 분석하는 텍스트 문서의 하이픈을 모두 삭제하고 싶습니다. 이를 위해 필자는 "파일에서 문서 처리"연산자를 사용하여 대형 PDF 파일을 분석합니다. 각 파일에는 텍스트를 조각이 아닌 문자로 토큰 화하기 전에 삭제하려는 하이픈이 많이 포함되어 있습니다. 저는 연산자 "Replace token"을 사용했습니다. 그것으로 하이픈을 다른 기호로 바꿀 수는 있지만 아무것도 없거나 빈 문자열 ("")로 바꿀 수는 없습니다. 나는 또한 사용자 정의 사전 (비 문자, -) 사전을 사용하려고했습니다. 이 연산자는 전혀 작동하지 않습니다. 문자와 삭제하려는 단어가 포함 된 사전을 텍스트 파일로 저장했습니다 (각각 새 줄에 있음). 아무도이 문제에 대해 도움을 줄 수 있습니까?RapidMiner에서 텍스트를 처리하는 동안 하이픈 (특수 문자)을 삭제하십시오.

답변

0

다음 매개 변수와 함께 Replace Tokens을 사용할 수 있습니다.

replace by$1

그것은 해킹의 약간의 그러나 괄호 사이의 첫 번째 캡처 그룹은 항상 비어 있습니다 전체 정규 표현식은 하나의 하이픈과 일치하기 때문에 작동

replace what()[-]. $1은 첫 번째 캡처 그룹의 결과이며 항상 비어 있습니다.

다음은이 작업을 보여주는 프로세스의 예입니다.

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<process version="7.0.000"> 
    <context> 
    <input/> 
    <output/> 
    <macros/> 
    </context> 
    <operator activated="true" class="process" compatibility="7.0.000" expanded="true" name="Process"> 
    <process expanded="true"> 
     <operator activated="true" class="text:create_document" compatibility="7.0.000" expanded="true" height="68" name="Create Document" width="90" x="246" y="187"> 
     <parameter key="text" value="some text &#10;with&#10;some-text-with-hyphens-in&#10;hyphens in&#10;"/> 
     </operator> 
     <operator activated="true" class="text:replace_tokens" compatibility="7.0.000" expanded="true" height="68" name="Replace Tokens" width="90" x="447" y="187"> 
     <list key="replace_dictionary"> 
      <parameter key="()[-]" value="$1"/> 
     </list> 
     </operator> 
     <operator activated="true" class="text:process_documents" compatibility="7.0.000" expanded="true" height="103" name="Process Documents" width="90" x="648" y="187"> 
     <parameter key="vector_creation" value="Term Occurrences"/> 
     <process expanded="true"> 
      <operator activated="true" class="text:tokenize" compatibility="7.0.000" expanded="true" height="68" name="Tokenize" width="90" x="179" y="85"/> 
      <connect from_port="document" to_op="Tokenize" to_port="document"/> 
      <connect from_op="Tokenize" from_port="document" to_port="document 1"/> 
      <portSpacing port="source_document" spacing="0"/> 
      <portSpacing port="sink_document 1" spacing="0"/> 
      <portSpacing port="sink_document 2" spacing="0"/> 
     </process> 
     </operator> 
     <connect from_op="Create Document" from_port="output" to_op="Replace Tokens" to_port="document"/> 
     <connect from_op="Replace Tokens" from_port="document" to_op="Process Documents" to_port="documents 1"/> 
     <connect from_op="Process Documents" from_port="example set" to_port="result 1"/> 
     <portSpacing port="source_input 1" spacing="0"/> 
     <portSpacing port="sink_result 1" spacing="0"/> 
     <portSpacing port="sink_result 2" spacing="0"/> 
    </process> 
    </operator> 
</process> 

희망 사항을 근거로합니다.

+0

정말 고마워요! 그것은 완벽하게 작동합니다! – In777