2016-12-15 6 views
3

私は、pythonモジュールfuzzywuzzyの関数process.extract()がどのように機能するのか理解しようとしていますか?python fuzzywuzzyのprocess.extract():どのように動作しますか?

私はファジーマッチングをしようとするときにさまざまなシナリオを説明する素晴らしい投稿であるここでは、ファジーファジーパッケージについては主に読む:http://chairnerd.seatgeek.com/fuzzywuzzy-fuzzy-string-matching-in-python/です。この記事から、)注文
2の整理
3)トークンを設定し

そしてトークンを

1):彼らは部分的な文字列の類似性のために、いくつかのシナリオを検討しhttps://pathindependence.wordpress.com/2015/10/31/tutorial-fuzzywuzzy-string-matching-in-python-improving-merge-accuracy-across-data-products-and-naming-conventions/私はどのように学びましたfuzzywuzzyのprocess.extract()関数を使用して、基本的に先頭のk個のマッチを選択します。

process.extract()関数の動作に関する情報があまりにも多く見つかりません。

は選択肢のリストや辞書にベストマッチを見つけ、マッチを含むタプルの リストを返し、それがスコアです:ここで私は自分のGitHubページ(https://github.com/seatgeek/fuzzywuzzy/blob/master/fuzzywuzzy/process.py)で見つかった定義/情報は、この機能することを、です。 辞書が使用されている場合は、各一致のキーも返します。

しかし、それはどのように最高のものを見つけるのかに関する詳細は述べていませんか?私はこれを見つけるために上記の3つのシナリオをすべて取ったのですか?

私が尋ねる理由は、私がこの機能を使用したときに、非常に類似しているが一致しない2つの文字列があることがあるからです。被マッチ文字列

「(稼働日で)総補充リードタイム」

のためにそれが

に一致している私の現在のサンプルデータセットにおける例えば

"PLANNING_TIME_FENCE_CODE"、 "BUILD_IN_WIP_FLAG"

ではなく、正しい答えはありません、それが一致していないだけに、被一致文字列のような「リードタイム」を持っているにもかかわらず、(正解)

「FULL_LEAD_TIME」

へマッチする文字列にはまったく一致しません。どうして?とにかく、一致する文字列のように見えない他の文字は一致します。どうして?今私は非常に無知です。

答えて

1

fuzzywuzzyの比較で4つの比率があります。

  • base_ratio:2つの文字列のレベンズ間距離。
  • partial_ratio:最も類似した部分文字列の比率。
  • token_sort_ratio:比較する前にトークンをソートするシーケンスの類似性の測定。
  • token_set_ratio:各文字列のすべての英数字トークンを検索します。配給の

詳細は比較のためのデフォルトprocess.extract()使用Partial_ratioことで、ここでhttp://chairnerd.seatgeek.com/fuzzywuzzy-fuzzy-string-matching-in-python/

を見つけることができますが、あなたはまた、process.extract()

例の3番目のパラメータでそれを上書きすることができます。

print(fuzz.partial_ratio('Total replenishment lead time (in workdays)', 'Lead_time_planning')) 
query = 'Total replenishment lead time (in workdays)' 
choices = ['PLANNING_TIME_FENCE_CODE', 'BUILD_IN_WIP_FLAG','Lead_time_planning'] 
print(process.extract(query, choices)) 

結果は次のようになります。

50 
[('Lead_time_planning', 50), ('PLANNING_TIME_FENCE_CODE', 38), ('BUILD_IN_WIP_FLAG', 26)] 

それはあなたがいつでも上書きすることができpartial_ratioを使用して、デフォルトである示しています。

関連する問題