欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python?Fuzzywuzzy庫(kù)基本函數(shù)及模糊字符串匹配應(yīng)用實(shí)戰(zhàn)

 更新時(shí)間:2023年12月28日 09:37:34   作者:濤哥聊Python  
fuzzywuzzy?是一個(gè)用于模糊字符串匹配的?Python?庫(kù),它基于編輯距離算法,提供了多個(gè)函數(shù)來(lái)比較字符串之間的相似性,在實(shí)際開(kāi)發(fā)中,字符串匹配是一項(xiàng)常見(jiàn)但具有挑戰(zhàn)性的任務(wù),用戶可能犯拼寫錯(cuò)誤,使用縮寫或者輸入同義詞,因此,我們需要一種方法來(lái)處理這些情況

安裝和基本用法

1 安裝 fuzzywuzzy

pip install fuzzywuzzy

2 基本用法

from fuzzywuzzy import fuzz

str1 = "Python fuzzywuzzy"
str2 = "Python fuzzywuzzy library"

# 使用 fuzz.ratio 進(jìn)行基本比較
ratio = fuzz.ratio(str1, str2)
print(f"Similarity Ratio: {ratio}%")

模糊匹配算法

1 Levenshtein 距離

Levenshtein 距離是一種衡量?jī)蓚€(gè)字符串相似程度的算法,它通過(guò)插入、刪除和替換字符的操作次數(shù)來(lái)計(jì)算相似性。

2 模糊匹配的原理和優(yōu)勢(shì)

模糊匹配允許我們?cè)谝欢ǔ潭壬先萑梯斎胱址g的差異,提高了匹配的靈活性。

基本函數(shù)介紹

fuzz.ratio函數(shù)詳解

fuzz.ratio 是 fuzzywuzzy 庫(kù)中用于進(jìn)行基于 Levenshtein 距離的簡(jiǎn)單字符串比較的函數(shù)。這個(gè)函數(shù)返回一個(gè)表示相似程度的百分比,范圍從0到100,值越高表示字符串越相似。

參數(shù)

s1, s2: 要比較的兩個(gè)字符串。

示例代碼

from fuzzywuzzy import fuzz

str1 = "Python fuzzywuzzy"
str2 = "Python fuzzywuzzy library"

# 使用 fuzz.ratio 進(jìn)行基本比較
ratio = fuzz.ratio(str1, str2)
print(f"Similarity Ratio: {ratio}%")

解釋

fuzz.ratio 使用了 Levenshtein 距離算法,該算法測(cè)量了通過(guò)插入、刪除和替換字符來(lái)將一個(gè)字符串轉(zhuǎn)換為另一個(gè)字符串的操作次數(shù)。

返回的百分比表示兩個(gè)字符串之間的相似性,值越高表示相似性越大。

在示例中,str1 和 str2 的相似性為多少百分比。

應(yīng)用場(chǎng)景

  • 用于快速比較兩個(gè)字符串的相似性,特別是在拼寫錯(cuò)誤的情況下。
  • 可用于拼寫檢查,判斷用戶輸入是否接近正確的拼寫。

注意事項(xiàng)

fuzz.ratio 是一種簡(jiǎn)單但有效的比較方法,適用于基本的字符串相似性比較。

在處理更復(fù)雜的場(chǎng)景時(shí),可以考慮使用其他函數(shù),如 fuzz.partial_ratio、fuzz.token_sort_ratio 和 fuzz.token_set_ratio,以滿足不同需求。

fuzz.partial_ratio函數(shù)詳解

fuzz.partial_ratio 是 fuzzywuzzy 庫(kù)中用于部分字符串匹配的函數(shù)。相比于 fuzz.ratiofuzz.partial_ratio 更容忍字符串中的部分相似性,適用于模糊搜索場(chǎng)景。

參數(shù)

  • s1, s2: 要比較的兩個(gè)字符串。

示例代碼

from fuzzywuzzy import fuzz

query = "Python fuzzywuzzy"
data = ["Python fuzzywuzzy library", "Python data science", "Java programming"]

# 使用 fuzz.partial_ratio 進(jìn)行部分字符串匹配
results = [(item, fuzz.partial_ratio(query, item)) for item in data]
sorted_results = sorted(results, key=lambda x: x[1], reverse=True)

print("Fuzzy Search Results:")
for result, similarity in sorted_results:
    print(f"{result} - Similarity: {similarity}%")

解釋

  • fuzz.partial_ratio 允許部分字符串匹配,通過(guò)尋找較長(zhǎng)字符串中的子字符串與較短字符串的最佳匹配來(lái)計(jì)算相似性。

  • 返回的百分比表示兩個(gè)字符串之間的相似性,值越高表示相似性越大。

  • 在示例中,通過(guò)對(duì)查詢字符串 query 與數(shù)據(jù)集中的每個(gè)字符串進(jìn)行部分匹配,得到了相似性排名。

應(yīng)用場(chǎng)景

  • 適用于模糊搜索場(chǎng)景,其中用戶輸入的字符串可能是目標(biāo)字符串的一部分。

  • 在處理大型數(shù)據(jù)集時(shí),可以通過(guò)模糊搜索找到與查詢字符串部分匹配的項(xiàng)。

注意事項(xiàng)

  • fuzz.partial_ratio 更適合處理用戶輸入的情況,其中用戶可能只記得字符串的一部分。

  • 結(jié)果按相似性排序,可以根據(jù)需要進(jìn)行進(jìn)一步處理,例如只返回相似性超過(guò)一定閾值的結(jié)果。

fuzz.token_sort_ratio 和 fuzz.token_set_ratio函數(shù)詳解

fuzz.token_sort_ratio 和 fuzz.token_set_ratio 是 fuzzywuzzy 庫(kù)中用于處理字符串中單詞排序和集合的函數(shù)。它們適用于處理同義詞和詞序不同的情況。

fuzz.token_sort_ratio

參數(shù)

s1, s2: 要比較的兩個(gè)字符串。

示例代碼

from fuzzywuzzy import fuzz

str1 = "fuzzywuzzy python library"
str2 = "python library fuzzywuzzy"

# 使用 fuzz.token_sort_ratio 進(jìn)行基于排序的字符串比較
ratio = fuzz.token_sort_ratio(str1, str2)
print(f"Similarity Ratio (Token Sort): {ratio}%")
  • 解釋

fuzz.token_sort_ratio 考慮了字符串中單詞的排序,它首先對(duì)單詞進(jìn)行排序,然后計(jì)算排序后的字符串的相似性。

返回的百分比表示兩個(gè)字符串之間的相似性,值越高表示相似性越大。

  • 應(yīng)用場(chǎng)景

適用于處理字符串中單詞順序不同的情況,例如同義詞的不同排列。

  •  注意事項(xiàng)

在處理同義詞時(shí),fuzz.token_sort_ratio 提供了一種更寬容的比較方式,忽略了單詞的具體順序。

fuzz.token_set_ratio

 參數(shù)

s1, s2: 要比較的兩個(gè)字符串。

示例代碼

from fuzzywuzzy import fuzz

str1 = "python fuzzywuzzy library"
str2 = "fuzzywuzzy python library"

# 使用 fuzz.token_set_ratio 進(jìn)行基于集合的字符串比較
ratio = fuzz.token_set_ratio(str1, str2)
print(f"Similarity Ratio (Token Set): {ratio}%")

解釋

fuzz.token_set_ratio 考慮了字符串中單詞的集合,它計(jì)算兩個(gè)字符串之間共享的單詞集合的相似性。

返回的百分比表示兩個(gè)字符串之間的相似性,值越高表示相似性越大。

應(yīng)用場(chǎng)景

適用于處理字符串中同義詞,即使單詞的順序和數(shù)量不同也能夠識(shí)別相似性。

注意事項(xiàng)

fuzz.token_set_ratio 是一種更靈活的比較方式,允許字符串中包含不同數(shù)量的單詞,只要它們屬于共享的單詞集合。

示例代碼

1 拼寫檢查

from fuzzywuzzy import fuzz

correct_spelling = "fuzzywuzzy"
user_input = "fuzzuwuzzy"

# 拼寫檢查
ratio = fuzz.ratio(correct_spelling, user_input)
if ratio >= 80:
    print("Correct spelling!")
else:
    print("Did you mean:", correct_spelling)

2 模糊搜索

from fuzzywuzzy import fuzz

query = "Python fuzzywuzzy"
data = ["Python fuzzywuzzy library", "Python data science", "Java programming"]

# 模糊搜索
results = [(item, fuzz.partial_ratio(query, item)) for item in data]
sorted_results = sorted(results, key=lambda x: x[1], reverse=True)

print("Fuzzy Search Results:")
for result, similarity in sorted_results:
    print(f"{result} - Similarity: {similarity}%")

3 同義詞匹配

from fuzzywuzzy import fuzz

reference_text = "machine learning"
user_input = "AI and ML"

# 同義詞匹配
ratio = fuzz.token_set_ratio(reference_text, user_input)
if ratio >= 80:
    print("Match found!")
else:
    print("No exact match, but similarities found.")

4 數(shù)據(jù)清洗

from fuzzywuzzy import fuzz

correct_value = "Python"
data = ["Ptyhon", "Pythoon", "Java", "Python programming"]

# 數(shù)據(jù)清洗
cleaned_data = [item for item in data if fuzz.ratio(correct_value, item) >= 80]

print("Cleaned Data:", cleaned_data)

性能優(yōu)化和注意事項(xiàng)

1 性能考慮

fuzzywuzzy 庫(kù)在處理大型數(shù)據(jù)集時(shí)可能會(huì)導(dǎo)致性能問(wèn)題,建議謹(jǐn)慎使用。

2 緩存匹配結(jié)果

為了提高性能,可以考慮緩存匹配結(jié)果,避免重復(fù)計(jì)算。

總結(jié)

Python的fuzzywuzzy庫(kù)為字符串匹配提供了強(qiáng)大的工具,通過(guò)基于Levenshtein距離的算法,它在處理拼寫錯(cuò)誤、同義詞、詞序不同等情況時(shí)展現(xiàn)出色的表現(xiàn)。在本文中,深入了解了庫(kù)中的關(guān)鍵函數(shù),包括fuzz.ratio、fuzz.partial_ratiofuzz.token_sort_ratiofuzz.token_set_ratio。

fuzz.ratio簡(jiǎn)單而直觀,適用于基本的字符串相似性比較,尤其在拼寫檢查中表現(xiàn)出色。而fuzz.partial_ratio允許部分字符串匹配,適用于模糊搜索,處理用戶輸入可能是目標(biāo)字符串的一部分的情況。fuzz.token_sort_ratiofuzz.token_set_ratio則考慮了字符串中單詞的排序和集合,分別適用于處理同義詞和詞序不同的場(chǎng)景。前者關(guān)注單詞排序,適用于同義詞的不同排列,而后者則處理字符串中同義詞,即使單詞的順序和數(shù)量不同也能夠識(shí)別相似性。除此之外,還介紹了庫(kù)的性能優(yōu)化和注意事項(xiàng),強(qiáng)調(diào)在處理大型數(shù)據(jù)集時(shí)需謹(jǐn)慎使用,可以考慮緩存匹配結(jié)果以提高性能。

綜合而言,fuzzywuzzy庫(kù)為開(kāi)發(fā)人員提供了靈活而高效的字符串匹配解決方案,可廣泛應(yīng)用于拼寫檢查、模糊搜索、同義詞匹配和數(shù)據(jù)清洗等實(shí)際場(chǎng)景。通過(guò)巧妙地利用其不同函數(shù),開(kāi)發(fā)者可以根據(jù)具體需求選擇合適的方法,提高字符串匹配的準(zhǔn)確性和可靠性。

以上就是Python Fuzzywuzzy庫(kù)模糊字符串匹配應(yīng)用實(shí)戰(zhàn)的詳細(xì)內(nèi)容,更多關(guān)于Python Fuzzywuzzy庫(kù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 一小時(shí)快速入門Python教程

    一小時(shí)快速入門Python教程

    這篇文章主要講述了幾個(gè)例子,通過(guò)簡(jiǎn)單的demo讓有寫代碼經(jīng)驗(yàn)的你能夠快速的入門Python的使用,大大提升你的學(xué)習(xí)效率
    2021-06-06
  • 使用Python?Socket實(shí)現(xiàn)搭建HTTP協(xié)議

    使用Python?Socket實(shí)現(xiàn)搭建HTTP協(xié)議

    網(wǎng)絡(luò)編程中,了解底層的通信機(jī)制是極其重要的,本文將帶領(lǐng)大家深入探索如何使用Python的socket庫(kù)來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的HTTP協(xié)議,感興趣的可以了解下
    2024-02-02
  • Numpy數(shù)組的組合與分割實(shí)現(xiàn)的方法

    Numpy數(shù)組的組合與分割實(shí)現(xiàn)的方法

    本文主要介紹了Numpy數(shù)組的組合與分割實(shí)現(xiàn)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 深入講解Python編程中的字符串

    深入講解Python編程中的字符串

    這篇文章主要介紹了Python編程中的字符串,包括字符串的格式化與三引號(hào)的使用等,需要的朋友可以參考下
    2015-10-10
  • 詳解Python查找誰(shuí)刪了你的微信

    詳解Python查找誰(shuí)刪了你的微信

    微信好友長(zhǎng)時(shí)間不聯(lián)系就可能被對(duì)方刪除,但是微信也不會(huì)主動(dòng)通知你。那么我們就來(lái)用python寫一個(gè)工具查驗(yàn)一下誰(shuí)刪除了你的微信
    2022-02-02
  • Python解釋器以及PyCharm的安裝教程圖文詳解

    Python解釋器以及PyCharm的安裝教程圖文詳解

    PyCharm是一種Python IDE,帶有一整套可以幫助用戶在使用Python語(yǔ)言開(kāi)發(fā)時(shí)提高其效率的工具。這篇文章主要介紹了Python解釋器以及PyCharm的安裝教程圖文詳解,需要的朋友可以參考下
    2020-02-02
  • 替換python字典中的key值方法

    替換python字典中的key值方法

    今天小編就為大家分享一篇替換python字典中的key值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Python2與Python3的區(qū)別實(shí)例總結(jié)

    Python2與Python3的區(qū)別實(shí)例總結(jié)

    這篇文章主要介紹了Python2與Python3的區(qū)別,結(jié)合實(shí)例形式總結(jié)分析了Python2與Python3打印輸出、編碼、數(shù)值運(yùn)算、異常處理等使用區(qū)別,需要的朋友可以參考下
    2019-04-04
  • Python爬蟲(chóng)圖片懶加載技術(shù) selenium和PhantomJS解析

    Python爬蟲(chóng)圖片懶加載技術(shù) selenium和PhantomJS解析

    這篇文章主要介紹了Python爬蟲(chóng)圖片懶加載技術(shù) selenium和PhantomJS解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • python內(nèi)存動(dòng)態(tài)分配過(guò)程詳解

    python內(nèi)存動(dòng)態(tài)分配過(guò)程詳解

    這篇文章主要介紹了python內(nèi)存動(dòng)態(tài)分配過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07

最新評(píng)論