2017-07-29 1 views
0

私はテキスト内の単語を字形化しようとしています。次のように私はNLTKのWordNet Lemmatizerを使用しています「漬物」例えばLIKE「ピクルス」に変わります、「RUN」に「走り」、「レーズン」「レーズン」になど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

あなたは'v'または'n'パラメータを渡すと、何も渡していない間の機能の最も一般的な結果を取得することにより、名詞や動詞のlemmatize()機能の塩基形態を得ることができます。

していないための直接的な方法がありますが、名詞や動詞の基本フォームを取得するための次のコードを試すことができます:

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

関連する問題