6

I need to find a common root word matched for all related words for a keyword extractor.

How to convert words into the same root using the python nltk lemmatizer?

  • Eg:
    1. generalized, generalization -> general
    2. optimal, optimized -> optimize (maybe)
    3. configure, configuration, configured -> configure

The python nltk lemmatizer gives 'generalize', for 'generalized' and 'generalizing' when part of speech(pos) tag parameter is used but not for 'generalization'.

Is there a way to do this?

4

1 回答 1

12

使用 SnowballStemmer:

>>> from nltk.stem.snowball import SnowballStemmer
>>> stemmer = SnowballStemmer("english")
>>> print(stemmer.stem("generalized"))
general
>>> print(stemmer.stem("generalization"))
general

注意:词形还原与词干密切相关。不同之处在于词干分析器在不了解上下文的情况下对单个单词进行操作,因此无法根据词性区分具有不同含义的单词。

我在 lemmatizers 中看到的一个普遍问题是,它将更大的单词识别为lemma s。

示例:在 WordNet Lemmatizer(在 NLTK 中检查)中,

  • 概括 => 概括
  • 泛化 => 泛化
  • 概括 => 概括

在上述情况下,POS 标签没有作为输入给出,所以它总是被认为是名词

于 2016-09-03T05:15:46.607 回答