12

Python モジュール fuzzywuzzy の関数 process.extract() がどのように機能するかを理解しようとしていますか?

私は主にここで fuzzywuzzy パッケージについて読んでいます: http://chairnerd.seatgeek.com/fuzzywuzzy-fuzzy-string-matching-in-python/は、あいまい一致をしようとするときのさまざまなシナリオを説明する素晴らしい投稿です。彼らは、部分的な文字列の類似性に関するいくつかのシナリオについて議論しました。

1) 故障
2) トークンソート
3) トークンセット

そして、この投稿から: 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 つの文字列が時々あるからです。

たとえば、現在のサンプル データ セットでは、to-be-match-string

「総補充リードタイム(平日)」

に一致します

"PLANNING_TIME_FENCE_CODE"、"BUILD_IN_WIP_FLAG"

でもしない(正解)

"FULL_LEAD_TIME"

正解は、照合文字列と同じように「リードタイム」がありますが、照合文字列とはまったく一致しません。なぜ?そしてどういうわけか、一致する文字列のように見えない他のものが一致するようになります。なぜ?私は今、まったく無知です。

4

3 に答える 3