需要帮助匹配以下数据中的短语,我需要匹配TextA和TextB中的短语
下面的代码没有帮到我如何解决这个问题我有100个代码要匹配
#对混乱的短语进行排序
def sorts(string_value):
sorted_string = sorted(string_value.split())
sorted_string = ' '.join(sorted_string)
return sorted_string
#删除字符串中的标点符号
punc = '''!()-[]{};:'"\,<>./?@#$%^&*_~'''
def punt(test_str):
for ele in test_str:
if ele in punc:
test_str = test_str.replace(ele, "")
return(test_str)
#匹配字符串
def lets_match(x):
for text1 in TextA:
for text2 in TextB:
try:
if sorts(punt(x[text1.casefold()])) == sorts(punt(x[text2.casefold()])):
return True
except:
continue
return False
df['result'] = df.apply(lets_match,axis =1)
即使在实现了字符串排序、删除标点符号和区分大小写之后,我仍然认为这些字符串不匹配。我在这里错过了一些东西,可以帮助我实现它吗
我认为如果没有字符串距离的概念,你就无法做到这一点,你能做的就是使用,例如record linkage
我将不详细介绍,但我将向您展示此案例的用法示例
matches现在是一个多索引数据帧,接下来要做的是按第一个索引查找第二个索引上的所有最大值。因此,您将获得所需的结果
结果可以在距离、索引和/或预处理方面得到改进
实际上,您可以使用
difflib
来匹配两个文本,下面是您可以尝试的:您可以使用
if result>0.6
值进行播放有关
difflib
的更多信息,请访问here。还有其他类似textdistance的序列匹配器,但我发现它很容易,所以我尝试了这个使用模糊匹配库有什么问题吗?鉴于上述数据相对相似,该实现非常简单,运行良好。我在没有预处理的情况下执行了以下操作
相关问题 更多 >
编程相关推荐