繁体   English   中英

在Python中从左到右匹配两个包含相同单词的字符串

[英]Matching two string that contain same words from left to right in Python

我试图找到一种方法来匹配两个字符串,以查看它们是否匹配或在python中相似。

例:

from fuzzywuzzy import fuzz

string1 = 'Green apple'
string2 = 'Apple, green' 
string3 = 'Green apples - grow on trees'

#Test with Fuzzy Wuzzy
print(fuzz.partial_ratio(string1, string2))
> 50
print(fuzz.partial_ratio(string1, string3))
> 100
print(fuzz.partial_ratio(string2, string3))
> 58

#Testing with DiffLib SequenceMatcher
print(difflib.SequenceMatcher(None, string1, string2).ratio())
> 0.34782608695652173
print(difflib.SequenceMatcher(None, string1, string3).ratio())
> 0.5641025641025641
print(difflib.SequenceMatcher(None, string2, string3).ratio())
> 0.45

在上面的示例中,所有三个字符串都应该相似,因为它们每个都包含相同的单词“青苹果”。 是否有任何匹配算法可以匹配包含相同单词的字符串而不管其顺序如何,并且从左到右匹配,并且忽略在找到匹配项(如字符串1和字符串3)之后出现的单词。

fuzzywuzzy还有另一种方法叫做partial_token_set_ratio 我认为这可以解决您的问题

from fuzzywuzzy import fuzz
string1 = 'Green apple'
string2 = 'Apple, green' 
string3 = 'Green apples - grow on trees'
fuzz.partial_token_set_ratio(string1,string3)
100
fuzz.partial_token_set_ratio(string1,string2)
100
string4="apple"
fuzz.partial_token_set_ratio(string1,string4)
100
fuzz.partial_token_set_ratio(string4,string1)
100
string4="app"
fuzz.partial_token_set_ratio(string4,string1)
100
string4="appld"
fuzz.partial_token_set_ratio(string4,string1)
80

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM