考虑以下字符串:
我试图以这样的方式对这些进行排序,以至于类似的单词汇集在一起,我知道
alphanumerical sorting
不是一个选项",-_ and etc
然后进行比较肯定有帮助,但结果不会像我希望的那样好。注意:
可能没有多少不同的期望输出,其中一个是:
期望的输出:
所以我的问题是,如果有一个java包比较字符串并最终根据它进行排序。
我听说过n-gram
和skip-gram
这样的术语,但对它们并不十分了解。我甚至不确定它们是否对我有用。
更新: 找到相似之处肯定是我的问题的一部分,但主要问题是排序部分。
答案 0 :(得分:4)
这是一种可能的方法。
计算每对字符串之间的edit distance/Levenshtein distance,然后使用查看字符串作为边缘权重来自编辑距离的完整图形。选择这些权重的阈值并删除所有权重。然后在此图表中找到cliques。如果您的阈值相当低,甚至可能会选择连接组件。
注意: 也许最好用@dognose发布的链接中的一个相似性度量替换一些编辑距离。 另外,请注意,如果您有大量字符串
,那么查找派系的速度会非常慢