gpt4 book ai didi

java - 如何以更有效的方式从大型集合文件中删除停用词?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:33:45 27 4
gpt4 key购买 nike

我有 200,000 个文件,我必须为每个文件处理和提取 token 。所有文件的大小为 1.5GB。当我编写从每个文件中提取标记的代码时,它运行良好。整个执行时间为 10 分钟。

之后,我尝试删除 stopwords 性能严重下降。这需要 25 到 30 分钟。

我正在使用网站 here 中的停用词大约有 571 个停用词。一般过程是一次从文本文件中提取每个停用词,并与文件中的每个标记进行比较。

这是代码 stub

StringBuilder sb = new StringBuilder();
for(String s : tokens)
Scanner sc=new Scanner(new File("stopwords.txt"));
while(sc.hasNext())
{
if(sc.next().equals(s)){
flag = true;
break;
}
}
if(flag)
sb.append(s + "\n" );
flag = false;
}
String str = sb.toString()

**忽略错误。

上面代码的性能至少比下面代码低 10 倍。执行需要 50 到 60 分钟。

StringBuilder sb = new StringBuilder();
String s = tokens.toString();
String str = s.replaceAll("StopWord1|Stopword2|Stopword3|........|LastStopWord"," ");

性能非常好。这需要 20 到 25 分钟。

有没有更好的程序?

最佳答案

当然这是不好的。你在做 O(n^2)比较。对于每个单词,您都在与另一个单词进行比较。您需要重新考虑您的算法。

将所有停用词读入 HashSet<String>然后检查set.contains(word) .这将显着提高你的表现。

关于java - 如何以更有效的方式从大型集合文件中删除停用词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22257598/

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