最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python?Fuzzywuzzy庫基本函數及模糊字符串匹配應用實戰(zhàn)

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

安裝和基本用法

1 安裝 fuzzywuzzy

pip install fuzzywuzzy

2 基本用法

from fuzzywuzzy import fuzz

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

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

模糊匹配算法

1 Levenshtein 距離

Levenshtein 距離是一種衡量兩個字符串相似程度的算法,它通過插入、刪除和替換字符的操作次數來計算相似性。

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

模糊匹配允許我們在一定程度上容忍輸入字符串之間的差異,提高了匹配的靈活性。

基本函數介紹

fuzz.ratio函數詳解

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

參數

s1, s2: 要比較的兩個字符串。

示例代碼

from fuzzywuzzy import fuzz

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

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

解釋

fuzz.ratio 使用了 Levenshtein 距離算法,該算法測量了通過插入、刪除和替換字符來將一個字符串轉換為另一個字符串的操作次數。

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

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

應用場景

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

注意事項

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

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

fuzz.partial_ratio函數詳解

fuzz.partial_ratio 是 fuzzywuzzy 庫中用于部分字符串匹配的函數。相比于 fuzz.ratio,fuzz.partial_ratio 更容忍字符串中的部分相似性,適用于模糊搜索場景。

參數

  • s1, s2: 要比較的兩個字符串。

示例代碼

from fuzzywuzzy import fuzz

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

# 使用 fuzz.partial_ratio 進行部分字符串匹配
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 允許部分字符串匹配,通過尋找較長字符串中的子字符串與較短字符串的最佳匹配來計算相似性。

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

  • 在示例中,通過對查詢字符串 query 與數據集中的每個字符串進行部分匹配,得到了相似性排名。

應用場景

  • 適用于模糊搜索場景,其中用戶輸入的字符串可能是目標字符串的一部分。

  • 在處理大型數據集時,可以通過模糊搜索找到與查詢字符串部分匹配的項。

注意事項

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

  • 結果按相似性排序,可以根據需要進行進一步處理,例如只返回相似性超過一定閾值的結果。

fuzz.token_sort_ratio 和 fuzz.token_set_ratio函數詳解

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

fuzz.token_sort_ratio

參數

s1, s2: 要比較的兩個字符串。

示例代碼

from fuzzywuzzy import fuzz

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

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

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

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

  • 應用場景

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

  •  注意事項

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

fuzz.token_set_ratio

 參數

s1, s2: 要比較的兩個字符串。

示例代碼

from fuzzywuzzy import fuzz

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

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

解釋

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

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

應用場景

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

注意事項

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

示例代碼

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 數據清洗

from fuzzywuzzy import fuzz

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

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

print("Cleaned Data:", cleaned_data)

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

1 性能考慮

fuzzywuzzy 庫在處理大型數據集時可能會導致性能問題,建議謹慎使用。

2 緩存匹配結果

為了提高性能,可以考慮緩存匹配結果,避免重復計算。

總結

Python的fuzzywuzzy庫為字符串匹配提供了強大的工具,通過基于Levenshtein距離的算法,它在處理拼寫錯誤、同義詞、詞序不同等情況時展現出色的表現。在本文中,深入了解了庫中的關鍵函數,包括fuzz.ratiofuzz.partial_ratio、fuzz.token_sort_ratiofuzz.token_set_ratio

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

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

以上就是Python Fuzzywuzzy庫模糊字符串匹配應用實戰(zhàn)的詳細內容,更多關于Python Fuzzywuzzy庫的資料請關注腳本之家其它相關文章!

相關文章

最新評論

盐边县| 神农架林区| 鱼台县| 曲麻莱县| 广南县| 永定县| 修文县| 清镇市| 那曲县| 民乐县| 陵水| 承德县| 额济纳旗| 永寿县| 琼海市| 格尔木市| 仪征市| 尼勒克县| 丹东市| 图片| 桂阳县| 海盐县| 泾阳县| 双鸭山市| 临汾市| 南郑县| 全南县| 永兴县| 大港区| 柘荣县| 安远县| 方城县| 惠水县| 龙井市| 天台县| 乐陵市| 和平县| 栖霞市| 杭州市| 印江| 读书|