【问题标题】:Lucene Porter Stemmer - get original unstemmed wordLucene Porter Stemmer - 获取原始的无词干词
【发布时间】:2021-12-27 11:15:23
【问题描述】:

我已经弄清楚了如何使用 Lucene 的 Porter Stemmer,但还想检索原始的、未提取词干的词。所以,为此,我在创建PorterStemFilter之前给TokenStream添加了一个CharTermAttribute,如下:

Analyzer analyzer = new StandardAnalyzer();
TokenStream original = analyzer.tokenStream("StandardTokenStream", new StringReader(inputText));
TokenStream stemmed = new PorterStemFilter(original);
CharTermAttribute originalWordAttribute = original.addAttribute(CharTermAttribute.class);
CharTermAttribute stemmedWordAttribute = stemmed.addAttribute(CharTermAttribute.class);

stemmed.reset();
while (stemmed.incrementToken()) {
    System.out.println(stemmedWordAttribute+" "+originalWordAttribute);
}

不幸的是,这两个属性都返回了词干。 有没有办法也能得到原词?

【问题讨论】:

    标签: lucene stemming


    【解决方案1】:

    Lucene 的PorterStemFilter 可以与Lucene 的KeywordRepeatFilter 组合使用。 Porter Stemmer 使用它来提供词干和非词干标记。

    修改你的方法:

    Analyzer analyzer = new StandardAnalyzer();
    TokenStream original = analyzer.tokenStream("StandardTokenStream", new StringReader(inputText));
    TokenStream repeated = new KeywordRepeatFilter(original);
    TokenStream stemmed = new PorterStemFilter(repeated);
    CharTermAttribute stemmedWordAttribute = stemmed.addAttribute(CharTermAttribute.class);
    
    stemmed.reset();
    while (stemmed.incrementToken()) {
        String originalWord = stemmedWordAttribute.toString();
        stemmed.incrementToken();
        String stemmedWord = stemmedWordAttribute.toString();
        System.out.println(originalWord + " " + stemmedWord);
    }
    

    这是相当粗略的,但显示了方法。

    示例输入:

    testing giraffe book passing
    

    结果输出:

    testing test
    giraffe giraff
    book book
    passing pass
    

    对于每对标记,如果第二个与第一个匹配 (book book),则没有词干。


    通常,您可以将其与 RemoveDuplicatesTokenFilter 一起使用以删除重复的 book 术语 - 但如果您这样做,我认为跟踪词干/非词干对变得更加困难 - 所以对于您的具体情况,我没有使用重复数据删除过滤器。

    【讨论】:

      猜你喜欢
      • 2013-03-03
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 2021-07-07
      • 1970-01-01
      • 1970-01-01
      • 2021-12-21
      相关资源
      最近更新 更多