4

私は現在、ドキュメント全体を実行し、すべてのキーワードを取り出して、これらのキーワードを他のドキュメントで見つかったものと照合しようとするスクリプトに取り組んでいます。これを複雑にするいくつかの詳細がありますが、それらは私の質問にはあまり関係ありません. 基本的には時制に関係なく単語を一致させたいと思っています。

例: 文字列 "swim"、"swam"、および "swimming" が与えられた場合、これらがすべて同じ単語であることを認識できるプログラムが必要です。私にはそれほど問題ではありません。

この問題は、これらすべての単語形式を含む辞書でほとんど解決できることは承知していますが、これに役立つような方法でマップされた辞書を知りません。Python と互換性のあるソリューションまたはライブラリを好むのは、それが現在このスクリプト作成に使用しているためです。と連携)

4

3 に答える 3

5

pywordnetをチェックしてください。

>>> N['dog']
dog(n.)
>>> N['dog'].getSenses()
('dog' in {noun: dog, domestic dog, Canis familiaris},
 'dog' in {noun: frump, dog}, 'dog' in {noun: dog},
 'dog' in {noun: cad, bounder, blackguard, dog, hound, heel},
 'dog' in {noun: pawl, detent, click, dog},
 'dog' in {noun: andiron, firedog, dog, dogiron})
于 2012-06-01T14:20:52.970 に答える
1

あなたの質問から、基本的に各単語をその辞書形式にマップするステミングまたはレンマタイゼーションアルゴリズムを探しているように思えます。そのようなよく知られたアルゴリズムの 1 つは Porter Stemming アルゴリズムです。このアルゴリズムは 30 年間使用されており、Python を含むさまざまな言語で実装されています。これらの実装のリストはhttp://tartarus.org/martin/PorterStemmer/にあります。

Porter ステマーは長い間使用されており、比較の目的で役立つ可能性がありますが、Spaceghost は、これが必ずしも利用可能な最良のシステムではないことを正しく指摘しています. Snowballは、Porter ステミング アルゴリズムよりも優れていると考えられています。

于 2012-06-02T04:55:21.973 に答える
0

あなたが説明するこの問題はステミングの問題のようです、それらはポーターステマーのようないくつかの有用なステマーです。具体的には、Python用のnltkツールキットを使用して実装してみてください。間違いがない場合は、ポーターステマーが付属しています。

于 2012-06-05T08:58:09.660 に答える