問題タブ [fuzzywuzzy]

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 投票する
0 に答える
382 参照

python - あいまい一致ステートメントを使用して apply() のパフォーマンスを向上させるにはどうすればよいですか

fuzzywuzzy モジュールを利用して 2 つの pandas データフレームを「マージ」する muzz という関数を作成しました。うまく機能しますが、大きなフレームではパフォーマンスがかなり悪くなります。抽出/スコアリングを行う私の apply() を見て、それをスピードアップできるアイデアがあれば教えてください。

生データのフレームを作成する

どの利回り

次に、調べたい良いデータを表すフレーム

どの利回り

そして今、マズ機能。編集:choices= right[match_col_name] 行を追加し、Brenbarn の提案ごとに適用で選択を使用しました。また、Brenbarn の提案に従って、適用せずに extractOne() を使用していくつかのテストを実行しましたが、それがボトルネックのようです。ファジーマッチングを行うためのより高速な方法はありますか?

マズを呼ぶ

どの利回り

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

python - Python を使用した大きなデータセットのファジー ロジック

私のチームは、2 つの大規模なデータセットでファジー論理アルゴリズムを実行することに行き詰まっています。1 つ目 (サブセット) は約 180K 行で、2 つ目 (スーパーセット) で照合する必要がある人の名前、住所、メールが含まれています。スーパーセットには 250 万件のレコードが含まれています。どちらも同じ構造を持ち、データはすでに消去されています。つまり、アドレスが解析され、名前が正規化されています。

  • 連絡先 ID int、
  • フルネーム varchar(150),
  • アドレス varchar(100),
  • メール varchar(100)

目標は、サブセットの行の値をスーパーセットの対応する値に一致させることです。その結果、出力はサブセットとスーパーセット、および各フィールド (トークン) の対応する類似度パーセンテージを結合します。

  • 連絡先ID、
  • ルックアップ連絡先ID、
  • フルネーム、
  • LookupFullName、
  • FullName_Similarity、
  • 住所、
  • ルックアップアドレス、
  • Address_Similarity、
  • Eメール、
  • ルックアップメール、
  • Email_Similarity

最初にコードを単純化してテストするために、文字列を連結しました。コードが非常に小さなスーパーセットで機能することがわかっています。ただし、レコードの数を増やすと、スタックします。さまざまなアルゴリズム、Levenshtein、FuzzyWuzzy などを試しましたが、役に立ちませんでした。私の意見では、問題は Python が行ごとに実行することです。しかし、よくわかりません。ストリーミングを使用して、Hadoop クラスターで実行することも試みました。ただし、肯定的な結果は得られていません。

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

python - あいまい比較 2 列

検索用語 (数字とテキスト) を含む CSV ファイルを持っており、これを他の用語 (数字とテキスト) のリストと比較して、一致または潜在的な一致があるかどうかを判断します。次に、すべての結果を新しい CSV に書き込んで手動で確認したいと考えています。fuzzywuzzy プラグインを使用して「スコア」を作成し、用語間の一致度を判断しています。理想的には、比率でフィルター処理できるようにします。

私の現在のコードは、最初のファイルの 1 つの行ではなく、ファイルの行を 1 対 1 で比較し、2 番目のファイルのすべての行と比較します。これは私が必要とするものです。

file2 のすべての行に対して、file1 の各行のあいまい検索を実行するにはどうすればよいですか?

以下は、上記のコードのよりクリーンなバージョンですが、まだ問題があります。コードでエラーが発生する

IndexError: リスト インデックスが範囲外です

範囲内のリストとコードの動作を取得する方法はありますか?

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

string - Python fuzzywuzz エラー文字列またはバッファが期待する

fuzzywuzzy を使用して、会社名の csv でほぼ一致するものを見つけています。いくつかの有用な近接一致を見つけることを期待して、手動で一致した文字列と一致しない文字列を比較していますが、fuzzywuzzy 内で文字列またはバッファ エラーが発生しています。私のコードは次のとおりです。

これにより、次のエラーが発生します。

これは、エンコーディングを指定してパンダにインポートした場合の影響と関係があります。これを防止するために追加しましUnicodeDecodeErrorsたが、このエラーを引き起こすというノックオン効果がありました。オブジェクトの使用を強制しようとしましたが、うまくいきstr(sssf)ません。

そのため、エラーの原因となっている行を特定しました#N/A,,,,,,(下に貼り付けたコードの 29 行目)。エラーの原因は だと思いましたが#、不思議なAことに、ファイルが削除されたときにファイルが機能するため、問題の原因は char ではありません。私にとって奇妙なのは、2行下の文字列N/Aがうまく解析されることですが、#シンボルを削除すると、フィールドが下のフィールドと同じように見えても、29行目は解析されません。

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

python - Pythonでのマージ/結合中に発生したエラーについて大きなデータフレームを検査します

これがここでの適切な質問であることを願っています。そうでない場合は、お知らせください。すぐに削除します。

質問:

Python を使用して、結合中に発生するエラーについて大規模なデータセットを (視覚的に) 検査するにはどうすればよいですか?

バックグラウンド:

私は、1 つの大きなデータセットを形成するために結合するいくつかの大規模な (ただし、「大きな」ということはわかりません) データセットを使用しています。この新しいセットのサイズは ~2.5G であるため、ほとんどのスプレッドシート プログラムには適合しません。少なくとも、私が試したもの (MS Excel、OpenOffice) には適合しません。

最終的なデータセットを作成するプロセスでは、ファジー マッチング ( 経由fuzzywuzzy) が使用されます。マッチングの結果を調べて、エラーが発生していないかどうかを確認したいと考えています。

今のところ、セット全体をデータフレームにインポートしようとしましたpandas。この DF には 64 の列があるため、結果として表示される情報のようなことを単純に行うとdf.head()、明らかにすべての列が表示されるわけではありません。.head()したがって、複数の呼び出しを繰り返すことは除外しました。

データフレームの特定の側面を視覚化することについて同様の質問があります here。基礎となる構造や型について何も視覚化する必要がないため、私の質問は異なると思います。エラーがあると思われる領域を視覚的に検査したいだけです。

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

python - 2 つの文字列を比較するためにどの fuzz 関数をいつ使用するか

私はfuzzywuzzyPythonで学んでいます。

fuzz.ratiofuzz.partial_ratiofuzz.token_sort_ratioおよびの概念を理解していfuzz.token_set_ratioます。私の質問は、どの機能をいつ使用するかです。

  • 最初に 2 つの文字列の長さを確認し、類似していない場合は除外しfuzz.partial_ratioますか?
  • 2 つの文字列の長さが似ている場合は、 fuzz.token_sort_ratio? を使用します。
  • 常に使用する必要がありますfuzz.token_set_ratioか?

SeatGeek が使用する基準を知っている人はいますか?

fuzzywuzzy住所の比較に使用することを考えて、不動産のウェブサイトを構築しようとしています。

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

python - Python ファジー マッチング (FuzzyWuzzy) - ベスト マッチのみを保持

それぞれが1列の名前を含む2つのcsvファイルをあいまい一致させようとしていますが、それらは似ていますが同じではありません。

これまでの私のコードは次のとおりです。

出力は次のとおりです。

スクリプトは正常に動作します。出力は期待どおりです。しかし、私が探しているのはベストマッチだけです。

したがって、列 2 の最大値に基づいて、列 1 の重複した名前をどうにかして削除する必要があります。これはかなり簡単なはずですが、理解できないようです。どんな助けでも大歓迎です。

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

python - fuzzywuzzy を使用して提案リストを作成する

データベースから提案エンジンを構築していました。以下に示すように、ユーザー入力文字列を既存のデータベースと一致させるために fuzzywuzzy モジュールを使用しています。

そのため、else 部分にいくつかの入力が必要です。データベースから必要な正確な単語を正確に選択することができません。

この提案を改善するには?他にどのようなライブラリを使用できますか? 同じことを行うための他の最良の(記憶と時間の意味で最良の)可能な方法は何ですか?前もって感謝します!

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

python - 文字列列の2つのデータセットのPython Pandas fuzzywuzzy「結合」

fuzzywuzzy を使用して文字列列の 2 つのデータセットを「結合」するこの質問の回答に従っています。

トラブルシューティングに問題があるというエラーが表示されます。

  • エラー メッセージは、キー値の問題を示唆しているようです。それがnull値に関するものであると仮定して、それらを除外しましたが、それでも同じエラーメッセージが表示されます。

  • 文字列は、アポストロフィ、ハイフン、ピリオドなどを含む可能性のある会社名です。fuzzywuzzy がそれらを処理できると想定しているため、最初にそれらを削除しません。

これをトラブルシューティングするための次のステップとして、何を探す必要があるかについての洞察はありますか?

これは、Pandas を使用した Excel ファイルからのデータのインポートです。

そして、これはデータセットへの一致と一致の連結を行う他の質問の一部です:

エラーは次のとおりです。

データフレーム列を追加するために編集:

davidshinnの回答に基づいて、一致の修正されたリビジョンを追加するように編集されました: