2017-07-29 6 views
0

Ich versuche, Wörter in einem Text zu lemmatizieren. Wie zum Beispiel ‚gebeizt‘ sollte ‚Gurke‘ drehen, ‚lief‘ auf ‚Run‘, ‚Rosinen‘ bis ‚Rosine‘ usw.Nltks wordnet lemmatizer nicht alle Wörter lemmatizierend

Ich nltk die mit WordNet Lemmatizer wie folgt:

from nltk.stem import WordNetLemmatizer 
>>> 
>>> lem = WordNetLemmatizer() 
>>> print(lem.lemmatize("cats")) 
cat 
>>> print(lem.lemmatize("pickled")) 
pickled 
>>> print(lem.lemmatize("ran")) 
ran 

So, wie Sie für 'pickled' und 'ran' sehen können, kommt die Ausgabe nicht wie erwartet. Wie man 'pickle' und 'run' für diese bekommt, ohne 'v' (Verb) usw. für die Wörter spezifizieren zu müssen.

+0

Wie wäre es [POS-Tagging] (http://www.nltk.org/api/nltk.tag.html#nltk.tag.pos_tag)? – lenz

Antwort

1

Sie können nach einem Substantiv oder Verb die Grundform lemmatize() Funktion erhalten, indem die häufigste Ergebnis der Funktion immer ein 'v' oder 'n' Parameter unter geben und nicht alles vorbei.

kein direkter Weg zu tun, aber man kann immer die Grundform eines Substantivs oder ein Verb den folgenden Code versuchen:

def most_common(lst): 
    return max(set(lst), key=lst.count) 
words = ['ran','pickled','cats',"crying","died","raisins","had"] 
for word in words: 
    checkList=[WordNetLemmatizer().lemmatize(word,'v'),WordNetLemmatizer().lemmatize(word,'n'),WordNetLemmatizer().lemmatize(word,'n')] 
    print most_common(checkList) 

Sie erhalten die Grundform:

ran 
pickled 
cat 
cry 
died 
raisin 
had 
+0

Wie ich erwähnt habe, möchte ich nicht 'v' eingeben, weil es ein riesiger Text ist und ich es nicht für jedes Wort tun kann. Oder ist es wahrscheinlich ein Weg? – akrama81

+0

Hat die Antwort aktualisiert. Hoffe das funktioniert für dich – Sriram

Verwandte Themen