NLTKとWordNetを使用して、単純な時制動詞を現在形、過去形、または過去分詞形に変換するにはどうすればよいですか?
例えば:
次のように、期待される形で動詞を与える関数を書きたいと思います。
v = 'go'
present = present_tense(v)
print present # prints "going"
past = past_tense(v)
print past # prints "went"
NLTK の助けを借りて、これも行うことができます。動詞の原形を与えることができます。しかし、正確な時制ではありませんが、それでも有用です。次のコードを試してください。
from nltk.stem.wordnet import WordNetLemmatizer
words = ['gave','went','going','dating']
for word in words:
print word+"-->"+WordNetLemmatizer().lemmatize(word,'v')
出力は次のとおりです。
gave-->give
went-->go
going-->go
dating-->date
Stack Overflow の質問NLTK WordNet Lemmatizer: Should n't it lemmatize all inflections of a word? をご覧ください。.
あなたが探しているのはNodeBox::Linguisticsライブラリだと思います。まさにそれを行います:
print en.verb.present("gave")
>>> give
JWI (MIT による WordNet ライブラリ) にはステマー (WordNetStemmer) もあり、単語のさまざまな形態学的形式 ("written"、"writes"、"wrote") を基本形に変換します。ただし、名詞(複数形など)と動詞でのみ機能するようです。
WordNet と JWNL を使用した Java での Word Stemming では、別の Java ベースの Wordnet ライブラリである JWNL を使用して、この種のステミングを行う方法も示しています。