gpt4 book ai didi

java - 如何在java中的字符串列表中仅检索一组相似字符串中的一个

转载 作者:行者123 更新时间:2023-11-30 03:19:45 24 4
gpt4 key购买 nike

如何在java中的字符串列表中仅检索一组相似字符串中的一个。

我有一个文本数据列表(列表长度约为 60000)(存储为字符串),其中有一些彼此非常相似的文本组。我想从这个列表中创建一个新列表,每组相似的列表元素只有 1 个元素

简化示例:

the boy ate an apple
boy ate apple
the boy ate apple

新列表中应仅包含上述内容之一

我的一般方法是有两个列表:原始列表和将保存唯一列表的新列表

For each text in original_list
for each utext in the unique list
if similarity(text, utext) > threshold (threshold can be 90%)
break
else
is_similar = false
end for

if is_similar = false
add text to unique list
end for

对于相似度函数,我使用了 simmetrics Levenshtein distance java 库。然而,即使我将 jre 内存增加到 6GB,我最终也会遇到 java 堆空间问题

我还删除了停用词并使用稀疏矩阵转换为术语 vector 。然而,这是非常慢的。

我确实认为我可以使用覆盖equals()hashcode()选项,因为我是模糊匹配,所以我不能保证hashcode() 对于仅相似的字符串来说是相等的。

有人可以为我的算法提出更有效的方法吗?我对数据结构有点生疏,一直在绞尽脑汁在网上寻找解决方案。

我希望我的问题很清楚。谢谢

最佳答案

按照建议,我使用 Lucene 来索引每个字符串,这使得检查相似性的整体性能更好!

我确实遇到了另一个建议的替代方案 here看起来它可能有效,但没有尝试,因为我从 Lucene 得到了我需要的东西。

谢谢!

关于java - 如何在java中的字符串列表中仅检索一组相似字符串中的一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31630543/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com