为什么NLTK库中有不同的Lemmatizers?

Abh*_*hek 5 python nlp nltk lemmatization

>> from nltk.stem import WordNetLemmatizer as lm1
>> from nltk import WordNetLemmatizer as lm2
>> from nltk.stem.wordnet import WordNetLemmatizer as lm3
Run Code Online (Sandbox Code Playgroud)

对我来说,这三个作品都是以同样的方式,但只是为了确认,它们是否提供了不同的东西?

har*_*968 5

不,他们没有什么不同,他们都是一样的.

from nltk.stem import WordNetLemmatizer as lm1
from nltk import WordNetLemmatizer as lm2
from nltk.stem.wordnet import WordNetLemmatizer as lm3

lm1 == lm2 
>>> True


lm2 == lm3 
>>> True


lm1 == lm3 
>>> True
Run Code Online (Sandbox Code Playgroud)

erip纠正为什么会发生这种情况是因为:

这个类(WordNetLemmatizer)是origanlly写在nltk.stem.wordnet所以你可以做from nltk.stem.wordnet import WordNetLemmatizer as lm3

哪个也在nltk __init__.py文件中导入,所以你可以这样做from nltk import WordNetLemmatizer as lm2

并且还在__init__.py nltk.stem模块中导入,以便您可以执行此操作from nltk.stem import WordNetLemmatizer as lm1

  • 你的最后一点是不正确的.NLTK使用`__init __.py`来隐藏它.与语言导入机制的效率无关.见[这里](https://github.com/nltk/nltk/blob/develop/nltk/__init__.py#L137),[这里](https://github.com/nltk/nltk/blob/develop/ nltk/stem/__ init __.py#L30)和[here](https://github.com/nltk/nltk/blob/develop/nltk/stem/wordnet.py#L15). (3认同)