Python中文
首页
教程
问答
标签
搜索
登录
注册
计算两个字符串之间距离的算法
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>有没有不考虑单词顺序的字符串距离算法?在</p> <p>以下算法未给出所需结果(在该示例中,所需结果应为1):</p> <pre><code>import jaro jaro.jaro_winkler_metric(u'Michael Jordan',u'Jordan Michael') >>>0.47 import Levenshtein Levenshtein.ratio('Michael Jordan', 'Jordan Michael') >>>0.5 from difflib import SequenceMatcher SequenceMatcher(None, 'Michael Jordan', 'Jordan Michael').ratio() >>>0.5 </code></pre> <p>一种方法是按字母顺序排列字符串,然后再使用上述算法:</p> ^{pr2}$ <p>但这里的姓名和姓氏信息丢失,不会有“稳定”的结果。在</p> <p>我创建了一个函数,使用来自<code>itertools</code>的<code>permutations</code>,它接受所有可能的单词编译,并比较字符串并输出最大值。结果是令人满意的,但整个过程是非常缓慢的,当我要比较数以百万计的名字。在</p> <p>可以做的其他事情是对单词进行排序,例如:</p> <pre><code>' '.join(sorted('Michael Jordan'.split())) >>>'Jordan Michael' ' '.join(sorted('Jordan Michael'.split())) >>>'Jordan Michael' </code></pre> <p>似乎是一个很好的方法和简单的方法来减少计算,但我们失去了一些敏感的情况。示例:</p> <pre><code>name1 = ' '.join(sorted('Bizen Dim'.split())) >>>'Bizen Dim' name2 = ' '.join(sorted('Dim Mpizen'.split())) >>>'Dim Mpizen' SequenceMatcher(None, name1, name2).ratio() >>> 0.55 </code></pre> <p>这两个名字和人们把自己的名字从“b”翻译成“mp”的情况是一样的(我就是其中之一)。用这种方法我们就失去了这场比赛。在</p> <p>有没有字符串距离算法可以比较单词而不考虑单词的顺序?或者,是否有关于如何有效地实现预期功能的建议?在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>您可以标记这两个字符串(例如,使用NLTK标记器),计算每个词对之间的距离并返回所有距离的总和。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何在乒乓球比赛中预测球的轨迹,对于AI球拍预测?
8 回答
如何在乒乓球游戏中阻止球
4 回答
如何在乘法和模中不乘空间?
8 回答
如何在乘法和除以2个不同的数字之间进行交换?
3 回答
如何在也是数据一部分的单个字符上拆分大字符串
8 回答
如何在乾草堆中找到針,有更好的解決方案嗎?
5 回答
如何在事件wxWidgets中传递自定义数据
6 回答
如何在事件中使用lambda i=i?
3 回答
如何在事件中心只接收最近的数据
5 回答
如何在事件发生之前保持云函数运行?
6 回答
如何在事件发生后使页面重定向到同一页面
3 回答
如何在事件回调之间保持python生成器的状态
4 回答
如何在事件处理程序(pythonsocket、sphinx)中保留docstring
3 回答
如何在事件处理程序中更改wxRichTextCtrl的光标位置?
10 回答
如何在事件处理程序中访问外部对象?
9 回答
如何在事件循环中将协程打包为正常函数?
5 回答
如何在事件循环之外运行协同程序?
8 回答
如何在事件循环结束时为并发未来的所有线程调用类方法?
7 回答
如何在事件文件中只保留一份摘要?
9 回答
如何在事件模板中添加事件
1 回答