文本模糊匹配主要是指对两段文本含义相近程度的计算,当我们需要处理的数据集比较多样或者是未标准化的脏数据时,通过模糊匹配主要实现的是去除重复值的操作。
高级的模糊匹配涉及到的是自然语言处理的一部分内容,这里所说的模糊匹配则是一种相对比较简单的匹配方式,例如两个相近的表达方式(‘underground’ ‘subway’),一些可能出现的拼写错误和较小的语法错误或句法偏移(‘apple’ ‘appel’)以及一些并列词语位置的颠倒之类的等等一些不会涉及到语义分析的一些内容。

Python中的fuzzywuzzy库为我们提供了上述所说的功能,这个库中有几种方法:

  • fuzz.ratio(str1,str2):返回两个字符串的差异主要是一些拼写错误导致的可能(返回值为1-100)
  • fuzz.partial_ratio(str1,str2):返回两个字符串表达相同含义可能(返回值1-100),这种方法会对子字符串进行一个匹配,也可以对一些意思相近的词语进行一个更好的识别
  • token_sort_ratio:匹配时不考虑单词顺序
  • process :有限选项中部分数据杂乱的匹配效果比较好
    1658675358259

实际应用过程中选用哪种方法需要视情况而定,对于一些表述上有微小差别意思却有巨大差别的数据(‘does’,‘doesn’t’),使用第一种方法进行匹配会得到相对比较低的得分,这也是我们需要注意的。

fuzz.ratio('小明','小明的女朋友')
# 50
fuzz.partial_ratio('小明','小明的女朋友')
# 100