比如说,我有三个单词"纽约","纽约"和" new-york"。我可以使用机器学习或任何其他字符串操作算法来指出这三个词是指同一个词吗?
我想这个问题肯定已经在某个地方得到了回答,但我真的不知道如何去寻找它。所以,如果我发送垃圾邮件,我很抱歉。
答案 0 :(得分:1)
规范化字符串,小写,删除特殊字符,获取签名字符串。 例如
纽约 - >纽约 new-york - >纽约 纽约 - >纽约
首先比较完全匹配的签名。
然后使用levenstein或jaro wrinkler等模糊匹配算法比较签名。
newyork< - > newyerk - > 90%匹配
大多数编程语言都有可用于3的模块,例如python中的difflib。
您可以使用给定here
的python实用程序方法>>> from helpers import find_string_similarity
>>> find_string_similarity('new york','New-York',normalized=True)
1.0
>>> find_string_similarity('new yArk','New-York',normalized=True)
0.8999999999999999
您也可以清楚地使用difflib
。
答案 1 :(得分:1)
我认为word2vec是最接近你想要的基于机器学习的方法。它将为这些序列创建类似的向量,但结果不会令人惊讶。 我会使用一个释义数据库: http://www.cis.upenn.edu/~ccb/ppdb/ 或者只是像spacy这样可以规范化文本的解析器。