我有一个数组,包含CSV文件中每一行的数据,如下所示:
[['thxx'], ['too', 'late', 'now', 'dumbass'], ['you', '‘', 're', 'so', 'dumb', '?', '?'], ['thxxx'], ['i', '‘', 'd', 'be', 'fucked']]
当我尝试像这样传递给词形还原器时:
from nltk.stem import WordNetLemmatizerlemmatized_words = [WordNetLemmatizer.lemmatize(word) for word in tokened_text]print(lemmatized_words)
我得到了以下错误:
TypeError: lemmatize() 缺少一个必需的位置参数: 'word'
这是为什么呢?
作为一个附带问题:在传递给向量化之前我需要这样做吗?我正在构建一个机器学习模型,并且看到了scikit-learn中的CountVectorizer函数,但没有找到任何信息表明它也会进行词形还原等操作。
回答:
你的代码中有一些问题:
WordNetLemmatizer
是一个类,你需要先实例化它tokened_text
是一个嵌套列表,因此你需要使用嵌套的列表推导式来保留结构。此外,lemmatize
期望接收一个字符串。
你可以这样做:
from nltk.stem import WordNetLemmatizerwnl = WordNetLemmatizer()lemmatized_words = [[wnl.lemmatize(word) for word in l] for l in tokened_text]