Java中的相似性字符串比较

Java中的相似性字符串比较

我想比较几个字符串,找到最相似的字符串。我想知道是否有任何库,方法或最佳实践会返回我哪些字符串更类似于其他字符串。例如:

  • “快狐跳了起来” - >“狐狸跳了”

  • “快速狐狸跳了” - >“狐狸”

这种比较将返回第一个比第二个更相似。

我想我需要一些方法,例如:

double similarityIndex(String s1, String s2)

某处有这样的事吗?

编辑:我为什么这样做?我正在编写一个脚本,将MS Project文件的输出与处理任务的某些遗留系统的输出进行比较。由于遗留系统的字段宽度非常有限,因此在添加值时,将缩写描述。我想要一些半自动的方式来查找MS Project中哪些条目与系统上的条目类似,这样我就可以获得生成的密钥。它有缺点,因为它必须仍然手动检查,但它会节省大量的工作


慕村225694
浏览 733回答 3
3回答

肥皂起泡泡

我将Levenshtein距离算法翻译成了JavaScript:String.prototype.LevenshteinDistance&nbsp;=&nbsp;function&nbsp;(s2)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;array&nbsp;=&nbsp;new&nbsp;Array(this.length&nbsp;+&nbsp;1); &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(var&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;this.length&nbsp;+&nbsp;1;&nbsp;i++) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array[i]&nbsp;=&nbsp;new&nbsp;Array(s2.length&nbsp;+&nbsp;1); &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(var&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;this.length&nbsp;+&nbsp;1;&nbsp;i++) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array[i][0]&nbsp;=&nbsp;i; &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(var&nbsp;j&nbsp;=&nbsp;0;&nbsp;j&nbsp;<&nbsp;s2.length&nbsp;+&nbsp;1;&nbsp;j++) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array[0][j]&nbsp;=&nbsp;j; &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(var&nbsp;i&nbsp;=&nbsp;1;&nbsp;i&nbsp;<&nbsp;this.length&nbsp;+&nbsp;1;&nbsp;i++)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(var&nbsp;j&nbsp;=&nbsp;1;&nbsp;j&nbsp;<&nbsp;s2.length&nbsp;+&nbsp;1;&nbsp;j++)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(this[i&nbsp;-&nbsp;1]&nbsp;==&nbsp;s2[j&nbsp;-&nbsp;1])&nbsp;array[i][j]&nbsp;=&nbsp;array[i&nbsp;-&nbsp;1][j&nbsp;-&nbsp;1]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array[i][j]&nbsp;=&nbsp;Math.min(array[i][j&nbsp;-&nbsp;1]&nbsp;+&nbsp;1,&nbsp;array[i&nbsp;-&nbsp;1][j]&nbsp;+&nbsp;1); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array[i][j]&nbsp;=&nbsp;Math.min(array[i][j],&nbsp;array[i&nbsp;-&nbsp;1][j&nbsp;-&nbsp;1]&nbsp;+&nbsp;1); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;array[this.length][s2.length];};
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java