7

ここに問題があります - 私は数千の小さなテキストスニペットをいくつかの単語からいくつかの文章まで持っています - 最大のスニペットはディスク上に約2kです。私はそれぞれをそれぞれ比較することができ、ユーザーに関連する情報を表示できるように関連性係数を計算したいと考えています。2つの本文の「関連性」を見出す良い方法は何ですか?

これを行うにはどうすればよいですか?これを行うための既知のアルゴリズムはありますか?いいえ、GPLのソリューションなどありますか?

すべてを事前に計算できるので、これをリアルタイムで実行する必要はありません。私はランタイムより良い結果を得ることにもっと関心があります。

私はちょうど私が自分のことに行く前に、スタックオーバーフローのコミュニティに尋ねると思った。これまでに良い解決策を見つけた人々がそこにいなければなりません。

+1

非常に未定義の質問です。どのような基準で、2つのテキストがお互いに関連していると考えますか?一般的なトピックですか?繰り返されるフレーズ?長さ?複雑?手紙の頻度? –

答えて

2

です。そして、この質問はLatent Semantic Analysisです。

Soundexには、「音が似ている」という言葉が含まれています。

+0

ありがとうございます。潜在的意味分析は有望に見えますが、私はそれを読み、それを実装する方法を見なければなりません。 – Matt

2

私はそれを使ったことがないが、あなたはLevenshtein distance

+0

多くのシナリオでうまく機能します –

+0

Levenshteinは意味の違いではなく編集距離を与えます。 – Bob

1

ジェフに見たいと思うかもしれませんが、ここで右側に記載されている関連の質問を見つけるために、ポッドキャストにこのような何かについて話しました。 (in podcast 32

"the"と "this"などのようにすべてのcommon wordsを削除するという大きなヒントが1つありました。これにより、より意味のある言葉があなたに残されます。ここ

と同様の質問Is there an algorithm that tells the semantic similarity of two phrases

0

このbookが関連する可能性があります。

編集:ここではsemantic relatednesssemantic similarityにこれらの記事が役に立つかもしれ関連SO question

+0

ありがとうございます。情報検索は一般的な話題であり、おそらくこの本には良い情報があります。 – Matt

0

これは、妥当な大文字のテキストでは非常に簡単ですが、小文字のテキストでは難しくなります。

私はかつてこのようにそれをやった、それはかなりうまく働いた:

  • フィルターすべての「一般」の言葉(のような、、、...など、中には)(約10〜30をフィルタ単語の%)
  • 残りの単語の頻度を数え、最も頻繁な単語の先頭xを保存します。これらはあなたのトピックです。
  • 追加の手順として、2/3/4の後続単語のグループを作成し、他のテキストのグループと比較することができます。私はプランジズムの尺度として使った。
0

参照マニングとラガバンのコースを約MinHashingと同様の項目を探し、そしてC#(?) versionを指摘しています。私はその技術がウルマンとモトワニの研究から来ていると信じています。

0

ふりがなアルゴリズム

記事、Beyond SoundEx - Functions for Fuzzy Searching in MS SQL Serverは、SQL ServerにSimMetricsライブラリをインストールして使用する方法を示しています。このライブラリを使用すると、文字列間の相対的な類似性を見つけることができ、多数のアルゴリズムが含まれます。

ほとんどの場合、名前に一致するようにJaro Winklerを使用しました。ここで私はSOの名前を照合することについて尋ねたところです:Matching records based on Person Name

Levenshtein Distanceに基づくいくつかのアルゴリズムは、SimMetricライブラリでも利用でき、おそらくあなたのアプリケーションに役立ちます。

関連する問題