問題タブ [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.
csv - 文字列の一致に FuzzyWuzzy と Pandas を使用する場合の TypeError
Python 3 で FuzzyWuzzy ライブラリを使用しているときにエラーが発生します。Pandas ライブラリも使用して CSV ファイルを操作しています。
CSV ファイルに次のデータがあります。
CorporationName 列と CorporationName2 列は実際には同じです。それぞれ不動産関連の事業者名が入っています。これらのビジネスの名前は、各列に複数回表示されますが、ご覧のとおり、わずかに異なる形で表示される場合があります。
私の目標は、CorporationName の各文字列を取得し、それを CorporationName2 のすべての文字列と比較することです。次に、FuzzyWuzzy が CorporationName2 から最も関連性の高い 5 つの文字列 (つまり、その名前の可能なバリエーション) を返すようにします。これは、私が受けた大規模な文字列マッチング タスクの最初のステップにすぎません。
これはトレースバック エラーです。
正直に言うと、ここで何が起こっているのかわかりません。インターネットでもあまり見つけられませんでした。
あなたが提供できるどんな助けも大歓迎です。
ありがとう!
python - あいまいなモジュールが機能しない
次のコードの 2 番目の部分を実行しようとすると、このあいまいなモジュールに問題が発生します。
次のようなエラーが発生します。
最後の部分を実行しようとしたときの2番目のもの:
次のようなエラーが発生します。
これらの 2 つを除いて、他のすべてのコードは正常に機能しています。これを修正するにはどうすればよいですか? 現在、ubuntu 14.04LTS と Spyder を使用して Python を実行しています。
編集:levenshtein、fuzzywuzzy、およびdifflibモジュールを再インストールしようとしました。それでも同じ問題が発生します。ubuntuを使っているからでしょうか?デュアル ブート Windows 10 を使用して実行しようとすると、動作するからです。
python - fuzzywuzzy を使用して、一致した結果の列をデータ フレームに作成する
FuzzyWuzzy ライブラリを使用してすべての結果をデータ フレーム列に格納するという課題に直面しています (ループが必要になるのではないかと思いますか?)あなたの誰かが解決策を手伝ってくれるかどうか見てください!とても参考になります!
私がやろうとしていることの例として、ここに 2 つのデータ フレーム テーブルがあります…</p>
マスターテーブル
ルックアップテーブル
基本的に、マスター テーブルの値のリスト全体に対してルックアップ テーブルの値を使用し、結果を 3 番目のテーブルに格納しようとしています。
これが私が最終的な出力をどのように見せたいかです...
私は Fuzzy Wuzzy の基本を知っています。
出力= [('チキンサラダ', 90), ('プレーンサラダ', 90)]
素晴らしいですが、マスター テーブルのすべての値に対してすべてのルックアップ値を実行して、体系的な方法でそれを行うにはどうすればよいでしょうか?
私を読んでくれてありがとう!
python - パンダで適用を使用して多くの(あいまいな)文字列比較を並列化する方法は?
次の問題があります
次のような文を含むデータフレームマスターがあります
Master のすべての行について、別の Dataframeスレーブを検索して、fuzzywuzzy
. 2 つのデータフレーム間で一致する文が少し異なる可能性があるため (余分な文字など)、fuzzywuzzy を使用します。
たとえば、スレーブは
これは、完全に機能し、素晴らしく、コンパクトな作業例です:)
100 万ドルの問題は、上記の適用コードを並列化できるかどうかです。
結局のところ、すべてmaster
の行がすべての行と比較されますslave
(スレーブは小さなデータセットであり、データの多くのコピーを RAM に保持できます)。
複数の比較を実行できなかった理由がわかりません (つまり、同時に複数の行を処理します)。
問題: それを行う方法がわかりません。または、それが可能かどうかもわかりません。
どんな助けでも大歓迎です!
python - Python でのファジー文字列マッチングによる 2 つの大きな csv ファイルのマッチング
600,000 個の個人の名前 (フル ネーム) を、8700 万件を超える観測 (フル ネーム) を持つ別のデータベースとほぼ一致させようとしています。
fuzzywuzzyライブラリでの最初の試みは遅すぎたため、はるかに高速なモジュールfuzzysetを使用することにしました。すべてのデータセットをメモリにロードするのに十分強力なコンピューターがあると仮定すると、964 個の観測値のテスト ファイルを使用して、50,000 個の観測値と照合するために次のことを行っています。
はるかに小さいデータセット (50,000 の観測に対して 964 の観測が一致) では、時間は39 秒でした。
ただし、このメソッドを完全なデータセットで実行したい場合、これは遅すぎます。
実行時間を改善する方法を知っている人はいますか? 私はすでにfuzzysetモジュールの Cython バージョンをインポートしているので、Cython は可能性がないと思います
どうもありがとう、
エイドリアン
python - データフレーム列全体にあいまい一致を適用し、結果を新しい列に保存します
それぞれ異なる行数を持つ 2 つのデータ フレームがあります。以下は、各データセットからのいくつかの行です
と
を使って並べて結合しましたcombined_data = pandas.concat([df1, df2], axis = 1)
。私の次の目標は、モジュールからいくつかの異なる一致するコマンドを使用してdf1['Company']
、下の各文字列を下の各文字列と比較し、最も一致する値とその名前を返すことです。それを新しい列に保存したい。たとえば、とを実行すると、最適な一致がのスコアであったことが返され、これが の新しい列に保存されます。結果は次のようになりますdf2['FDA Company']
fuzzy wuzzy
fuzz.ratio
fuzz.token_sort_ratio
LACKY SHEET METAL
df1['Company']
df2['FDA Company']
LACKY SHEET METAL
100
combined data
やってみた
しかし、列の長さが異なるため、エラーが発生しました。
私は困惑しています。どうすればこれを達成できますか?