web-dev-qa-db-ja.com

2つのフレーズの意味的類似性を伝えるアルゴリズムはありますか

入力:フレーズ1、フレーズ2

出力:セマンティック類似値(0と1の間)、またはこれら2つのフレーズが同じことについて話している確率

62
btw0

この論文をご覧になることをお勧めします。

セマンティックネットとコーパス統計に基づく文の類似性(PDF)

説明したアルゴリズムを実装しました。私たちの文脈は非常に一般的であり(事実上、2つの英文)、採用されたアプローチは遅すぎ、結果は有望でありながら十分ではありませんでした(または、かなりの、余分な努力なしではそうである可能性が高い)。

あまり多くのコンテキストを提供しないので、必ずしもこれを推奨することはできませんが、問題を解決する方法を理解する上で論文を読むことは役立つでしょう。

よろしく、

マット。

42
Matt Mower

これには短い答えと長い答えがあります。

短い答え:

WordNet :: Similarity Perlパッケージを使用してください 。 Perlが選択言語でない場合は、プリンストンの WordNetプロジェクトページ をチェックするか、ラッパーライブラリをGoogleでチェックしてください。

長い答え:

Wordの類似性を判断することは複雑な問題であり、この分野の研究はまだ非常に盛んです。類似度を計算するには、Wordのmeaningの適切な表現が必要です。しかし、たとえば「椅子」の意味の表現は何でしょうか?実際、「椅子」の正確な意味はとは何ですか?このことについて長く一生懸命に考えると、頭がおかしくなり、少し気が狂ってしまい、最後に哲学または計算言語学の研究キャリアを取り、真実を見つけます™。哲学者も言語学者も文字通り何千年もの間、答えを考え出そうとしてきましたが、終わりはありません。

したがって、この問題をもう少し詳しく調べることに興味がある場合は、JurafskyとMartinによる Speech and Language Processing の第20.7章を読むことを強くお勧めします。 Googleブックス から入手できます。 Wordの共起統計を使用してWordの類似性の尺度を定義する最新の分布方法の概要を非常によく示しています。ただし、これらを実装するライブラリを見つけることはできません。

32
nfelger

プリンストン大学の WordNet プロジェクトにチェックインすることをお勧めします。これに対する考えられるアプローチの1つは、最初に各単語をストップワードリストで実行することです(「a」、「to」、「the」などの「一般的な」単語を削除します)。次に、残りの各単語について各フレーズについて、WordNetに基づく距離測定を使用して、他のフレーズの各単語間のセマンティック「類似性」を計算できます。距離の測定値は、Word1からWord2に到達するためにWordNetで通過する必要があるアークの数のようなものです。

申し訳ありませんが、これはかなり高レベルです。私は明らかにこれを試したことがない。ちょっと考えてみてください。

7
Chuck Wooters

これに来たばかりの人には、SEMILAR- http://www.semanticsimilarity.org/ を見てみることをお勧めします。 Wordと文の類似性を計算するための多くの最新の研究方法を実装しています。 Javaで書かれています。

SEMILAR APIには、Wordnet、潜在セマンティック分析(LSA)、潜在ディリクレ割り当て(LDA)、BLEU、流星、点ごとの相互情報(PMI)、依存関係に基づく方法、二次割り当てに基づく最適化方法などに基づくさまざまな類似性方法が付属しています。類似性の方法はさまざまな粒度で機能します-WordからWord、文から文、またはより大きなテキスト。

5
kyrenia

このための潜在的なセマンティックインデックスを検討します。ベクトル空間の検索インデックスに似たものを作成できますが、意味的に関連する用語はより近く、つまり、それらの間の角度が小さくなります。もっと詳しく知りたい場合は、ここに投稿します。

5
jonfm

6年前の質問を掘り下げてすみませんが、今日この記事に出くわしたので、他の誰かが似たようなものを探している場合に備えて答えを投げます。

cortical.ioは、2つの表現のセマンティックな類似性を計算するプロセスを開発しました。これらの表現には、 Webサイトでのデモ があります。 機能へのアクセスを提供する無料のAPI を提供するため、独自のアルゴリズムを実装することなく、独自のアプリケーションで使用できます。

3
Hybrid System

1つの簡単な解決策は、nグラムの文字ベクトルのドット積を使用することです。これは、順序変更(多くの編集距離メトリックではない)に対して堅牢であり、ステミングに関する多くの問題を捕捉します。また、完全な意味理解のAI完全問題を防ぎます。

N-gramベクトルを計算するには、nの値(たとえば、3)を選択し、フレーズ内のすべての3ワードシーケンスをベクトルにハッシュします。ベクトルを単位長に正規化し、異なるベクトルのドット積を取得して類似性を検出します。

このアプローチは J。Mitchell and M. Lapata、 "Composition of Distributional Models of Semantics、" Cognitive Science、vol。34、no。8、pp。1388–1429、Nov. 2010.、DOIに記載されています。 10.1111/j.1551-6709.2010.01106.x

3
Jonathan Betz

SimService を試してください。これは、上位n個の類似語とフレーズの類似性を計算するためのサービスを提供します。

2
Lushan Han

各単語が文の中に現れる確率を考慮に入れた統計的手法を見てみましょう。これにより、「and」、「or」、「the」などの人気のある単語の重要度を低くし、規則的ではないため、より優れた差別化要因となる単語の重要性を高めることができます。たとえば、2つの文がある場合:

1)smith-watermanアルゴリズムは、2つの文字列間の類似性の尺度を提供します。 2)smith-watermanアルゴリズムを確認しましたが、プロジェクトに十分であることがわかりました。

2つの文が単語「smith-waterman」と単語「algorithms」(「and」、「or」などほど一般的ではない)を共有しているという事実により、2つの文が実際に同じトピックについて話している。

要約すると、以下をご覧になることをお勧めします。1)文字列の類似性の測定。 2)統計的方法;

お役に立てれば。

2
Gia

これには、あなたのアルゴリズムがあなたの話していることを実際に知っていることが必要です。単語を比較して同義語などを探すだけで、初歩的な形式で実行できますが、正確な結果を得るには何らかの知性が必要です。

1
Rik

http://mkusner.github.io/publications/WMD.pdf をご覧ください。このペーパーでは、セマンティックの類似性を明らかにしようとするWord Mover distanceと呼ばれるアルゴリズムについて説明します。 Word2vecが指示する類似性スコアに依存します。これをGoogleNews-vectors-negative300と統合すると、望ましい結果が得られます。

0
Anonymous