2017-07-29 115 views
0

我試圖在文本中詞彙單詞化。例如像「酸菜」應該轉向「泡菜」,「跑」到「運行」,「葡萄乾」到「葡萄乾」等Nltk的詞網lemmatizer不會引起所有單詞

我使用NLTK的WordNet Lemmatizer如下:

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

所以,正如你所看到的'pickled''ran'一樣,輸出結果並不如預期的那樣。如何獲得'pickle''run'這些,而不必指定'v'(動詞)等詞。

+0

怎麼樣[POS標記](http://www.nltk.org/api/nltk.tag.html#nltk.tag.pos_tag)? – lenz

回答

1

你可以得到lemmatize()功能名詞或通過獲取傳遞'v''n'參數,而不是通過任何中間功能的最常見的結果動詞的基本形式。

不是一個直接的辦法,但你可以試試下面的代碼得到一個名詞的基本形式或動詞:

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) 

你得到的基本形式:

ran 
pickled 
cat 
cry 
died 
raisin 
had 
+0

正如我所提到的,我不想輸入'v',因爲這是一個巨大的文本,我不能爲每個單詞做。或者可能有一種方法? – akrama81

+0

對答案進行了更新。希望這對你有用 – Sriram

相關問題