Ошибка типа: lemmatize () отсутствует 1 обязательный позиционный аргумент: 'слово - PullRequest
1 голос
/ 11 апреля 2020

У меня есть массив для каждой строки в CSV-файле следующим образом:

[['thxx'], ['too', 'late', 'now', 'dumbass'], ['you', '‘', 're', 'so', 'dumb', '?', '?'], ['thxxx'], ['i', '‘', 'd', 'be', 'fucked']]

Когда я пытаюсь передать это лемматизатору, как это:

from nltk.stem import WordNetLemmatizer
lemmatized_words = [WordNetLemmatizer.lemmatize(word) for word in tokened_text]
print(lemmatized_words)

I получите следующую ошибку:

TypeError: lemmatize() missing 1 required positional argument: 'word'

Почему это так?

В качестве дополнительного вопроса: нужно ли это сделать перед передачей для векторизации? Я строю модель машинного обучения и видел функцию CountVectorizer в sci kit learn, но не смог заранее найти информацию о том, что она выполняет лемматизацию и т. Д.

1 Ответ

2 голосов
/ 11 апреля 2020

В вашем коде есть что-то неправильное:

  • 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]
...