python中列表项的levenshtein距离

2024-10-02 18:14:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个列表,下面,我想比较一下,如果相似的词,levenshtein距离小于2。我有一个函数可以找到levenshtein距离,但是作为参数它需要这两个词。我可以找到哪些词不在另一个单子里,但这没用。我可以逐个索引,但就像下面的例子,当我到达索引7时(除了),所有的东西都被丢弃了,因为不忠将是索引9和8,wcop88是9和10,因此这些不能进行比较。有没有什么方法可以说,如果不忠的一部分是在另一个列表中的某个词中,然后检查这两个词,注意这并不总是有效的,因为如果说不忠和不忠,那么只有in和ty可以匹配,而且很多词都可能匹配

[u'rt', u'cuaimatizada', u's', u'cuaimaqueserespeta', u'forgives', u'any', u'mistake', u'but', u'the', u'infidelity', u'wocp88']
[u'rt', u'cuiamatizada', u's', u'cuimaqueserespeta', u'forgive', u'any', u'mistake', u'except', u'infedelity', u'wcop88']

编辑:所以我的目标是能够给我的levenshtein函数输入需要检查的两个单词。在这种情况下,以下对:

^{pr2}$

我不知道手上是什么词。在


Tags: 方法函数in距离列表参数any例子
1条回答
网友
1楼 · 发布于 2024-10-02 18:14:18

我想这就是你想要的。。。但它比较了所有的词。。。不仅仅是匹配索引

 wordpairs = [(w1,w2) for w1 in list1 for w2 in list2 if levenstein(w1,w2) < 2]

>>> matches = [(w1,w2) for w1 in l12 for w2 in l22 if levenshtein(w1,w2) < 2]

[(u'rt', u'rt'), (u's', u's'), (u'cuaimaqueserespeta', u'cuimaqueserespeta'), (u'forgives', u'forgive'), (u'any', u'any'), (u'mistake', u'mistake'), (u'infidelity',u'infedelity')]

相关问题 更多 >