我想开发一个匹配引擎的句子。 引擎将生成一个结果,该结果是输入中最匹配的句子。 即使它是最不匹配的,引擎也必须从数据集(带有大量句子的文本文件)生成输出。
例如:输入:
你好我是Nidhin Joseph
数据集:
1)。 你好,你好吗?
2)。 我是Nidhin。
3)。 我是Nidhin Joseph你好。
在这三者中,根据我的要求,最匹配的是
第三句话。
我根据单词命中和单词顺序进行排名
我的输入 :{“Hello”,“I”,“am”,“Nidhin”,“Joseph”}
我的输出:{“I”,“am”,“Nidhin”,“Joseph”,“Hello”}
此处没有单词匹配= 4
没有相对有序的单词= 4
我不知道我是否能够传达你的想法。如果我做了,那么请
告诉我,如果Java中已有类似的库。
如果没有,请带领我朝着正确的方向前进,这样我就可以更容易地开发它。
答案 0 :(得分:1)
我建议使用Levenshtein距离算法。您可以在整个句子上使用标准算法,将其视为一长串字符(包括空格和标点符号)。
根据您的要求,您可以尝试一些变体,例如在所有单词上运行Porter词干分析器或忽略标点符号。你甚至可以修改Levenshtein算法,使用单词作为原子而不是字符。