問題タブ [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 投票する
2 に答える
909 参照

arrays - perl文字列::配列の概算

私はString::Aboutを使用して、他のリストから2項目の配列に最も類似した一致を見つけています。amatch()その機能は文書化されていませんが、配列を配列と比較するために使用できることを知って、私はうれしく驚きました。私はそれを行うために自分の関数を書く準備ができていました。要素の順序が重要ではないことを見て、私はさらに驚きました。しかし、問題なくamatch()動作しているにもかかわらず、私はと苦労していadist()ます。次のプログラムを検討してください。

そして、これが出力するものです:

ですから、正しい答えを選んでいるように見えますが(無視['giraffe', 'elephant']して['hawk', 'shark'])、距離を教えてくれません。最終的な目標は、距離で試合を並べ替え、最も似ている試合を選ぶこと@matchstrです。実際にはamatch()思ったとおりに機能していますか、それとも単純すぎる入力を使用しているだけですか?なぜ機能しないのamatch()ですか?

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

python - Python の大量のテキスト内の文字列のあいまい一致 (url)

会社名のリストがあり、会社名に言及している URL のリストがあります。

最終的な目標は、URL を調べて、URL に記載されている企業のうちどれだけが私のリストに含まれているかを調べることです。

URL の例: http://www.dmx.com/about/our-clients

各 URL の構造は異なるため、正規表現検索を行って会社名ごとに個別の文字列を作成する良い方法がありません。

URLの内容全体に対して、リストから各企業を検索するforループを構築したいと考えています。しかし、レーベンシュタインは、短い文字列と大きなテキスト本体よりも、2 つの小さな文字列の方が優れているようです。

この初心者はどこを見るべきですか?

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

groovy - あいまい文字列一致

いくつかの画像で光学式文字認識を実行した後、おおよそのテキストが得られます。多くの場合、認識は大きくありません。たとえば、実際のテキスト「DATE」は「DHTE」または「0HTE」になります。基本的に、各行のデータを識別して抽出する必要があるため、完全な認識は必要ありません。日付変更線を識別するのに十分です。レーベンシュタイン編集距離を計算しようとしましたが、残念ながら、これは DATE と TIME に同様の値を与える傾向があります。現時点では、代わりに正規表現を使用してデータ パターンを一致させることができるかどうかを調査しようとしています。

マッチングプロセスを改善する方法/アルゴリズムはありますか? 幸いなことに、私の単語セットはそれほど大きくありません。

(私は ocr に tesseract を使用し、アルゴリズムに groovy/java を使用しています)

0 投票する
4 に答える
14833 参照

r - ほぼ重複するレコードを見つけるためのテクニック

私は、何年にもわたって、わずかに異なる名前で多くの重複レコードを取得してきたデータベースをクリーンアップしようとしています。たとえば、companysテーブルには、「SomeCompanyLimited」や「SOMECOMPANYLTD!」などの名前があります。

私の計画は、問題のあるテーブルをRにエクスポートし、名前を小文字に変換し、一般的な同義語( "limited"-> "ltd"など)を置き換え、アルファベット以外の文字を取り除き、それを使用agrepして類似したものを確認することでした。

私の最初の問題は、agrep一致する単一のパターンのみを受け入れ、他の会社と一致するようにすべての会社名をループするのが遅いことです。(クリーニングするテーブルの中には、数万、場合によっては数十万の名前をチェックするものがあります。)

tmパッケージ(JSSの記事)を簡単に見てきましたが、非常に強力なようですが、名前だけでなく、テキストの大きな塊を分析することを目的としています。

関連する質問がいくつかあります。

  1. パッケージはtmこの種のタスクに適していますか?

  2. より速い代替手段はありagrepますか?(上記の関数は、逸話的に遅いレーベンシュタイン編集距離を使用します。)

  3. と以外に、Rには他の適切なツールがagrepありtmますか?

  4. これをRで実行する必要がありますか、それともこの種のことをデータベースで直接実行する必要がありますか?(これはAccessデータベースなので、可能であれば触れないようにします。)

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

c# - あいまいテキスト マッチング

特定のテキストをデータベース内のテキストと照合する必要があります。

これの例は次のとおりです。

与えられたテキスト: Acura MDX Technology Package

データベース化されたアイテム:

Tech Pkg Technology Pkg with Navigation Tech Pkg with Entertainment Pkg Base FWD w/Technology Package/18" Wheel FWD

これは 100% 完璧である必要はありません。特別な注意を払う必要があるライブラリはありますか?

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

ruby-on-rails - Ruby/Rails でのあいまい比較

Rails でのファジー比較に適したオプションを探していました。

基本的に、データベース内のいくつかの文字列と比較したい一連の文字列があり、該当する場合は最も近い文字列を取得したいと考えています。この特定のケースでは、文字の順序やスペルミスを検出することにはあまり関心がありませんが、無関係な単語 (余分な情報、句読点、the、and、it などの単語) を無視して、ベストマッチ。これらの文字列は通常、2 ~ 7 語の長さです。

それを行うための最良の宝石/方法は何ですか? 私は amatch (http://flori.github.com/amatch/doc/index.html) を見てきましたが、他に何があるか疑問に思っていました。

ありがとう!

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

python - TREを使用してPythonで正規表現を近似する:奇妙なUnicodeの動作

スペルミスのある入力を照合するために、python でTREライブラリを使用しようとしています。
utf-8 でエンコードされた文字列を適切に処理することが重要です。

例:
ドイツの首都の名前はベルリンですが、人々が「Bärlin」と書く場合、発音からは同じです。

これまでのところ動作していますが、非 ASCII 文字が検出された文字列の 1 番目または 2 番目の位置にある場合、範囲も検出された文字列自体も正しくありません。

出力

'.*Berlin'正規表現の場合は正常に機能するわけではありませんが、正規表現の場合は'Berlin'

動作していませんが、

期待どおりに動作します。

エンコーディングに何か問題がありますか? あなたは何かトリックを知っていますか?

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

elasticsearch - elasticsearch ファジー マッチング max_expansions & min_similarity

私のプロジェクトでは、主にスペルミスや同じ名前の異なるスペルを見つけるためにあいまい一致を使用しています。エラスティック検索のあいまい一致がどのように機能し、タイトルに記載されている 2 つのパラメーターがどのように使用されるかを正確に理解する必要があります。

私が理解しているように、min_similarityは、クエリされた文字列がデータベース内の文字列と一致する割合です。この値がどのように計算されるかについての正確な説明が見つかりませんでした。

私が理解しているmax_expansionsは、検索を実行するレーベンシュタイン距離です。これが実際にレーベンシュタイン距離である場合、それは私にとって理想的な解決策でした. とにかく、それは機能していません。たとえば、「Samvel」という単語があります

ドキュメントには、私が実際に理解していないことが書かれています:

ですから、これらのパラメータが検索結果にどのように影響するかを正確に説明してください。

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

ruby-on-rails - 会社名を正規化する方法

私たちは、すべてのバリエーションで来る雇用者のユーザー生成名を持っています。たとえば、ユーザーは次のように入力またはインポートしました。

Google
Google、Inc.
Google Inc. Google
Inc.

これをデータベース検索すると、まるで別の会社のように見えます。各雇用主を「正規化された」名前にマッピングするようにいくつかの変更を加えましたが、合計で70,000になると、手作業で行うのが難しくなります。

既存のエントリを正規化する方法、およびすべての着信名に対してもそれを維持する方法について誰かが提案を持っていますか?

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

sql-server - スペルミスやその他の情報の変更がある顧客間の繰り返しトランザクションを見つけるための手法は?

これは SQL Server 固有の質問ではありません。ただし、ここには tSQL 固有のオプションがある場合があります。

私は顧客の詳細をたくさん持っています。彼らの多くは、サービスをキャンセルして辞任します。彼らはまったく新しいアカウントを取得します。そして、私たちのデータ検証はせいぜい大ざっぱです。そのため、電子メール アドレスやその他のデータのタイプミスがよくあります。

質問は 2 つの部分に分かれています。

初め; 氏名、メールアドレス、クレジット カードの下 4 桁、郵便番号、電話番号などの情報があります。データセットを調べて共通の繰り返しのプールを探すことができるアルゴリズム/プロセスはありますか?メールは「類似」しており、郵便番号も同じでした。リピーターでしたか (人間によるマッチング スキルに基づく)?

2番; データ セット間の類似性を表現するにはどうすればよいでしょうか。つまり、5 つのフィールドのうち 3 つが一致する場合に、一致と呼ばれるアイテムが存在するでしょうか。すべての異なるデータポイント間のある種の類似性指標? 名前にある程度soundexを使用できることは知っています...メールアドレスについてはよくわかりません。

だから、私は簡単な解決策と汚い解決策の両方に興味があります (今夜、分析をまとめます。しかし、この問題に取り組む「正しい」方法にも非常に興味があります)。尊敬する。=)