8

Python + NLTK を使用して、文が過去/現在/未来を参照しているかどうかを識別するにはどうすればよいですか?

POS タグ付けだけでこれを行うことはできますか? これは少し不正確に思えます。単語だけでなく、文の文脈を考慮する必要があるように思えます。

それができる別のライブラリの提案はありますか?

4

2 に答える 2

9

POS タグ付け - 動詞の時制を見ることができるタグを提供します - はすでに文の文脈を考慮しているため、問題に対処します。文脈による正確さ。実際、POS タグ付けは単語だけでは正しく機能しません。Ch.のこの例を見てください。文の文脈を考慮して、NLTKに同音異義語を指定して名詞と動詞を区別させます (つまり、動詞と名詞として異なる意味を持つことができるpermitのような単語を指定します)。

別の例を見てみましょう。今回はいくつかの同音異義語が含まれています。

  >>> text = nltk.word_tokenize("They refuse to permit us to obtain the refuse permit")
  >>> nltk.pos_tag(text)
  [('They', 'PRP'), ('refuse', 'VBP'), ('to', 'TO'), ('permit', 'VB'), ('us', 'PRP'),
  ('to', 'TO'), ('obtain', 'VB'), ('the', 'DT'), ('refuse', 'NN'), ('permit', 'NN')]

拒否と許可の両方が現在時制の動詞 (VBP) と名詞 (NN) として表示されることに注意してください。たとえば、refUSE は「否定」を意味する動詞ですが、REFuse は「ゴミ」を意味する名詞です (つまり、同音異義語ではありません)。したがって、テキストを正しく発音するには、どの単語が使用されているかを知る必要があります。(このため、テキスト読み上げシステムは通常、POS タグ付けを実行します。)

于 2013-11-14T17:49:25.383 に答える
6

これを自分で行うのはそれほど難しくありません。 この表は、さまざまな動詞の時制を識別するのに役立ちます。それらを処理するには、nltk.pos_tag(string) の結果を解析するだけです。

「だったかもしれない」などの不規則な動詞の時制のすべてに入りたいかどうかはわかりませんが、現在/過去/未来のみが必要な場合、これは非常に簡単な解析タスクです。

これを独自に行うライブラリを知りません。これを決定するためにモデルをトレーニングすることを常に考えていましたが、それを回避することはできませんでした。

多少の誤差はありますが、大きくはなりません。時制をどのように処理するかを決定するために、すべての動詞を解析することをお勧めします。時制は存在しますが、未来時制の節があります ( [that] he will see her ) したがって、これはあなたの問題の言語学に入ります。

于 2013-11-14T15:46:23.800 に答える