类型错误:lemmatize() 缺少 1 个必需的位置参数:'word

Emr*_*eYe 1 nlp machine-learning nltk

我在 csv 文件中的每一行都有一个数组,如下所示:

\n\n
[['thxx'], ['too', 'late', 'now', 'dumbass'], ['you', '\xe2\x80\x98', 're', 'so', 'dumb', '?', '?'], ['thxxx'], ['i', '\xe2\x80\x98', 'd', 'be', 'fucked']]\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我尝试将其传递给词形还原器时,如下所示:

\n\n
from nltk.stem import WordNetLemmatizer\nlemmatized_words = [WordNetLemmatizer.lemmatize(word) for word in tokened_text]\nprint(lemmatized_words)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我收到以下错误:

\n\n
TypeError: lemmatize() missing 1 required positional argument: 'word'\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是为什么?

\n\n

作为一个附带问题:在将其传递给矢量化之前,我需要执行此操作吗?我正在构建一个机器学习模型,并在 sci kit learn 中看到了 CountVectorizer 函数,但找不到任何它预先进行词形还原等的信息。

\n

yat*_*atu 6

您的代码中有一些错误:

  • WordNetLemmatizer是一个类,你需要先实例化它
  • tokened_text是一个嵌套列表,因此您需要一个嵌套列表理解来保留结构。还lemmatize期待一个字符串。

以下是您可以执行此操作的方法:

from nltk.stem import WordNetLemmatizer

wnl = WordNetLemmatizer()

lemmatized_words = [[wnl.lemmatize(word) for word in l] for l in tokened_text]
Run Code Online (Sandbox Code Playgroud)