1

我想知道可以使用哪个词干过滤器工厂来获取词干词的所有可能时态。

示例:如果“运行”是搜索词 -> 它必须获取所有涉及的文件的结果

run , running , runs , ran. 

反之亦然 -> 无论搜索哪个词的时态,它都必须从文件中检索所有结果。

我尝试使用POrterStemFilterFactory , snowball , kstem--> 这些似乎都没有获得预期的结果。

请帮忙 !提前致谢

谢谢,艾西瓦娅

4

2 回答 2

0

对我来说,我在 schema.xml 中使用它

<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
        <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.StopFilterFactory"
                ignoreCase="true"
                words="stopwords.txt"
                />
        <filter class="solr.WordDelimiterFilterFactory"
                protected="protwords.txt"
                generateWordParts="1"
                generateNumberParts="1"
                catenateWords="1"
                catenateNumbers="1"
                catenateAll="0"
                splitOnCaseChange="0"
                preserveOriginal="1"/>
        <filter class="solr.LengthFilterFactory" min="2" max="100" />
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
        <filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="15" />
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
      </analyzer>
      <analyzer type="query">
        <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.StopFilterFactory"
                ignoreCase="true"
                words="stopwords.txt"
                />
        <filter class="solr.WordDelimiterFilterFactory"
                protected="protwords.txt"
                generateWordParts="1"
                generateNumberParts="1"
                catenateWords="0"
                catenateNumbers="0"
                catenateAll="0"
                splitOnCaseChange="0"
                preserveOriginal="1"/>
        <filter class="solr.LengthFilterFactory" min="2" max="100" />
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
      </analyzer>
      <analyzer type="multiterm">
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.StopFilterFactory"
                ignoreCase="true"
                words="stopwords.txt"
                />
        <filter class="solr.WordDelimiterFilterFactory"
                protected="protwords.txt"
                generateWordParts="1"
                generateNumberParts="1"
                catenateWords="0"
                catenateNumbers="0"
                catenateAll="0"
                splitOnCaseChange="1"
                preserveOriginal="1"/>
        <filter class="solr.LengthFilterFactory" min="2" max="100" />
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
        <filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="25" />
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
      </analyzer>
    </fieldType>
于 2018-09-21T09:33:42.363 回答
0

不,您要的不是词干提取,而是Lemmatisation

语言学中的词形还原(或词形还原)是将单词的变形形式组合在一起的过程,以便可以将它们作为单个项目进行分析,由单词的词条或字典形式标识。

在计算语言学中,词形还原是根据单词的预期含义确定单词的词元的算法过程。与词干提取不同,词形还原取决于正确识别句子中的预期词性和单词的含义,以及围绕该句子的更大上下文,例如相邻句子甚至整个文档。因此,开发有效的词形还原算法是一个开放的研究领域。

Solr 通过多个插件支持词形还原,有些是捆绑的,有些可作为第三方插件使用。

最完整的可能是 OpenNLP lemmatizer 的插件

<filter class="solr.OpenNLPLemmatizerFilterFactory"
      dictionary="lemmas.txt"
      lemmatizerModel="en-lemmatizer.bin"/>

字典

(可选)词形还原字典文件的路径。此路径可能是绝对路径,也可能是相对于 Solr 配置目录的路径。字典文件必须编码为 UTF-8,每行一个条目,格式为 word[tab]lemma[tab]part-of-speech,例如,written[tab]write[tab]VBD。

lemmatizer模型

(可选)特定语言的 OpenNLP lemmatizer 模型文件的路径。此路径可能是绝对路径,也可能是相对于 Solr 配置目录的路径。

您可以在 github 找到用于 Elasticsearch 插件的字典

于 2018-09-21T09:39:57.023 回答