web-dev-qa-db-ja.com

C#用に記述されたファジー検索または文字列類似関数ライブラリはありますか?

同様の質問がありますが、ソースコードで使用できるC#ライブラリに関するものではありません。

ご協力ありがとうございます。

すでにルセンを見てきましたが、同様の文字列を検索し、インデックス作成部分のオーバーヘッドなしで、より簡単に検索できるものが必要です。

私がマークした答えには、2つの非常に簡単なアルゴリズムがあり、1つはLINQも使用するため、完璧です。

63
Luca Molteni

レーベンシュタイン距離の実装:

後者を使用する.NET 1.1プロジェクトがあります。それは単純ですが、私が必要とするものには完璧に機能します。私が覚えていることから少し調整する必要がありましたが、それは明らかではありませんでした。

31
George Mauer

samの文字列メトリック http://sourceforge.net/projects/simmetrics/files/ というタイトルの非常に印象的なライブラリも見ることができます。これには、アルゴリズムのホストが含まれます。

  • ハミング距離
  • レーベンシュタイン距離
  • Needleman-Wunch distanceまたはセラーズアルゴリズム
  • スミス-ウォーターマン距離
  • Gotoh DistanceまたはSmith-Waterman-Gotoh distance
  • ブロック距離またはL1距離または都市ブロック距離
  • モンジュエルカン距離
  • ヤロ距離メトリック
  • ヤロ・ウィンクラー
  • SoundEx距離メトリック
  • マッチング係数
  • サイコロの係数
  • ジャカード類似度またはジャカード係数またはタニモト係数
  • 重複係数
  • ユークリッド距離またはL2距離
  • コサイン類似度
  • 変分距離
  • Hellinger距離またはBhattacharyya距離
  • 情報の半径(ジェンセンシャノン発散)
  • 調和平均
  • スキュー発散
  • 混乱の確率
  • タウ
  • Fellegi and Sunters(SFS)メトリック
  • TFIDFまたはTF/IDF
  • FastA
  • BlastP
  • 最大一致
  • q-gram
  • Ukkonenアルゴリズム
28
Zaffiro

それらは私自身の発明ではありませんが、私のお気に入りであり、私はそれらについてブログに書き、Dice Coefficient、Levenshtein Distance、Longest Common Subsequence、Double Metaphoneの独自の調整バージョンを Four Functions C#拡張でファジー文字列の一致を見つけるための

13
Tyler Jensen

Lucene.net をご覧になりましたか?これは.NetプラットフォームへのJava Lucene検索エンジンAPIのポートです。そのライブラリは多くの検索機能を提供します。1年ほど前に遊んでいたので、豊富な経験に基づいた提案を受け取り、本Windows Developer Power Toolsでそれを見て、試乗しました。 API documentation 探しているファジー検索のようなものを提供するかどうかを確認します。

2
Jason Jackson

この コードプロジェクトペーパー には、 レーベンシュタイン距離 を使用した文字列類似度関数があります。

1
Ed Schwehm

次のLevenshtein Distance Algorithmがあり、2つの文字列の類似度(実際には違い)に値を割り当てます。これは、構築に使用できます。 http://www.merriampark.com/ldcsharp.htm

1
benefactual

「C#の3項検索ツリー辞書」( http://www.codeproject.com/KB/recipes/tst.aspx )を使用して、類似の文字列を検索しました。

よろしく、パトリシオ

0
patriciovidal

Linux用の Beagle Project はc#(モノ)で記述されており、google-desktopに似た検索ツールです。この種の文字列照合のためのコードが含まれている場合があります。

正しく思い出せば、データの検索と取得に Lucene ライブラリを使用します。それはあなたのプロジェクトにも役立つかもしれません。

0
Isak Savo