gpt4 book ai didi

java - Apache Lucene中 "order of applying filters"背后的逻辑是什么

转载 作者:行者123 更新时间:2023-12-02 03:36:43 25 4
gpt4 key购买 nike

出于特定目的,我在 Apache Lucene 中实现了自己的分析器。在对术语进行索引之前,需要应用某些过滤器。我认为更改过滤器的应用顺序并不重要。但似乎确实如此。例如;

analyzer = new Analyzer(){ 
@Override
protected TokenStreamComponents createComponents(String fieldName){
AttributeFactory factory = AttributeFactory.DEFAULT_ATTRIBUTE_FACTORY;
Tokenizer source = new NGramTokenizer(factory,3,10);
TokenStream filter = new NewlineFilter(source);
filter = new LowerCaseFilter(filter);
filter = new UsefulGrams(getVersion(), filter, usefulGramSet);
filter = new EmptySpaceFilter(filter);
return new TokenStreamComponents(source,filter);
};
};

我的分词器正在生成克,然后换行符被剪切,所有大小写都降低。之后,我只希望我认为“有用”的克应该出现在索引中,该过滤器会消除无用的克。最后,它过滤掉完全由空白空间组成的克。

根据我持有的数据集,此顺序生成 316 个索引术语。但是如果我改变过滤器的顺序;

analyzer = new Analyzer(){ 
@Override
protected TokenStreamComponents createComponents(String fieldName){
AttributeFactory factory = AttributeFactory.DEFAULT_ATTRIBUTE_FACTORY;
Tokenizer source = new NGramTokenizer(factory,3,10);
TokenStream filter = new UsefulGrams(getVersion(), source, usefulGramSet);
filter = new NewlineFilter(filter);
filter = new EmptySpaceFilter(filter);
filter = new LowerCaseFilter(filter);
return new TokenStreamComponents(source,filter);
};
};

这会产生 350 个索引术语。请注意,“第一个”过滤器必须使用 SOURCE TOKENIZER,但其他过滤器使用 FILTER TOKENSTREAM。如果我将 SOURCE 放入每个参数中,它会给出与“addsuppression”相关的警告。

我的问题是,应用这些过滤器的顺序应该是什么?我想应用所有这些(全部小写,只是我选择的术语,没有空克,没有换行符),不会认为这会被任何东西改变,显然它会改变。

最佳答案

是的,顺序很重要。过滤器按顺序应用于文本。

当一个过滤器的操作会影响另一个过滤器的结果时,这一点很重要。对于词干分析器来说,这种情况很容易发生。

如果我有一个 SynonymFilter sith 同义词(viking -> seafarer)和一个 EnglishStemFilter,那么 viking 最终将是

  • 同义词过滤器:维京 -> 海员
  • EnglishStemFilter:seafarer -> seafar

如果我将词干分析器放在 SynonymFilter 之前:

  • EnglishStemFilter: viking -> vike
  • 同义词过滤器:vike(无效)

至于您的分析仪的正确排序,我不知道。主要问题似乎是在哪里放置 UsefulGrams 过滤器,我不知道它实际上是做什么的。

关于java - Apache Lucene中 "order of applying filters"背后的逻辑是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37375813/

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