2017-12-29 13 views
3

Ich möchte eine Funktion same_base(word1, word2) schreiben, die True zurückgibt, wenn word1 und word2 sind zwei englische Wörter aus dem gleichen Wort abgeleitet. Ich erkenne, dass Worte mehrere Sinne haben können; Ich möchte, dass der Algorithmus übereifrig ist und True zurückgibt, wann immer es möglich ist, um die Wörter als aus dem gleichen Ort stammend zu sehen. Einige falsche Positive sind in Ordnung; Falsche Negative sind nicht.Ermitteln, ob zwei Wörter aus dem gleichen Stamm in Python stammen

Normalerweise würden dafür Stemming und Lemmatisierung verwendet. Hier ist, was ich versucht habe:

  • Überprüfen Sie, ob die Wörter auf die gleiche Sache stammen, zum Beispiel mit dem Porter Stemmer. Dies fängt nicht sung und sing, und dug, medication und medicine.
  • Überprüfen Sie, ob die Wörter auf die gleiche Sache lemmatize. Es ist unklar, welche Argumente an den Lemmatizer übergeben werden sollen (d. H. Für einen Teil der Rede). Der WordNet-Lemmatizer scheint zumindest zu konservativ zu sein.

Gibt es ein solches Werkzeug? Brauche ich nur eine extrem aggressive Stemmer/Lemmatizer Combo - und wenn ja, wo würde ich eine finden?

+0

Sie können ein POS-Tag als zweites Argument an den Lemmatiser übergeben. Das verbessert die Dinge. –

+0

danke! Ich hatte Mühe, herauszufinden, welcher Teil der Rede eingefügt werden sollte; Ich könnte versuchen, jeden Teil der Rede durchzugehen und zu prüfen, ob sich die beiden Wörter auf dasselbe Thema lemmatisieren. Auch das hat seine Probleme; zum Beispiel, "liebevoll" ist nicht lemmatisiert, um zu "lieben", egal, welcher Teil der Rede, die ich gebe. –

+0

Das ist die Herausforderung, ich fürchte :-( –

Antwort

1

Die allgemeine Aufgabe, wie Sie es beschrieben haben, ist nicht möglich durch einfache Textanalyse der Eingabezeichen. Englisch hat keine konsistenten Regeln für den Umgang mit Wörtern, wenn sie sich weiterentwickeln. Ja, ein ausgezeichneter Lemmatiser wird die einfachen Fälle für Sie lösen, die Sie erkennen können, wenn Sie Transformationen anwenden, die in diesem POS üblich sind (wie unregelmäßige Verben).

Um falsche Negative zu eliminieren, müssen Sie jedoch die Basis des Wortes vollständig abdecken; komplett erfordert Etymologie, besonders in Fällen, in denen das Stammwort nicht in der englischen Sprache ist, oder vielleicht nicht in dem verkürzten Wort selbst erscheint.

Zum Beispiel, was Software-Tool können Ihnen sagen, dass dis und speculum die gleiche Wurzel haben (specere), aber die species nicht? Wie würden Sie sagen, dass gentle, gentile, genteel und jaunty die gleiche Wurzel haben? Sie benötigen die Etymologie, um 100% der tatsächlichen Verbindungen zu erhalten.

Verwandte Themen