2017-03-08 10 views
1

次の問題の原因となるアルゴリズムや考え方はありますか?文字列の意味比較

私には、スニペット1、スニペット2の2つのスニペットがあります。次のように

スニペット1は、読み取ります

"犬が嵐の中に出て行くにはあまりにも怖かった"

を次のようにスニペット2の読み取り:

「犬を雨天に突き当たるために威嚇された "

これらのスニペットをある種のアルゴリズムや文字列理論システムを使って比較する方法はありますか?私はそれに取り組む前にこの問題を解決したシステムがあるかどうかを知りたい。

UPDATE: さて、より具体的な例を与えるために、私はチケットシステムのバグの数を減らすために望んでいたと言います。また、関連するチケットや類似のチケットがあるかどうかを調べるために何らかのスキャンを行いたいと思っていました。私はチケットのボディに基づいて問題を判断するための最良の体系的な方法を知りたかったのです。 Levenshtein Distanceアルゴリズムは、ウェットとドライの違いを知らないため、特にうまく機能しません。

+0

このリポジトリには、質問への単語埋め込みアプローチがあります。https://bitbucket.org/yunazzang/aiwiththebest_byor – Aaron

答えて

3

ある種のアルゴリズムを使用してこれらのスニペットを比較する方法はありますか、またはある種の文字列理論システムですか?私はそれに取り組む前にこの問題を解決したシステムがあるかどうかを知りたい。

まあ、これはNLPでは非常に有名な問題であり、より正確に言えば、あなたは、2つの文のsemanticsを比較しています。 gensim,Wordnet::Similarityなどの意味的に類似したドキュメントを検索する方法を提供するライブラリを調べることができます。

Here's another semantically similar SO question question.

1

ここでオプションはLevenshtein Distance 2の間の文字列である可能性があります。 これは、1つの文字列から別の文字列に移動するのに必要な操作数の尺度です。距離が大きくなればなるほど、2つの弦はあまり似ていません。

この種のアルゴリズムは、スペルチェックや音声認識に最適です。特定の文字列と期待される文字列は、通常、数語/文字だけ異なるためです。

たとえば、Levenshtein Distanceは32です(これはcalculatorを試してみてください)。これは、文字列があまり似ていないことを示しています(文字列は32の距離よりはるかに長いためです)。

このアルゴリズムは状況依存の比較には適していませんが、あなたの例は極端な場合です。 Levenshtein距離がより小さくなるという共通の言葉が存在する可能性は非常に高い。より最適な比較をしようとすると、このアルゴリズムを他のいくつかの方法(参考:What are some algorithms for comparing how similar two strings are?を参照)と併用することができます。