問題タブ [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.
java - 順序付けされていない文字列のあいまい一致
言葉遣いが完全にランダムな一連の文字列があり、キーワードに最適な一致を見つける必要があります。トリプレットとレーベンシュタインのアルゴリズムを使用してみましたが、まだ不規則な結果が得られます。文字列を最初の文字で並べ替えてから、レーベンシュタインのアルゴリズムを実行して、より正確な結果を取得できるようにしましたが、役に立ちませんでした。
私のキーワードはおそらくそれぞれ 1 ~ 3 語ですが、一致させようとしているターゲット文字列は 10 ~ 20 語を超えることがあります。キーワードを正しい文字列に効果的に一致させるために使用できる他のアルゴリズムはありますか?
これを使ってみたトリプレットアプローチ:
ここで、A と B は、次のようなトリプレット (単語の 3 文字、1 によるインデックス付けによって生成される) の配列です。
A ∩ B は A と B の同様のトリプレットです。この方法は有効に思えましたが、多くの不規則な結果が得られました。
このあいまい一致を改善する方法はありますか?
algorithm - Fuzzy Matching on Date-Type values
I don't have a real question but I'm more like seeking for creative input for a problem.
I want to compare two (most likely unequal) Date values and calculate the ratio of their similarity. So for example if I'd compare 08.01.2013
and 10.01.2013
I would get a relative high value but between 08.01.2013
and 17.04.1998
it would be really low.
But now I'm not sure how I should exactly calculate the similarity. First I was thinking about turning the Date values into Strings and then use the EditDistance on them (number of single char operations to transform one String into another). This seems like a good idea for some cases and I'll definitly implement it but I also need an appropriate calculation for something like 31.01.2013
and 02.02.2013
image - matlab 画像比較
現在の画像と比較するために使用できる画像のデータベースを設定しようとしています (したがって、現在の画像が比較対象の画像と等しいか、ほぼ等しい場合、一致します)
ただし、このプロジェクトを開始するには、Matlab を使用して 2 つの画像を比較して、プロセスがどのように機能するかを確認したいと思います。
image1.jpg と image2.jpg を比較して、それらが互いにどれほど密接に関連しているかを確認する方法を知っている人はいますか? したがって、基本的に image1.jpg と image1.jpg を比較する場合、関係は 100% になるはずですが、2 つの異なる画像を比較すると、非常に密接な関係が得られる可能性があります。
それが意味をなすことを願っています!!!
ありがとう、
.net - 小数を比較する最良の方法は何ですか?
小数を比較する最良の方法は何ですか?
と のような 2 つの値がある3.45
と3.44
します。それらを確実に比較するための最良の方法は何ですか?
私はすべての数値を345
andとして保存することを考え344
ていたので、整数のみを比較し、小数点のあるユーザーフォーマットの数値のみを表示します。
別の解決策は、カスタム関数を使用して差をテストし、差が0.01
数値よりも小さい場合は等しいはずです。
他に考えられる解決策 (より良い解決策) は何ですか?
similarity - あいまい一致を使用して文字列を集約する
エラーログがあり、各タイプのエラーの数を取得したいとします。エラー メッセージごとにグループ化して単純なカウントを既に実行しましたが、多くのメッセージにはコンテキスト固有の情報が含まれています。つまり、同じバグが原因であるにもかかわらず、メッセージ テキストで単純にグループ化することはできません。
イタリック体のセグメントがエラーのインスタンスごとに異なるいくつかの例:
- ページ/primate/gorillaでユーザー188a9e12-6797-4d9b-8adf-4588b2435326 の結果を取得できませんでした
- ページ/primate/monkeyでユーザー08c610d2-27d2-4f97-bf60-d5b3010e8dd6 の結果を取得できませんでした
ファジーロジックを使用して、そのようなメッセージをすべてグループ化したいと思います。レーベンシュタイン距離アルゴリズムがこのタイプの処理に価値があることは理解していますが、文字列の長さに対して重み付けされていないため、生の距離は価値がないと思います (1000 文字の文字列では、30 の距離はそれほど重要ではありません。 100の)。
したがって、私の目的は、メッセージのリストを繰り返し処理し、ある種のあいまいに一致したカウントを取得することです。あいまいに一致したメッセージごとにある種の一貫したキーを生成するという副次的な問題があるかもしれませんか? これについてどうすればいいですか?
mysql - SQL とあいまい比較
People (名前、姓、住所、SSN など) のテーブルがあるとします。
指定された人物 A に「非常に似ている」すべての行を検索したいと考えています。A とテーブル People のすべての行のある種のファジー論理比較を実装したいと考えています。複数の列で個別に機能するいくつかのファジー推論ルールがあります (例: 名前に関する 3 つのファジー ルール、姓に関する 2 つのルール、住所に関する 5 つのルール)。
問題は、次の 2 つのアプローチのどちらが優れているか、またその理由は何ですか?
すべてのファジー ルールをストアド プロシージャとして実装し、1 つの重い SELECT ステートメントを使用して、A に「非常に似ている」すべての行を返します。このアプローチには、soundex、sim メトリックなどの使用が含まれる場合があります。
A に "かなり似ている" 精度の低い結果を返す 1 つ以上の単純な SELECT ステートメントを実装し、A を (データベース外の) 返されたすべての行とあいまい比較して、"非常に似た" 行を取得します。そのため、あいまい比較は私のお気に入りのプログラミング言語で実装されます。
Table People には最大 50 万行が必要で、このようなクエリを 1 日に約 500 ~ 1000 回行いたいと考えています。私は MySQL を使用しています (ただし、これはまだ考慮されていません)。
algorithm - 堅牢で非音声的で集中的でないあいまい部分文字列一致
「コカ・コーラ」と「コカ・コーラ」など、2 つの文字列をあいまいに一致させるコードを作成している場合、標準的な方法がいくつかあります。
- レーベンシュタイン編集距離の比較 ( http://en.wikipedia.org/wiki/Levenshtein_distance )
- 各文字列の音声ベースのハッシュ (例: Double Metaphone) を計算し、比較します。
ただし、部分文字列に対してこれを行う標準的で効率的な方法に関する情報が見つかりません。たとえば、入力「tell me about coca-kola」(「干し草の山」) の場合、会社「Coca-Cola」(「針」) を取り上げたいとします。
何百万もの針 (DB 内の会社) があり、リソースを大量に消費する可能性があるため、変更されたレーベンシュタイン アルゴリズムを使用することはできません。干し草の山にある各単語の音声ハッシュを計算し、各針と比較できる可能性がありますが、音声表現にも多くの制限があり、音声を使用しないこの問題を処理するための十分に確立された標準があるかどうか疑問に思っていますか?
よくスケーリングするシンプルで理解しやすいアルゴリズムを探しています。Bitapアルゴリズムなど、回答が示唆された場所に同様の質問がすでに投稿されていますが、Levenshteinのように、これはスケーリングされていないようです。
python - パンダのあいまいマージ/一致名列、重複あり
donors
現在、 用と用の 2 つのデータフレームがありfundraisers
ます。fundraisers
寄付も行っているかどうかを確認しようとしています。もしそうなら、その情報の一部を私のfundraiser
データセットにコピーします (寄付者の名前、電子メール、最初の寄付)。私のデータの問題は次のとおりです。
- 名前と電子メールで一致させる必要がありますが、ユーザーの名前が少し異なる場合があります (例: 'Kat' と 'Kathy')。
donors
との名前が重複していますfundraisers
:- 2a) 寄付者の場合、最初の寄付日だけを気にするので、一意の名前と電子メールの組み合わせを取得できます
- 2b) 募金活動では、両方の行を保持し、日付などのデータを失わないようにする必要があります。
私が今持っているサンプルコード:
したがって、これにより、各寄付者による最初の寄付が残ります (名前と電子メールがまったく同じ人は誰でも同じ人物であると仮定します)。
fundraisers
理想的には、データセットを次のようにしたいと考えています。
私はこのスレッドに従ってみました: is it possible to do fuzzy match merge with python pandas? しかし、範囲外のエラーを取得し続けます(募金活動で名前が重複するのは気に入らないと思います):(これらのデータセットを一致/マージする方法はありますか?
forループでそれを行う(これは機能しますが、非常に遅く、より良い方法が必要だと感じています)
コード: