gpt4 book ai didi

Java Lucene 停用词过滤器

转载 作者:行者123 更新时间:2023-12-01 15:02:05 27 4
gpt4 key购买 nike

我有大约 500 个句子,我想在其中编译一组 ngram。我无法删除停用词。我尝试添加 lucene StandardFilter 和 StopFilter 但仍然遇到同样的问题。这是我的代码:

for(String curS: Sentences)
{
reader = new StringReader(curS);
tokenizer = new StandardTokenizer(Version.LUCENE_36, reader);
tokenizer = new StandardFilter(Version.LUCENE_36, tokenizer);
tokenizer = new StopFilter(Version.LUCENE_36, tokenizer, stopWords);
tokenizer = new ShingleFilter(tokenizer, 2, 3);
charTermAttribute = tokenizer.addAttribute(CharTermAttribute.class);

while(tokenizer.incrementToken())
{
curNGram = charTermAttribute.toString().toString();
nGrams.add(curNGram); //store each token into an ArrayList
}
}

例如,我正在测试的第一个短语是:“对于每个倾听的人”。在此示例中,curNGram 设置为“For”,这是我的列表 stopWords 中的一个停用词。另外,在此示例中,“every”是一个停用词,因此“person”应该是第一个 ngram。

  1. 当我使用 StopFiler 时,为什么停用词会添加到我的列表中?

感谢所有帮助!

最佳答案

您发布的内容对我来说看起来没问题,因此我怀疑 stopWords 没有向过滤器提供您想要的信息。

尝试如下:

//Let's say we read the stop words into an array list (A simple array, or any list implementation should be fine)
List<String> words = new ArrayList();
//Read the file into words.
Set stopWords = StopFilter.makeStopSet(Version.LUCENE_36, words, true);

假设您生成的停用词列表(我命名为“单词”的列表)看起来像您认为的那样,这应该将它们转换为 StopFilter 可用的格式。

您是否已经生成了这样的停用词?

关于Java Lucene 停用词过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13501421/

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