使用NLP识别相似的短语/单词

时间:2016-11-01 13:40:44

标签: python machine-learning nlp

在我们的原始数据中,我们知道有脏数据。例如,城市名称可能是"昆明","昆明"或者"昆明(市)",他们都指的是一个名叫"昆明"的城市。如果我们有一个城市名称的标准字典,我们如何使用NLP清理我们的数据。我正在考虑建立一个多标签(城市名称)分类模型。它会预测任何单词为" kun,ming"标签参考"昆明"。

或者可以定义相似度函数以将原始城市名称作为输入并与字典中的每个标准城市名称进行比较并返回最高相似度得分1。那就是f("昆明")将比较" kunming"到"城市a","城市b" ...并返回" kunming"。

我只使用城市名称作为例子。我们还有其他列具有更长的字符串值,可以实现单词包。

1 个答案:

答案 0 :(得分:1)

正如@Tchotchke所描述的,这是一个广泛的话题。如果您确实编写了一些代码来解决它们,请与我们分享。但是如果你试图对彼此相似的单词进行模糊搜索,那么你可以检查pip包fuzzywuzzy,它给出了计算出的levenshtein距离的比率。以下是查找KunmingKun-Ming之间的字差异比率的示例。该软件包还建议您安装python-Levenshtein以获得更快的结果。

>>> from fuzzywuzzy import fuzz
>>> fuzz.ratio("Kunming", "Kun-Ming")
80
>>> fuzz.partial_ratio("Kunming", "Kun-Ming")
71
>>> fuzz.token_sort_ratio("Kunming", "Kun-Ming")
93
>>> fuzz.token_set_ratio("Kunming", "Kun-Ming")
93