Ich bin auf der Suche nach einem Weg durch einen Satz gehen, um zu sehen, ob ein Apostroph ein Zitat oder eine Kontraktion ist, so kann ich Satzzeichen aus der Zeichenfolge entfernen und normalisieren dann alle Wörter.herauszufinden, ob ein Apostroph ist ein Zitat oder eine Kontraktion
Mein Test Satz ist: don't frazzel the horses. 'she said wow'.
In meiner Versuche, die ich den Satz in Worte Teile geteilt haben tokonizing auf Worte und nicht Worte wie so:
contractionEndings = ["d", "l", "ll", "m", "re", "s", "t", "ve"]
sentence = "don't frazzel the horses. 'she said wow'.".split(/(\w+)|(\W+)/i).reject! { |word| word.empty? }
Das gibt ["don", "'", "t", " ", "frazzel", " ", "the", " ", "horses", ". '", "she", " ", "said", " ", "wow", "'."]
Next I möchte in der Lage sein, Satz nach Apostrophen '
zu iterieren und wenn man gefunden wird, vergleichen Sie das nächste Element, um zu sehen, ob es im contractionEndings
Array enthalten ist. Wenn es enthalten ist, möchte ich das Präfix, den Apostroph '
, und das Suffix in einem Index, sonst die Apostrophe entfernen.
In diesem Beispiel don
, '
und t
würden in don't
als einzigen Index verbunden werden, aber . '
und '.
entfernt werden würde.
Danach kann ich eine Regex ausführen, um andere Satzzeichen aus dem Satz zu entfernen, so dass ich es in meine Stemmer übergeben kann, um die Eingabe zu normalisieren.
Die endgültige Ausgabe, nach der ich bin, ist don't frazzel the horses she said wow
, in der alle Interpunktionszeichen neben Apostrophen für Kontraktionen entfernt werden.
Wenn jemand irgendwelche Vorschläge hat, um diese Arbeit zu machen oder eine bessere Idee zu haben, wie man dieses Problem löst, würde ich gerne wissen.
Insgesamt möchte ich alle Interpunktion aus dem Satz mit Ausnahme von Kontraktionen entfernen.
Danke
, was zur Folge haben Sie erwarten, endlich – Ilya
? @Ilya 'Sie die Pferde nicht frazzel sie sagte wow' –
Warum die Eile, eine Antwort zu wählen? Warum nicht mindestens unt warten Haben diejenigen, die an Antworten gearbeitet haben, eine Chance zu posten? –