【问题标题】:wrong lemmatizing using nltk "python 3.7.4"使用 nltk“python 3.7.4”进行错误的词形还原
【发布时间】:2019-10-11 22:14:19
【问题描述】:

我正在使用 nltk lemmatizer,但每次都得到错误的结果!

>>> import nltk
>>> from nltk.stem import WordNetLemmatizer
>>> print(WordNetLemmatizer().lemmatize('loved'))
loved
>>> print(WordNetLemmatizer().lemmatize('creating'))
creating

输出是'loved'/'creating'..它应该是'love'/'create'

【问题讨论】:

    标签: nltk python-3.7 lemmatization


    【解决方案1】:

    我认为 Wordnet 的词形还原器将词性默认为名词,因此您需要告诉它您正在对动词进行词形还原。

    print(WordNetLemmatizer().lemmatize('loved', pos='v'))
    love
    print(WordNetLemmatizer().lemmatize('creating', pos='v'))
    create
    

    您使用的任何词形还原器都需要知道词性,因此它知道要应用哪些规则。虽然您拥有的两个词总是动词,但很多词都可以是动词。例如,“绘画”这个词可以是名词或动词。动词“绘画”(即……我在绘画)的引理是“绘画”。 如果您将“绘画”用作名词(即……绘画),则“绘画”是引理,因为它是名词的单数形式。

    一般来说,NLTK/Wordnet 并不是非常准确,尤其是对于不在其单词列表中的单词。我对可用的词形还原器的性能不满意,所以我创建了自己的。见Lemminflect。如果您不想使用一些常见的词形还原器,主自述文件页面还提供了一个比较。

    【讨论】:

    • 非常感谢,它工作得很好......当我对包含动词、名词、adjs 的整个文本使用 lemmatizer 时......我该怎么办??
    • 您需要先标记它,然后将标记传递给 lemmatizer(您必须将标记转换为简单的“N”、“V”或“A”)。看看nltk.org/book/ch05.html。我会推荐 Spacy 而不是 NLTK。他们让这件事变得非常容易。
    猜你喜欢
    • 1970-01-01
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    • 2018-01-05
    • 2013-07-15
    • 2015-09-10
    • 1970-01-01
    相关资源
    最近更新 更多