是否有一种简单且标准的方法来自定义 Lucene 雪球词干提取器?

Is there an easy and standard way to customize Lucene snowball stemmer?

我正在使用 Lucene 7.x 和 ItalianStemmer。看过ItalianStemmer class 的代码,好像理解了很久。所以,我正在寻找一种快速(可能是标准)的方式来自定义意大利语词干分析器,而无需扩展 ItalianStemmer 或 SnowballProgram,因为我没有几天时间。

关键是我不明白为什么 "saluto"(问候语)这个名字的词干是 "sal"。它应该被词干化为 "salut",因为动词 "salutare"(问候)被词干化为 "salut"。此外,"sala"(房间)和"sale"(房间)也被词干化为"sal",这令人困惑,因为它们具有不同的含义。

标准方法是复制源代码,然后创建您自己的。

词干提取是一个基于规则的启发式过程。它旨在生成虽然不完美但通常足以促进搜索的词干。它没有可供您修改的变位词及其词干词典。 -uto 是意大利滚雪球词干分析器从单词中删除的动词后缀之一,as described here。您可以创建自己的版本,从列表中删除该后缀,但总而言之,您可能会创建比解决的问题更多的问题。

一个 returns 正确词根的工具通常被称为 lemmatizer,我不相信 Lucene 有任何开箱即用的工具。形态分析往往更慢、更复杂。如果它对您的用例很重要,您可能需要查找意大利语词形还原器,并将其用于自定义过滤器,或者在将文本传递给分析器之前对其进行预处理。