ngrams结果令人惊讶的蟒蛇

时间:2017-08-02 07:49:56

标签: python python-3.x n-gram

只是尝试使用Python的ngram库,我遇到了一个与字符串相似性有关的问题。比率输出有点令人困惑。看看我尝试了什么:

>>> ngram.NGram.compare('alexp','Alex Cho',N=1)*100
30.0
>>>
>>> ngram.NGram.compare('alexp','Alex Plutzer',N=1)*100
21.428571428571427
>>> ngram.NGram.compare('alexp','Alex Plutzer'.lower(),N=1)*100
41.66666666666667
>>> ngram.NGram.compare('alexp','Alex Cho'.lower(),N=1)*100
44.44444444444444
>>> ngram.NGram.compare('alexp','AlexCho'.lower(),N=1)*100
50.0
>>> ngram.NGram.compare('alexp','AlexPlutzer'.lower(),N=1)*100
45.45454545454545

最相似的必须是alexpAlex Plutzer,但分数越多,分配给前者Alex Cho
可以做些什么来获得一个合适的结果,与竞争对手相比,我得到的输出为Alex Plutzer得分高?

1 个答案:

答案 0 :(得分:1)

通过一些领域知识,使用你考虑1克和曲线拟合,我声称两个字符串S和T的熟悉度是通过

计算的

enter image description here

其中ngrams只给出字符串的ngrams,花括号表示集合,条形/管道表示该集合中元素的数量。

因此,如果此公式成立,则获得的结果是正确的,因此结果对于此公式是正确的。也许Levensthein-Distance

可能更适合您的需求

也许你想检查以下stackoverflow thread,另外,你可能想检查nltk是否提供了你需要的相似度分数

相关问题