尝试用 fuzzywuzzy 对文本进行模糊匹配,使用 fuzz.ratio
能正常返回匹配率,证明能正常匹配中文:
from fuzzywuzzy import fuzz
fuzz.ratio("数据挖掘", "数据挖掘工程师") # 返回 73
fuzzywuzzy 中 extractOne
的用途是,在一个列表中找到跟目标文本最匹配的一个字符串,但我下面这段代码,却只能返回列表第一个字符串,并且匹配率为 0:
from fuzzywuzzy import process
title_list = [u"数据分析师", u"数据挖掘工程师", u"大数据开发工程师", u"机器学习工程师",
u"算法工程师", u"数据库管理", u"商业分析师", u"数据科学家", u"首席数据官",
u"数据产品经理", u"数据运营", u"大数据架构师"]
process.extractOne(u"数据挖掘", title_list) # 返回 (u'\u6570\u636e\u5206\u6790\u5e08', 0)
但如果我将目标文本和列表中加入英文,就能正常返回结果了:
from fuzzywuzzy import process
title_list = [u"数据分析师", u"数据挖掘工程师", u"大数据开发工程师", u"机器学习工程师",
u"算法工程师", u"数据库管理", u"商业分析师", u"数据科学家", u"首席数据官",
u"数据产品经理", u"数据运营", u"大数据架构师", "Data Analyst"]
process.extractOne(u"Data", title_list) # 返回 ('Data Analyst', 90)
请问这里该怎么处理中文字符才能正确获得结果呢?
是否考虑变通一下