Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中仅检索字符串列表中一组相似字符串中的一个_Java_String_Fuzzy Search - Fatal编程技术网

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

如何在java中仅检索字符串列表中一组相似字符串中的一个,java,string,fuzzy-search,Java,String,Fuzzy Search,如何在java中检索字符串列表中一组相似字符串中的一个 我有一个文本数据列表(列表的长度约为60000)(存储为字符串),其中有一些彼此非常相似的文本组。 从这个列表中,我想创建一个新的列表,每组相似的列表元素只有一个元素 简化示例: the boy ate an apple boy ate apple the boy ate apple 在新列表中应仅包含上述内容中的一项 我的一般方法是有两个列表: 原始列表和将保存唯一列表的新列表 For each text in original_lis

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

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

简化示例:

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距离java库。 然而,即使我将jre内存增加到6GB,最终还是会遇到java堆空间问题

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

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

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


我希望我的问题是清楚的。感谢

我按照建议使用Lucene为每个字符串编制索引,这使得检查相似性的总体性能大大提高

我确实遇到了另一个建议的替代方案,看起来它可能会起作用,但没有尝试,因为我从Lucene那里得到了我所需要的


谢谢

您可以使用。谢谢用户880772。Lucene很聪明。