gpt4 book ai didi

java - 如何使用文件中的自定义停止词/常用词在 Lucene 中创建自定义分析器

转载 作者:行者123 更新时间:2023-12-01 18:25:16 27 4
gpt4 key购买 nike

我正在尝试在 Lucene 8.3.0 中创建一个自定义分析器,它使用词干分析并使用文件中的自定义停用词过滤给定的文本。更清楚地说,我不想使用默认的停用词过滤器并在其上添加一些单词,我想仅使用 stopWords.txt 文件中的一组停用词进行过滤。我怎样才能做到这一点?

这是我到目前为止所写的,但我不确定是否正确

public class MyAnalyzer extends Analyzer{
//public class MyAnalyzer extends Analyzer {
@Override
protected TokenStreamComponents createComponents(String fieldName) {
// public TokenStream tokenStream(String fieldName, Reader reader) {
Tokenizer tokenizer = new StandardTokenizer();
TokenStream tokenStream = new StandardFilter(tokenizer);
tokenStream = new LowerCaseFilter(tokenStream);
tokenStream = new StopFilter(tokenStream,StopAnalyzer.ENGLISH_STOP_WORDS_SET);
//Adding Porter Stemming filtering
tokenStream = new PorterStemFilter(tokenStream);
//return tokenStream;
return new TokenStreamComponents(tokenizer, tokenStream);
}
}

首先,我不确定结构是否正确,现在我使用 StopAnalyzer 中的 StopFilter 只是为了测试它(但它不起作用)。

最佳答案

您需要读取文件并将其解析为 CharArraySet 以传递到过滤器中。 StopFilter有一些内置方法可用于将字符串列表转换为 CharArraySet,例如:

...
CharArraySet stopset = StopFilter.makeStopSet(myStopwordList);
tokenStream = new StopFilter(tokenStream, stopset);
...

它被列为用于内部目的,因此关于依赖此类的合理警告,但如果您不想将文件解析为列表,则可以使用 WordListLoader将您的停用词文件解析为 CharArraySet,例如:

...
CharArraySet stopset = WordlistLoader.getWordSet(myStopfileReader);
tokenStream = new StopFilter(tokenStream, stopset);
...

关于java - 如何使用文件中的自定义停止词/常用词在 Lucene 中创建自定义分析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60239345/

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