問題タブ [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.
python - あいまい一致ステートメントを使用して apply() のパフォーマンスを向上させるにはどうすればよいですか
fuzzywuzzy モジュールを利用して 2 つの pandas データフレームを「マージ」する muzz という関数を作成しました。うまく機能しますが、大きなフレームではパフォーマンスがかなり悪くなります。抽出/スコアリングを行う私の apply() を見て、それをスピードアップできるアイデアがあれば教えてください。
生データのフレームを作成する
どの利回り
次に、調べたい良いデータを表すフレーム
どの利回り
そして今、マズ機能。編集:choices= right[match_col_name] 行を追加し、Brenbarn の提案ごとに適用で選択を使用しました。また、Brenbarn の提案に従って、適用せずに extractOne() を使用していくつかのテストを実行しましたが、それがボトルネックのようです。ファジーマッチングを行うためのより高速な方法はありますか?
マズを呼ぶ
どの利回り
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 クラスターで実行することも試みました。ただし、肯定的な結果は得られていません。
python - あいまい比較 2 列
検索用語 (数字とテキスト) を含む CSV ファイルを持っており、これを他の用語 (数字とテキスト) のリストと比較して、一致または潜在的な一致があるかどうかを判断します。次に、すべての結果を新しい CSV に書き込んで手動で確認したいと考えています。fuzzywuzzy プラグインを使用して「スコア」を作成し、用語間の一致度を判断しています。理想的には、比率でフィルター処理できるようにします。
私の現在のコードは、最初のファイルの 1 つの行ではなく、ファイルの行を 1 対 1 で比較し、2 番目のファイルのすべての行と比較します。これは私が必要とするものです。
file2 のすべての行に対して、file1 の各行のあいまい検索を実行するにはどうすればよいですか?
以下は、上記のコードのよりクリーンなバージョンですが、まだ問題があります。コードでエラーが発生する
IndexError: リスト インデックスが範囲外です
範囲内のリストとコードの動作を取得する方法はありますか?
string - Python fuzzywuzz エラー文字列またはバッファが期待する
fuzzywuzzy を使用して、会社名の csv でほぼ一致するものを見つけています。いくつかの有用な近接一致を見つけることを期待して、手動で一致した文字列と一致しない文字列を比較していますが、fuzzywuzzy 内で文字列またはバッファ エラーが発生しています。私のコードは次のとおりです。
これにより、次のエラーが発生します。
これは、エンコーディングを指定してパンダにインポートした場合の影響と関係があります。これを防止するために追加しましUnicodeDecodeErrors
たが、このエラーを引き起こすというノックオン効果がありました。オブジェクトの使用を強制しようとしましたが、うまくいきstr(sssf)
ません。
そのため、エラーの原因となっている行を特定しました#N/A,,,,,,
(下に貼り付けたコードの 29 行目)。エラーの原因は だと思いましたが#
、不思議なA
ことに、ファイルが削除されたときにファイルが機能するため、問題の原因は char ではありません。私にとって奇妙なのは、2行下の文字列N/A
がうまく解析されることですが、#
シンボルを削除すると、フィールドが下のフィールドと同じように見えても、29行目は解析されません。
python - Pythonでのマージ/結合中に発生したエラーについて大きなデータフレームを検査します
これがここでの適切な質問であることを願っています。そうでない場合は、お知らせください。すぐに削除します。
質問:
Python を使用して、結合中に発生するエラーについて大規模なデータセットを (視覚的に) 検査するにはどうすればよいですか?
バックグラウンド:
私は、1 つの大きなデータセットを形成するために結合するいくつかの大規模な (ただし、「大きな」ということはわかりません) データセットを使用しています。この新しいセットのサイズは ~2.5G であるため、ほとんどのスプレッドシート プログラムには適合しません。少なくとも、私が試したもの (MS Excel、OpenOffice) には適合しません。
最終的なデータセットを作成するプロセスでは、ファジー マッチング ( 経由fuzzywuzzy
) が使用されます。マッチングの結果を調べて、エラーが発生していないかどうかを確認したいと考えています。
今のところ、セット全体をデータフレームにインポートしようとしましたpandas
。この DF には 64 の列があるため、結果として表示される情報のようなことを単純に行うとdf.head()
、明らかにすべての列が表示されるわけではありません。.head()
したがって、複数の呼び出しを繰り返すことは除外しました。
データフレームの特定の側面を視覚化することについて同様の質問があります here。基礎となる構造や型について何も視覚化する必要がないため、私の質問は異なると思います。エラーがあると思われる領域を視覚的に検査したいだけです。
python - 2 つの文字列を比較するためにどの fuzz 関数をいつ使用するか
私はfuzzywuzzy
Pythonで学んでいます。
fuzz.ratio
、fuzz.partial_ratio
、fuzz.token_sort_ratio
およびの概念を理解していfuzz.token_set_ratio
ます。私の質問は、どの機能をいつ使用するかです。
- 最初に 2 つの文字列の長さを確認し、類似していない場合は除外し
fuzz.partial_ratio
ますか? - 2 つの文字列の長さが似ている場合は、
fuzz.token_sort_ratio
? を使用します。 - 常に使用する必要があります
fuzz.token_set_ratio
か?
SeatGeek が使用する基準を知っている人はいますか?
fuzzywuzzy
住所の比較に使用することを考えて、不動産のウェブサイトを構築しようとしています。
python - Python ファジー マッチング (FuzzyWuzzy) - ベスト マッチのみを保持
それぞれが1列の名前を含む2つのcsvファイルをあいまい一致させようとしていますが、それらは似ていますが同じではありません。
これまでの私のコードは次のとおりです。
出力は次のとおりです。
スクリプトは正常に動作します。出力は期待どおりです。しかし、私が探しているのはベストマッチだけです。
したがって、列 2 の最大値に基づいて、列 1 の重複した名前をどうにかして削除する必要があります。これはかなり簡単なはずですが、理解できないようです。どんな助けでも大歓迎です。
python - fuzzywuzzy を使用して提案リストを作成する
データベースから提案エンジンを構築していました。以下に示すように、ユーザー入力文字列を既存のデータベースと一致させるために fuzzywuzzy モジュールを使用しています。
そのため、else 部分にいくつかの入力が必要です。データベースから必要な正確な単語を正確に選択することができません。
この提案を改善するには?他にどのようなライブラリを使用できますか? 同じことを行うための他の最良の(記憶と時間の意味で最良の)可能な方法は何ですか?前もって感謝します!
python - 文字列列の2つのデータセットのPython Pandas fuzzywuzzy「結合」
fuzzywuzzy を使用して文字列列の 2 つのデータセットを「結合」するこの質問の回答に従っています。
トラブルシューティングに問題があるというエラーが表示されます。
エラー メッセージは、キー値の問題を示唆しているようです。それがnull値に関するものであると仮定して、それらを除外しましたが、それでも同じエラーメッセージが表示されます。
文字列は、アポストロフィ、ハイフン、ピリオドなどを含む可能性のある会社名です。fuzzywuzzy がそれらを処理できると想定しているため、最初にそれらを削除しません。
これをトラブルシューティングするための次のステップとして、何を探す必要があるかについての洞察はありますか?
これは、Pandas を使用した Excel ファイルからのデータのインポートです。
そして、これはデータセットへの一致と一致の連結を行う他の質問の一部です:
エラーは次のとおりです。
データフレーム列を追加するために編集:
davidshinnの回答に基づいて、一致の修正されたリビジョンを追加するように編集されました: