47

文のペアの意味的類似性スコアを計算するためのライブラリはありますか?

WordNet のセマンティック データベースと、2 単語のスコアを生成する方法を認識していますが、文全体と出力に対して、ポート ステミング、単語の削除の停止などのすべての前処理タスクを実行するライブラリを探しています。 2 つの文がどの程度関連しているかのスコア。

一連の前処理ステップを使用してスコアを計算する .NET フレームワークを使用して作成された進行中の作業を見つけました。Pythonでこれを行うプロジェクトはありますか?

スコアを見つけるのに役立つ一連の操作を探しているわけではありません (ここで求められているように)
。各ステージを自分で実装するか、異なるライブラリの関数を接着して、文のペアで機能するようにしたいと思います。しかし、これは主に、データの推論をテストするためのツールとして必要です。


編集: NLTK を使用して、2 つの文で繰り返される単語のペアごとにスコアを計算し、結果の標準偏差から推論を引き出すことを検討していましたが、それが類似性の正当な推定値であるかどうかはわかりません。さらに、長い文字列の場合はかなりの時間がかかります。
繰り返しますが、これをインテリジェントに実装しているプロジェクト/ライブラリを探しています。これを可能にする何か:

import amazing_semsim_package
str1='Birthday party ruined as cake explodes'
str2='Grandma mistakenly bakes cake using gunpowder'

>>similarity(str1,str2)
>>0.889
4

3 に答える 3

50

これについて私が見た中で最高のパッケージは、Gensim Homepageにある Gensimです。私は何度もそれを使用しましたが、全体的に使いやすさに非常に満足しています。これは Python で書かれており、 9 つの文字列を比較するわかりやすいチュートリアルが用意されています。pip経由でインストールできるので、インストールに手間がかからないことを願っています。

どのスコアリング アルゴリズムを使用するかは、問題のコンテキストに大きく依存しますが、基本的なものが必要な場合は、LSI 機能から始めることをお勧めします。(それがチュートリアルの説明です。)

gensim のチュートリアルを実行すると、Similarities 関数を使用して 2 つの文字列を比較する手順が説明されています。これにより、文字列に含まれるテキストに基づいて、文字列を相互に比較したり、他の文字列と比較したりすることができます。

それがどのように機能するかの背後にある科学に興味がある場合は、この論文をチェックしてください.

于 2013-06-18T23:37:31.960 に答える
5

残念ながら、PY についてはお手伝いできませんが、辞書を使用して文間のセマンティック比較を行う私の古いプロジェクトをご覧になることをお勧めします (これは、後でベクトル空間分析を実装する PY でコーディングできます)。JAVA から PY への変換は、わずか数時間のコーディングで済みます。 https://sourceforge.net/projects/semantics/

于 2014-09-26T15:44:46.370 に答える