たとえば、英語の単語から始めて、 "light"や "tight"などの文字列を1回高速に検索できる構造体/アルゴリズムがあります。単語 "right"をクエリとして使用しますか?つまり、クエリ文字列にLevenshteinの距離が小さい文字列を取得したいとします。Levenshtein距離で近い文字列を検索するためのデータ構造
答えて
私は、O(1)時間にインデックスを作成してアクセスできる類似性のキャッシュを事前に構築するのが最速の方法だと考えています。このトリックは、一般的なスペルミスがキャッシュに追加されるのを発見することです。かなり大きくなる可能性があります。
私は、Googleが幅広い統計クエリ検索データを使って同様のことをすると思います。
長さnとmの文字列の場合、Levenshtein距離を計算するとO(nm)
なので、すべてのLevenshtein距離を計算する単純なアプローチは非常に高価です。
しかし、Levenshteinアルゴリズムを視覚化すると、基本的に編集距離でn * mの表が塗りつぶされます。しかし、同じ数文字(接頭辞)で始まる単語の場合、Levenshteinテーブルの最初の数行は同じになります。 (もちろんクエリ文字列を修正してください)
trie (also called prefix tree)を使用することをお勧めします。クエリ文字列を読み取り、Levenshtein行のトライを作成します。その後、簡単にトラバースしてクエリ文字列に近い文字列を見つけることができます。
(これはは、新しいクエリ文字列のための新しいトライを構築する必要があることを意味します。私はすべてのペア距離に対しても同様に魅力的な構造があるとは思わない。)私は思っ
私は最近、素晴らしいpythonの実装でこれについての記事を見ました。見つけたらリンクを追加します。 編集:Here it is, on Steve Hanov's blog.
BK-treeデータ構造がここで適切かもしれません。これは、「クエリーワードから編集距離k以内のすべての単語は何ですか?」という形式のクエリーを効率的にサポートするように設計されています。その性能保証は合理的に優れており、実装するのが難しくありません。
希望すると便利です。
- 1. Levenshteinフレーズの距離/文字列マッチングアルゴリズム
- 2. 文字列を検索するためのより速いデータ構造
- 3. Levenshteinリストの距離
- 4. PHPで文字列をlevenshteinの距離に一致させる方法
- 5. ランダムワード検索のためのデータ構造
- 6. 検索距離
- 7. Android&ファジーマッチング、nグラム、Levenshtein距離
- 8. パフォーマンスの問題、大きな文字列の編集距離LCP対Levenshtein対SIFT
- 9. 複数の列にわたるlevenshtein距離のRテキスト・マイニング
- 10. 言語特有のためのDamerau-Levenshtein距離
- 11. 検索距離は
- 12. 方法 "Xより小さいLevenshtein距離ですべての文字列を取得する"
- 13. はJSON構造内の文字列を返す、JSONの検索
- 14. 文字列内の特定の構造を検索します。
- 15. 正規表現のLevenshtein距離
- 16. データ構造の検索レコード
- 17. Azureの検索距離可変の距離でフィルタリング
- 18. は、私はこのようになりますトライデータ構造を構築したレーベンシュタイン距離の検索
- 19. 構造体配列の文字列を検索しています
- 20. セットから最も近い要素を効率的に検索するためのデータ構造
- 21. Java: - 近接検索による文字列検索
- 22. Levenshtein /任意の配列の距離を編集
- 23. neo4j編集距離検索
- 24. 最近の回文との距離
- 25. Restrictメソッドの検索文字列構文
- 26. 検索情報のための最速データ構造体C++
- 27. PythonのLevenshtein距離は編集距離として1だけ与えます
- 28. Pythonで私の列の行のLevenshtein率/距離を計算するには?
- 29. Matlab:行列内の最も近いTRUE値までの距離を求める
- 30. Swift 3でデータをフィルタリングするために文字列内の文字列を検索する方法
実際にはスペルミスの場合は良いアプローチですが、Levenshtein距離の理論的応用の場合はそれほど有用ではありません。 – us2012
正確にはどういう意味ですか?それが私が想像しているものであれば、メモリの使用は実用的ではないでしょう。 – MaiaVictor
@ us2012が目的です。 – MaiaVictor