小编myr*_*ks2的帖子

更快的字符串匹配/迭代方法?

在我目前正在开发的程序中,有一部分需要花费一些时间.基本上,我有一个字符串列表和一个目标短语.例如,假设目标短语是"成品库存".现在,在过滤掉停用词(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 performance

6
推荐指数
2
解决办法
180
查看次数

自然语言处理 - 将文本特征转换为特征向量

所以我一直致力于一个自然语言处理项目,在这个项目中我需要对不同的写作风格进行分类.假设已经为我提取了文本的语义特征,我计划使用Java中的Weka来训练SVM分类器,使用这些可用于对其他不同文本进行分类的特征.

我遇到麻烦的部分是训练SVM,必须将这些特征转换为特征向量.我不确定你如何能够在向量中表示诸如词汇丰富度,n-gram,标点符号,段落数和段落长度等功能.如果有人能指出正确的方向,那将非常感激.

java nlp svm text-classification

5
推荐指数
1
解决办法
1386
查看次数

自然语言处理 - 文本分类的特征

所以我试图使用Weka SVM对文本进行分类.到目前为止,我用于训练SVM的特征向量由培训文本中出现的unigrams和bigrams的TF-IDF统计数据组成.但是,我从测试训练有素的SVM模型得到的结果根本不准确,所以有人能给我反馈我的程序吗?我按照以下步骤对文本进行分类:

  1. 构建一个由训练文本中提取的unigrams和bigrams组成的字典
  2. 计算每个训练文本中每个unigram/bigram出现的次数,以及unigram/bigram出现的训练文本数量
  3. 使用步骤2中的数据计算每个unigram/bigram的TF-IDF
  4. 对于每个文档,构造一个特征向量,该向量是字典的长度,并在向量的每个元素中存储相应的TF-IDF统计量(例如,文档一的特征向量中的第一个元素将对应于TF -IDF表示字典中与文档1相关的第一个单词)
  5. 将类标签附加到每个特征向量以区分哪个文本属于哪个作者
  6. 使用这些特征向量训练SVM
  7. 测试文本的特征向量以与训练文本相同的方式构造,并由SVM分类

还有,我需要训练具有更多功能的SVM吗?如果是这样,在这种情况下哪些功能最有效?非常感谢任何帮助,谢谢.

java nlp weka feature-selection

5
推荐指数
1
解决办法
2458
查看次数