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
undsing
, unddug
,medication
undmedicine
. - Ü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?
Sie können ein POS-Tag als zweites Argument an den Lemmatiser übergeben. Das verbessert die Dinge. –
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. –
Das ist die Herausforderung, ich fürchte :-( –