2016-06-08 13 views
0

Ich möchte alle Bindestriche im Textdokument löschen, die ich in Rapidminer analysiere. Dafür benutze ich den Operator "Dokumente aus Dateien verarbeiten", um große PDF-Dateien zu analysieren. Jede Datei enthält eine Menge Bindestriche, die ich löschen möchte, bevor ich den Text in Stücke (keine Buchstaben) zerlege. Ich habe den Operator "Token ersetzen" verwendet. Damit kann ich Bindestriche durch andere Symbole ersetzen, aber ich kann sie nicht durch nichts oder eine leere Zeichenfolge ("") ersetzen. Ich habe auch versucht, mein eigenes Wörterbuch von Stoppwörtern (Nicht-Buchstaben, -) zu verwenden. Dieser Operator arbeitet überhaupt nicht. Ich habe mein Wörterbuch mit den Zeichen und Wörtern, die ich löschen möchte, als Textdatei gespeichert (jeweils in der neuen Zeile). Kann jemand zu diesem Thema helfen?Lösche Bindestrich (Sonderzeichen) während der Textverarbeitung in RapidMiner

Antwort

0

Sie können Replace Tokens mit den folgenden Parametern verwenden.

replace what()[-]

replace by$1

Es ist ein bisschen wie ein Hack, aber es funktioniert, weil die erste Erfassungsgruppe zwischen den Klammern immer leer sein wird, und der gesamte reguläre Ausdruck einen einzigen Bindestrich entspricht. Das $1 ist das Ergebnis der ersten Erfassungsgruppe und es ist immer leer.

Hier ist ein Beispielprozess, der das funktioniert zeigt.

<?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> 

Hoffe, dass hilft als Grundlage.

+0

Vielen Dank! Es funktioniert perfekt! – In777

Verwandte Themen