似たような質問がありますが、私のソースコードで使用できるC#ライブラリに関してはありません。C#用に書かれたファジー検索または文字列類似関数ライブラリはありますか?
ありがとうございました。
私は既にluceneを見てきましたが、類似の文字列を検索するのが簡単で、インデックス部分のオーバーヘッドがないようなものが必要です。
私がマークした答えには、2つの非常に簡単なアルゴリズムがあり、1つはLINQも使用しているので完璧です。
似たような質問がありますが、私のソースコードで使用できるC#ライブラリに関してはありません。C#用に書かれたファジー検索または文字列類似関数ライブラリはありますか?
ありがとうございました。
私は既にluceneを見てきましたが、類似の文字列を検索するのが簡単で、インデックス部分のオーバーヘッドがないようなものが必要です。
私がマークした答えには、2つの非常に簡単なアルゴリズムがあり、1つはLINQも使用しているので完璧です。
レーベンシュタイン距離の実装:
私は後者を使用する.NET 1.1プロジェクトを持っています。シンプルではありますが、私が必要とするものに完全に対応しています。私が覚えていることから、微調整が必要でしたが、それは明らかではありませんでした。
なぜ「LINQの使用」と言いますか?これらの実装のいずれもLinqを使用していません... –
実際にはこれらの実装は同じですが、後者はSubstringを使用しますが、毎回新しいStringインスタンスを作成するため、インデクサーを使用するよりもはるかに遅くなります。 –
確かに正しいです。私はLINQの愛があったことを誓ってもいいし、少なくともLINQyか何かを主張していることを誓っていたかもしれない。 –
Linux用Beagle Projectはc#(モノ)で書かれており、Googleデスクトップのような検索ツールです。このような文字列マッチングのために、そこにいくつかのコードがあるかもしれません。
正しくリコールすれば、データの検索と取得にはLuceneライブラリが使用されます。多分あなたのプロジェクトにも役立つかもしれません。
Lucene.netを見ましたか?これは.Netプラットフォームに対するJava Lucene検索エンジンAPIのポートです。そのライブラリは多くの検索機能を提供します。私は1年かそこら前に遊んだので、たくさんの経験に基づいて私の提案をしないでください。私は本のWindows Developer Power Toolsでそれを見て、テストドライブのためにそれを取った。 API documentationを見て、探しているファジー検索のようなものがあるかどうかを確認してください。
Luceneを使用して類似度を取得する方法を教えてください。 –
申し訳ありませんが、私はそれを専門的に使用していません。私の記事で言及したように、私はちょうど2007/2008の周りにそれを周りに遊んだ。 –
おそらく、[Lucene in Action、2ed](http://goo.gl/0skkw7)の本は、類似度をどのように得るかを教えてくれるかもしれません。 – AechoLiu
このcode project paperは、Levenshtein distanceを使用した文字列類似機能を持っています。
二つの文字列の類似度に値を代入する次のレーベンシュタイン距離アルゴリズムがある(良く、差実際)上に構築するために使用することができる:http://www.merriampark.com/ldcsharp.htm
私は類似の文字列を検索するために "C#の三項サーチツリー辞書"(http://www.codeproject.com/KB/recipes/tst.aspx)を使用しました。
よろしく、パトリシオ
あなたはまた、サムの文字列メトリックhttp://sourceforge.net/projects/simmetrics/files/題し非常に印象的な図書館で見ることができます。これには多数のアルゴリズムが含まれています。
この回答のリンクは私に403エラーを与えています。 [Wayback Machine](http://web.archive.org/web/http://staffwww.dcs.shef.ac.uk/people/[email protected]/stringmetrics)を使用することができます。 .html)代わりに。 –
私は上記のライブラリの.NETバージョンは[ここ](http://sourceforge.net/projects/simmetrics/files/)だと思います。私はそれをVisual Studio 2010に変換し、NUnitの参照を更新した後、ビルドします。また、87回のテストに合格します。 – dalenewman
私はこのライブラリの.netライブラリバージョンを[SimMetrics.Net on GitHub](https://github.com/StefH/SimMetrics.Net)で見つけました。 @ dalenewmanの提案と同じでしょうか? – Spiralis
彼らは自分の発明ではありませんが、彼らは私のお気に入りで、私はちょうどそれらについてブログや自分を公開しましたFour Functions for Finding Fuzzy String Matches in C# Extensionsというブログポストで、ダイス係数、Levenshtein Distance、Longest Common Subsequence、Double Metaphoneのバージョンを調整しました。
これはこれを参照するものです。 – Base33
は私をエスケープします。 OPは、SOが徹底的にサポートしている機能がライブラリにあるかどうかを尋ねています。 – 010110110101