問題タブ [fuzzy-comparison]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
4874 参照

algorithm - あいまい一致番号

私は文字列の比較のために Double Metaphone と Caverphone2 を使用してきましたが、名前や住所などでうまく機能します (Caverphone2 が私には最適です)。ただし、電話番号、IP アドレス、クレジット カード番号などの数値に到達すると、あまりにも多くの誤検知が発生します。

そこで、 LuhnVerhoeffのアルゴリズムを調べましたが、それらは本質的に私が望むものを説明していますが、完全ではありません。それらは検証には優れているように見えますが、あいまい一致用に構築されているようには見えません。ファジー文字列アルゴリズムと同様のエンコードと比較の目的で、1 桁のエラーと隣接する 2 桁を含む転置エラーを検出できる Luhn と Verhoeff のように動作するものはありますか?

数値をエンコードしてから、それを他の 100,000 の数値と比較して、ほぼ同一の一致を見つけたいと思います。したがって、7041234 のようなものは転記エラーの可能性として 7041324 と一致しますが、4213704 のようなものは一致しません。

0 投票する
2 に答える
169 参照

sql - テキスト内の単語検索で、最も一致するバリアントを含むテキストを見つけます

入力している単語に最も似ている単語を含むテーブルから最適な行を見つける方法を見つけたいです。何か案が?(私はOCRを使用していて、まったく同じではない単語を見つけて、「特定の」という単語を「特定の」と読むことがあります)

0 投票する
1 に答える
1441 参照

java - H2 データベースのあいまい一致?

H2 データベースを使用して文字列のあいまい一致を実装する簡単な方法があるかどうか疑問に思っていました。私はデータベースに名前のリストを持っており、3文字が入力された順序で名前にある3文字を使用してそれらを検索できるようにしたいと考えています.

それが可能かどうかはわかりませんが、JavaではなくSQLを介してデータベースで実行できれば、生活がずっと楽になります

0 投票する
2 に答える
613 参照

python - Pythonを使用したExcelワークシートの列見出しの解析

次のようなExcelスプレッドシートがあります。

ABCとJKLを含む行を見つけようとしています。渡す文字列が正確な列見出しと一致しない場合があることに注意してください。

私はxlrd次のようなことを使用して実行しています:

'ABC'はスプレッドシートの'ABCCol'と完全には一致しないため。失敗します。setOfheadingsmyに完全一致が含まれている場合に機能します。

設定された交差点で正規表現の一致を行う方法についてのアイデアはありますか?

0 投票する
1 に答える
624 参照

algorithm - OCR: 最後の N 件の結果に基づいて最適な文字列を選択します (OCR の適応フィルター)

さまざまなエンジンからの出力が与えられた場合に最適な OCR 結果を決定することに関するいくつかの質問を見てきましたが、その答えは通常、「最適なエンジンを選択する」です。ただし、一時的なオクルージョンや一時的な失敗の可能性があるテキスト画像のいくつかのフレームをキャプチャしたいと考えています。私はpython-tesseractでtesseract-ocrを使用しています。

最後の N フレームの OCR 出力を考慮して、最良の結果を判断したいと思います (簡単にするために、行ごとに)。

たとえば、N=3 の場合、メディアン フィルタリングを使用できます。

3人中2人が同じ場合は多数決なのでABCDとなります。ただし、文字列のサイズが異なると、それほど簡単ではありません。特定のサイズ M を期待する場合 (価格テーブルをスキャンする場合、行は通常 XX.XX です)、M より大きい文字列に対して常にペナルティを課すことができます。

数値の場合、メディアン フィルタリング (コンピューター ビジョンでの単純なバックグラウンド減算) や最小平均二乗適応フィルタリングが非常にうまく機能します。似たような文字の問題もありlます1。フォントによっては非常に似ている場合があります。

また、各弦間の弦間距離を使用することも考えていました。たとえば、他の文字列との距離の合計が最小の文字列を選択します。

以前にこの種の問題に対処した人はいますか? この種の問題について知っておくべき既知のアルゴリズムはありますか?

0 投票する
0 に答える
836 参照

solr - 長さが 4 未満の短い単語に対する Solr ファジー クエリ

次のクエリを使用して、名前フィールドのあいまい検索を試みています。

q=(name:'smiht'~0.25) AND (name:'will'~0.25) 返されたレコードのようなクエリを実行すると、、、のようなWill Smith名前William D Hamilton DCが付けられますWilliam I Smith JR

以下のようにクエリの最後に「dc」などの単語を追加すると、結果が返されません。「William D Hamilton DC」という名前のすべてのレコードが表示されることを期待しています。solrファジークエリは短い単語では機能しませんか? 誰か助けてくれませんか?

q=(name:'smiht'~0.25) AND (name:'will'~0.25) AND (name:'dc'~0.25)

フィールド名のフィールドタイプは以下の通りです。

0 投票する
1 に答える
1698 参照

c# - あいまい文字列の比較 - 短縮名の検出

計算言語学/あいまい文字列マッチングについて質問するのはこれで 2 回目ですが、今回はステミングについてではありません。

私の最初の問題は、ファジー文字列マッチングを使用してデータベースの重複を排除することでした。私はすでにそれを達成しました。ここで、文字列が別の文字列の省略形であるかどうかを検出する必要があります。例えば:

  • JOHN ADRIAN FREEMAN WELTER は JAF Welter または JAFWelter と同等です
  • MICROSOFT OFFICE は MS OFFICE と同じです
  • BUILDING は BLDG に等しい

私は現在、最初の問題に SimMetrics の .Net バージョンを使用しています。それで、私の問題を解決できる方法が SimMetrics にありますか? ない場合、これを解決する最善の方法は何ですか?

SimMetrics に実装されているメトリックは次のとおりです。

  • ハミング距離
  • レーベンシュタイン距離
  • Needleman-Wunch 距離またはセラーズ アルゴリズム
  • スミス・ウォーターマン距離
  • 後藤距離またはスミス・ウォーターマン・後藤距離
  • ブロック距離 or L1 距離 or シティブロック距離
  • モンジュ・エルカン距離
  • ジャロ距離メトリック
  • ジャロ・ウィンクラー
  • SoundEx 距離測定
  • マッチング係数
  • サイコロの係数
  • Jaccard Similarity または Jaccard Coefficient または Tanimoto 係数
  • オーバーラップ係数
  • ユークリッド距離または L2 距離
  • コサイン類似度
  • 変分距離
  • ヘリンジャー距離またはバタチャリヤ距離
  • 情報半径 (Jensen-Shannon ダイバージェンス)
  • 調和平均
  • スキュー発散
  • 混乱確率
  • タウ
  • Fellegi and Sunters (SFS) メトリック
  • TFIDF または TF/IDF
  • ファストA
  • ブラストP
  • 最大一致
  • qグラム
  • ウッコネン アルゴリズム

私はこれらすべてのアルゴリズムに精通しているわけではありません。ここで既に使用したのは、Leveshtein Distance、Needleman-Wunch、Jaro-Winkler、SoundEx、および TF/IDF です。そして、これらのアルゴリズムは、この短縮名の問題を解決するには不十分だと思います

0 投票する
5 に答える
87238 参照

python - あいまい文字列の比較

私が完成させようとしているのは、ファイルを読み込み、各文を元の文に従って比較するプログラムです。元の文と完全に一致する文は 1 のスコアを受け取り、完全に反対の文は 0 を受け取ります。その他のあいまいな文はすべて、1 から 0 の間のグレードを受け取ります。

Python 3 でこれを完了するには、どの操作を使用すればよいかわかりません。

テキスト 1 がオリジナルで、先行する他の文字列が比較対象であるサンプル テキストを含めました。

テキスト: サンプル

テキスト 1: 暗く嵐の夜でした。私は一人で赤い椅子に座っていました。私は3匹の猫を飼っていたので、完全に一人ではありませんでした。

テキスト 20: 暗く嵐の夜でした。私は真っ赤な椅子に一人で座っていました。私は 3 匹の猫を飼っていたので、完全に一人ではありませんでした // 高得点を獲得する必要がありますが、1 点ではありません

テキスト 21: 暗くて嵐のような夜でした。私は真っ赤なカテドラに一人で座っていました。私は3匹の猫を飼っていたので、完全に一人ではありませんでした//テキスト20よりも低いスコアにする必要があります

テキスト 22: 私は真っ赤な大聖堂に一人で座っていました。私は3匹の猫を飼っていたので、完全に一人ではありませんでした。暗くて嵐のような夜でした。// スコアはテキスト 21 より低くなければなりませんが、0 ではありません

テキスト 24: 暗い嵐の夜でした。私は一人ではありませんでした。私は赤い椅子に座っていませんでした。私は3匹の猫を飼っていました。// スコアは 0 でなければなりません!

0 投票する
2 に答える
251 参照

image - 画像が90%黒かどうかを見分ける方法は?

私はこれまで画像処理を行ったことがありません。

これらの非常に暗い(ほぼ黒の)画像を破棄するには、カメラからの多くのjpeg画像を調べる必要があります。

使用できる無料のライブラリ(.NET)はありますか?ありがとう。

0 投票する
3 に答える
272 参照

python - 文字のスクランブリングを伴うレーベンシュタイン距離?

文字列内の文字がスクランブルされている場合にも機能する文字列比較メトリック ala Levenshtein を探しています。そのような指標を知っている人はいますか?また、そのようなメトリックを計算できる Python モジュールがあれば素晴らしいと思います。ありがとう!