2013-06-10 36 views
36

文章の意味類似度スコアを計算するライブラリはありますか?Python:文字列の意味類似度スコア

私はWordNetのセマンティックデータベースを知っていますが、どのように2単語のスコアを生成できるのですか?私はポートステミング、ストップワード除去などのすべての前処理タスクを実行するライブラリを探しています2つの文がどのように関連しているかについてのスコアを出力する。

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

私は
私は別のライブラリから接着剤の機能を自分で各ステージを実装するのが大好き、またはたい( hereを依頼されたように)私はスコアを見つけるのに役立つだろう一連の操作を探していないよ

ようにそれは文のペアのために働くが、私はこれを主にデータの推論をテストするツールとして必要とする。


編集:私は結果の標準偏差から推論を引き出すそして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 
+0

ベクトルベースの意味モデルまたは行列分解モデルを考慮して、文の類似性を比較してください。もしあなたがレクのようなコサインに戻ってしまうのであれば、最初に文をベクトル化して2つのベクトルの間のコサインを計算する – alvas

+0

カットオフや必然的にスコアを必要とする場合は、NLTKのwup類似点を考慮してください。タイプ(動詞、名詞、形容詞など)を取得するには、CLIPSパターンのようなものを使用する必要があります。gensimやKmeansのファジィ/コサイン実装で見られるように、LSA/LDAのカテゴリの完全な数を実際に見つけるためにそれを使うことができます。 –

答えて

37

Gensim Homepageで発見、Gensimされています。私は何度も使用してきましたが、使いやすさは全体的にとても満足していました。これはPythonで書かれており、簡単にはtutorialに従っています。これは9文字列を比較します。それはピップを介してインストールすることができますので、あなたはそれがインストールされている多くの面倒を持っていません私は願っています。

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

gensimのチュートリアルでは、Similarities機能を使用して2つの文字列を比較する方法を説明します。これにより、あなたの刺され方が、それに含まれるテキストに基づいて、お互いに、あるいは他の刺し方とどのように比較されるかを見ることができます。

あなたはそれがどのように動作するかの背後にある科学に興味があるなら、this paper.

+0

)これは非常に有望です。これを指摘してくれてありがとう、ジャスティン。 – user8472

-4

最も強力なNLP-Libの私の知る限りPython用が、私はこれを見た中で最高のパッケージhttp://nltk.org/

+3

NLTKは一対の単語概念間の意味的類似性について約6点を持っていますが、私は2つの文字列を比較しようとしています( – user8472

0

をチェックアウト残念ながら、私はPYのお手伝いをすることはできませんが、セマンティック比較を達成するために辞書を使用して、私の古いプロジェクトを見てみること(後にベクトル空間分析を実施するPYでコード化することができる)。 JAVAからPYへの翻訳には数時間のコーディングが必要です。 https://sourceforge.net/projects/semantics/

関連する問題