【问题标题】:Nltk's wordnet lemmatizer not lemmatizing all wordsNltk 的 wordnet 词形还原器没有对所有单词进行词形还原
【发布时间】:2018-01-05 03:53:14
【问题描述】:

我正在尝试对文本中的单词进行词形还原。比如'pickled'应该变成'pickle','ran'变成'run','raisins'变成'raisin'等等。

我使用nltk的WordNet Lemmatizer如下:

from nltk.stem import WordNetLemmatizer
>>> 
>>> lem = WordNetLemmatizer()
>>> print(lem.lemmatize("cats"))
cat
>>> print(lem.lemmatize("pickled"))
pickled
>>> print(lem.lemmatize("ran"))
ran

因此,您可以看到 'pickled' 和 'ran' 的输出未按预期进行。如何为这些获取'pickle' 和'run' 而不必为单词指定'v'(动词)等。

【问题讨论】:

标签: python nlp nltk wordnet lemmatization


【解决方案1】:

您可以通过在传递'v' 或'n' 参数而不传递任何内容中获取函数的最常见结果来获得名词或动词的lemmatize() 函数的基本形式。

不是直接的方法,但您可以尝试以下代码来获取名词或动词的基本形式:

def most_common(lst):
    return max(set(lst), key=lst.count)
words = ['ran','pickled','cats',"crying","died","raisins","had"]
for word in words:
    checkList=[WordNetLemmatizer().lemmatize(word,'v'),WordNetLemmatizer().lemmatize(word,'n'),WordNetLemmatizer().lemmatize(word,'n')]
    print most_common(checkList)

你得到了基本形式:

ran
pickled
cat
cry
died
raisin
had

【讨论】:

  • 正如我提到的,我不想输入'v',因为它是一个巨大的文本,我不能为每个单词都输入。或者可能有什么办法?
  • 对答案进行了更新。希望对你有用
猜你喜欢
  • 1970-01-01
  • 2013-07-15
  • 2015-09-10
  • 2014-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多