安卓和模糊匹配,n-gram以及Levenshtein距离

4
我正在开发一个Android应用程序,它接受一个字符串输入并使用Google API返回一个排名列表。我想找到一种方法来比较用户输入的开放式字符串和列表中的第一项,以查看他们输入的内容是否“可能”是一本书。我有大量关于书籍的信息,如标题、作者、描述等,因此可以在任何部分进行搜索。
例如:
'eyre affair fforde', 'fforde eyre affair', 'the eyre affair' ----> “可能”是“Jasper Fforde的The Eyre Affair”
最好的方法是什么?我已经研究了Levenshtein距离,但不认为它适用于这样开放式的输入,n-grams似乎是一个不错的选择,或者模糊匹配。还有其他想法吗?
1个回答

8

我会选择以下其中一个:

SimMetrics (SimMetrics是一个开源的可扩展相似度或距离度量库,例如Levenshtein Distance、L2 Distance、Cosine Similarity、Jaccard Similarity等等)

Commons Lang LevenshteinDistance

或者为了消除听力或拼写错误:soundexmetaphone


@puppetmaster04:非常感谢,我很高兴能够帮助。我看了你的问题,很好奇你的应用程序会如何发展。 - Chris
很不幸,除了SimMetrics之外的所有链接都已失效。 - MrMaffen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接