在我目前正在开发的程序中,有一部分需要花费一些时间.基本上,我有一个字符串列表和一个目标短语.例如,假设目标短语是"成品库存".现在,在过滤掉停用词(of)之后,我想从列表中提取包含三个词之一的所有字符串:"inventory","finished"和"goods".现在,我实现了如下想法:
String[] targetWords; // contains "inventory", "finished", and "goods"
ArrayList<String> extractedStrings = new ArrayList<String>();
for (int i = 0; i < listOfWords.size(); i++) {
String[] words = listOfWords.get(i).split(" ");
outerloop:
for (int j = 0; j < words.length; j++) {
for (int k = 0; k < targetWords.length; k++) {
if (words[j].equalsIgnoreCase(targetWords[k])) {
extractedStrings.add(listOfWords.get(i));
break outerloop;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
该列表包含超过100k个单词,并且使用这个单词,每个目标短语完成任务需要0.4到0.8秒.事情是,我有很多这些目标短语需要处理,秒数真的加起来.因此,我想知道是否有人知道更有效的方法来完成这项任务?我在这里先向您的帮助表示感谢!
所以我一直致力于一个自然语言处理项目,在这个项目中我需要对不同的写作风格进行分类.假设已经为我提取了文本的语义特征,我计划使用Java中的Weka来训练SVM分类器,使用这些可用于对其他不同文本进行分类的特征.
我遇到麻烦的部分是训练SVM,必须将这些特征转换为特征向量.我不确定你如何能够在向量中表示诸如词汇丰富度,n-gram,标点符号,段落数和段落长度等功能.如果有人能指出正确的方向,那将非常感激.
所以我试图使用Weka SVM对文本进行分类.到目前为止,我用于训练SVM的特征向量由培训文本中出现的unigrams和bigrams的TF-IDF统计数据组成.但是,我从测试训练有素的SVM模型得到的结果根本不准确,所以有人能给我反馈我的程序吗?我按照以下步骤对文本进行分类:
还有,我需要训练具有更多功能的SVM吗?如果是这样,在这种情况下哪些功能最有效?非常感谢任何帮助,谢谢.