私は文字列の類似性の問題、すなわち文字列と知識ベースに対してk-最近傍点を利用しようとしています。私は与えられた文字列に似たk個の文字列を出力したいと思います。このk-nearest neighbor lookupを効率的に行うためにkd-treesを利用する方法を説明するチュートリアルはありますか?文字列の長さは20文字を超えてはなりません。文字列の類似性を判断するためにkdツリーを使用するにはどうすればよいですか?
答えて
おそらく、私が1年ほど前に読んだ最もホットなブログ投稿の1つ:Levenstein Automata。その記事を見てください。アルゴリズムの説明だけでなく、それに続くコードも提供します。技術的にはkdツリーではありませんが、現実世界で遭遇する文字列照合アルゴリズムや辞書訂正アルゴリズムにはかなり関連しています。
また、BK-treesについての別のブログ記事があります。これは、文字列の誤った一致や誤字がある文字列検索の方がはるかに優れています。ここにはBK-treeのソースコードを含む別のリソースがあります(これは正確性や適切な実装を検証できません)。
+1。 –
Levenshtein Automataは印象的ですが、それを実装すると、あらかじめ計算されたバージョンが距離が大きくなるとすぐに(ノードの点で)爆発するとしか言えません。実際には、Trieで検索するのはすごく速いですが、オートマトンは4以上の距離で本当に大きくなるようになり始めます。 –
@Matthieu M.代わりに何をお勧めしますか? – wheaties
- 1. 類似行列を非類似行列に変換するにはどうすればよいですか?
- 2. アクションを使用してコントロールの可視性を判断するにはどうすればよいですか?
- 3. 類似の文字列をリストから削除するにはどうすればよいですか?
- 4. 複数のテキストブロック間の類似性を判断する
- 5. 文字列に少なくとも1文字の英字が含まれていると判断するにはどうすればよいですか?
- 6. 2つの画像が類似しているかどうかを判断するためのベストモデル
- 7. 類似の列を使用してジョインするにはどうすればよいですか?
- 8. リンクが訪問されたかどうかを判断するにはどうすればよいですか?
- 9. クラスのために類似のスロットを多数作成するにはどうすればよいですか?
- 10. 類似の文字列を見つけるために使用するデータ構造は何ですか?
- 11. 文字列リテラルで文字列補間を使用するにはどうすればよいですか?
- 12. のC# - 文字列の類似性に
- 13. 文字列のすべての文字を使用するにはどうすればよいですか?
- 14. .csvファイルまたは文字列を比較して類似性をどのように比較しますか?
- 15. iOS用のFacebookブックに類似したサイドバーを作成するにはどうすればよいですか?
- 16. はどのように判断する
- 17. 文字列類似性を使用したレコード結合
- 18. ファイルの種類が適切でないかどうかをきれいに判断するにはどうすればよいですか?
- 19. 文字列の整合性を判断する - PHP
- 20. 類似性のフレーズを比較するにはどうすればよいですか?
- 21. Cassandra 3でCQLを使用して、テーブルがコンパクトストレージを使用するかどうかを判断するにはどうすればよいですか?
- 22. 類似の列が多すぎるのを避けるにはどうすればよいですか?
- 23. 文字列の類似性を認識
- 24. Accord.NET 2つの画像を比較して類似性を判断する
- 25. このコードをスピードアップするために何ができますか(文字列類似性)?
- 26. 文字が文字列内にあるかどうかを判断するコードを書く方法は?
- 27. c#HTML属性で使用するために文字列をフォーマットするにはどうすればよいですか?
- 28. 文字列が回文かどうかを判断するためのRubyのプログラミング演習
- 29. Pythonでメソッドに使用する文字列をフォーマットするにはどうすればよいですか?
- 30. Javaで擬似ランダム "可読"文字列を生成するにはどうすればよいですか?
2つの文字列の間の類似性のメトリックは? [scipy.spatial.cKDtree](http://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.cKDTree.html)は、高速かつ安定しており、20dには適していますが、Lpメトリックだけです。 Levenshteinトランスデューサの場合は – denis