14

この text =I love apples, kiwis, oranges and bananasと searchString = がkiwis and bananasあり、 Jaccard indexと言う類似性アルゴリズムがあるとします。との類似性が最も高い部分文字列を効率的に見つけるにはどうすればよいですか。textsearchString

基本的に、私が持っているキーワードのリストに一致するテキストの部分 (テキストにはエラー、スペルミス、余分な記号やスペースが含まれています) を見つけようとしています。

4

4 に答える 4

5

Jaccard インデックスは、以前のものをすべて再計算することなく新しいシンボルの値を更新できるため、「幸運な」類似度アルゴリズムです。textしたがって、結果のインデックス値の一連の差分として表示できます。その後、問題はhttps://en.wikipedia.org/wiki/Maximum_subarray_problemに減らすことができます。

2 番目の段落についてはどうですか。NLP のような調査を行っている場合は、さらに処理する前に、データをクリーンアップすることをお勧めします (可能な限り、余分な記号とスペースを削除します)。これは「スペル修正」として知られており、さまざまなアルゴリズムとライブラリがたくさんあります。適切なものを選択するには、ドメインに関する追加情報が必要です。

于 2016-09-16T13:11:59.513 に答える
1

ステミング距離 とレーベンシュタイン距離を使用する

これは実際のアルゴリズムです: https://wizsearch.wizsoft.com/index.php/demo/

このデモでは、すべての Wiki タイトルを検索します。「検索語を表示」オプションを試して、レーベンシュタイン距離とエラー修正アルゴリズムの動作を確認してください。

于 2016-09-23T09:34:47.317 に答える