比较作曲家名称,或者如何在两个字符串之间找到"足够接近"的匹配?

Ben*_*Ben 4 java string

完成两个cs课程后,我开始使用Java开发个人项目.我正在编写一个程序,它将查看音乐集,并尝试通过查看文件名和元标记来设置"Composer"标记.我将这些作为一个简单的文本文件创建的作曲家列表进行比较.我的问题是:

比较两个字符串以尝试找到最佳匹配类型的好方法是什么?例如,在我的情况下,假设我有一个名为'Pulenc - 格洛丽亚在excelsis Deo.flac'的文件.在我的作曲家名单中,我有'Poulenc,Francis'.我希望能够阅读'Pulenc',并且看到它非常接近'Poulenc',这样我就可以正确设置作曲家标签了.一位朋友建议我研究使用余弦距离(我之前从未听说过)和另一个推荐的Levenshtein距离.这些方法中的任何一种都是一种好的方法,还是有其他可能更好的方法?

Mic*_*rdt 5

听起来Levenshtein距离正是您所需要的.该余弦距离似乎对付较长的文本,和语音算法像探测法可能会产生不好的结果的名称,其中大部分是不打算用英语发音规则来发音.