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

StackOverflow https://stackoverflow.com/questions/62328

  •  09-06-2019
  •  | 
  •  

質問

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

出力:意味的類似性の値 (0 から 1 の間)、またはこれら 2 つのフレーズが同じことについて話している確率

役に立ちましたか?

解決


この文書をチェックしてみてください。

意味ネットとコーパス統計に基づく文の類似性 (PDF)

説明されているアルゴリズムを実装しました。私たちのコンテキストは非常に一般的であり (事実上、任意の 2 つの英語の文)、取られたアプローチが遅すぎることがわかり、結果は有望ではあるものの十分ではありませんでした (または、相当な追加の努力がなければそうなる可能性が高い) ことがわかりました。

背景があまり説明されていないので、必ずしもこれをお勧めすることはできませんが、この論文を読むことは、問題に取り組む方法を理解するのに役立つかもしれません。

よろしく、

マット。

他のヒント

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

短い答え:

使用 WordNet::Similarity Perl パッケージ. 。Perl が選択した言語ではない場合は、次の点を確認してください。 WordNet プロジェクト ページ プリンストンで、またはグーグルでラッパーライブラリを探してください。

長い答え:

単語の類似性を判断することは複雑な問題であり、この分野では依然として研究が活発に行われています。類似性を計算するには、 意味 一言で。しかし、たとえば「椅子」の意味を表すものは何でしょうか?実際、何 「椅子」の正確な意味は?これについて長く真剣に考えると、心がねじれ、少し気が狂い、最終的には真実を見つけるために哲学または計算言語学の研究職に就くことになります。哲学者も言語学者も文字通り何千年もの間、答えを見つけようと試みてきましたが、終わりは見えません。

したがって、この問題をもう少し詳しく調べることに興味がある場合は、第 20.7 章を読むことを強くお勧めします。 音声および言語処理 Jurafsky と Martin 著。一部は以下から入手できます。 Google ブックス. 。これは、単語の共起統計を使用して単語の類似性の尺度を定義する、最先端の分布手法の概要を非常によく示しています。ただし、これらを実装しているライブラリはほとんど見つかりません。

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

かなり高度な話ですみません。もちろんこれを試したことはありません。ちょっと考えてみました。

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

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

SEMILAR APIには、Wordnet、潜在意味分析(LSA)、潜在ディリクレ割り当て(LDA)、BLEU、Meteor、Pointwise Mutual Information(PMI)、依存関係ベースのメソッド、二次代入に基づく最適化メソッドなどに基づくさまざまな類似性メソッドが付属しています。また、類似性メソッドは、単語から単語、文から文、またはより大きなテキストなど、さまざまな粒度で機能します。

6年前の質問を掘り起こして申し訳ありませんが、今日この投稿を見つけたばかりなので、他の誰かが同様のことを探している場合に備えて、回答を投稿します。

cortical.io は、2 つの式の意味上の類似性を計算するプロセスを開発しました。 ウェブサイトにデモがアップされている. 。彼らは、 機能へのアクセスを提供する無料の API, そのため、アルゴリズムを自分で実装することなく、独自のアプリケーションで使用できます。

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

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

このアプローチについては、次の記事で説明されています。J.ミッチェルとM.Lapata、「意味論の分布モデルにおける構成」、認知科学、vol.34、いいえ。8、pp.1388 ~ 1429 年 11 月2010.、DOI 10.1111/j.1551-6709.2010.01106.x

文内に各単語が出現する確率を考慮する統計手法を検討してみます。これにより、「and」、「or」、「the」などのよく使われる単語の重要性を下げ、あまり出現しない、つまりより優れた識別要素となる単語の重要性を高めることができます。たとえば、次の 2 つの文があるとします。

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

2 つの文が「smith-waterman」という単語と「algorithms」という単語 (「and」や「or」などほど一般的ではありません) を共有しているという事実から、2 つの文は確かにそうかもしれないと言えます。同じ話題について話していること。

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

お役に立てれば。

試す シムサービス, は、上位 n 位の類似単語およびフレーズ類似度を計算するサービスを提供します。

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

を見てみましょう http://mkusner.github.io/publications/WMD.pdf この論文では、意味上の類似性を明らかにしようとする Word Mover distance と呼ばれるアルゴリズムについて説明します。これは、word2vec によって指示される類似性スコアに依存します。これを GoogleNews-vectors-negative300 と統合すると、望ましい結果が得られます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top