web-dev-qa-db-ja.com

NLTKとWordNetの使用。単純な時制動詞を現在、過去、過去の分詞形に変換するにはどうすればよいですか?

NLTKと WordNet を使用して、単純な時制動詞を現在、過去、または過去の分詞形に変換するにはどうすればよいですか?

例:

動詞を期待どおりの形で与える関数を以下のように書きたいと思います。

v = 'go'
present = present_tense(v)
print present # prints "going"

past = past_tense(v)
print past # prints "went"
35

あなたが探しているのは NodeBox :: Linguistics ライブラリーだと思います。それはまさにそれを行います:

print en.verb.present("gave")
>>> give
19
msbmsb

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

スタックオーバーフローの質問を見てくださいNLTK WordNet Lemmatizer:それは単語のすべての活用形を見出し語化すべきではありませんか?

22
Gunjan

Python3の場合:

git clone https://github.com/clips/pattern
cd pattern
git fetch
git checkout development
pip install mysqlclient
python setup.py install

その後

from pattern.en import conjugate, lemma, lexeme,PRESENT,SG
print (lemma('gave'))
print (lexeme('gave'))
print (conjugate(verb='give',tense=PRESENT,number=SG)) # he / she / it

収量

give ['give', 'gives', 'giving', 'gave', 'given'] gives

@Agargaraに感謝し、美しい作品を提供するPatternの作者と作者を支援してください。サポートしてください;-)

11

JWI(MITによるWordNetライブラリ)には、(「書かれた」、「書き込み」、「書かれた」)のようなWordのさまざまな形態学的形式を基本形式に変換するステマー(WordNetStemmer)もあります。ただし、名詞(複数形など)と動詞に対してのみ機能するようです。

JavaでのWordステミングも、この種の方法を示しています別のJavaベースのWordnetライブラリであるJWNLを使用したステミング:

0
Hoda