Ошибка типа: ожидаемый объект, подобный строке или байтам, при использовании NLTK word_tokenize

#pandas #csv

#pandas #csv

Вопрос:

Я пытаюсь импортировать файл CSV, а затем использовать NLTK для анализа текста. Файл CSV содержит несколько столбцов, но сейчас я хочу проанализировать только один столбец в этом файле пока.

Примером csv-файла является: образец данных из csv-файла

Ниже приведен код для чтения CSV-файла и использования word_tokenize:

 import pandas as pd
import nltk
#nltk.download('all')

data=pd.read_csv("Output-analysis.csv")
print (data.SAT_COMMENTS)

from nltk.tokenize import word_tokenize
tokenize_word=word_tokenize(data.SAT_COMMENTS)
print(tokenize_word)
  

Кажется, я могу без проблем прочитать и распечатать столбец SAT_Comment, но когда я пытаюсь использовать word_tokenize, он указывает, что в файле csv есть несколько строк, а затем ошибка типа: ожидаемая строка или объект, подобный байтам.

сведения об ошибке:

 Traceback (most recent call last):
  File "C:UsersRachelDesktopSAT analysisAttempts.py", line 22, in <module>
    tokenize_word=word_tokenize(data.SAT_COMMENTS)
  File "C:UsersRachelAppDataLocalProgramsPythonPython38libsite-packagesnltktokenize__init__.py", line 129, in word_tokenize
    sentences = [text] if preserve_line else sent_tokenize(text, language)
  File "C:UsersRachelAppDataLocalProgramsPythonPython38libsite-packagesnltktokenize__init__.py", line 107, in sent_tokenize
    return tokenizer.tokenize(text)
  File "C:UsersRachelAppDataLocalProgramsPythonPython38libsite-packagesnltktokenizepunkt.py", line 1272, in tokenize
    return list(self.sentences_from_text(text, realign_boundaries))
  File "C:UsersRachelAppDataLocalProgramsPythonPython38libsite-packagesnltktokenizepunkt.py", line 1326, in sentences_from_text
    return [text[s:e] for s, e in self.span_tokenize(text, realign_boundaries)]
  File "C:UsersRachelAppDataLocalProgramsPythonPython38libsite-packagesnltktokenizepunkt.py", line 1326, in <listcomp>
    return [text[s:e] for s, e in self.span_tokenize(text, realign_boundaries)]
  File "C:UsersRachelAppDataLocalProgramsPythonPython38libsite-packagesnltktokenizepunkt.py", line 1316, in span_tokenize
    for sl in slices:
  File "C:UsersRachelAppDataLocalProgramsPythonPython38libsite-packagesnltktokenizepunkt.py", line 1357, in _realign_boundaries
    for sl1, sl2 in _pair_iter(slices):
  File "C:UsersRachelAppDataLocalProgramsPythonPython38libsite-packagesnltktokenizepunkt.py", line 314, in _pair_iter
    prev = next(it)
  File "C:UsersRachelAppDataLocalProgramsPythonPython38libsite-packagesnltktokenizepunkt.py", line 1330, in _slices_from_text
    for match in self._lang_vars.period_context_re().finditer(text):
TypeError: expected string or bytes-like object
  

Есть предложения? Я знаю, что word_tokenize имеет дело с записью один раз не для строки, но я не могу понять, что здесь не так. Спасибо

Ответ №1:

Убедитесь, что в этом столбце нет NAN

 data.SAT_COMMENTS = data.SAT_COMMENTS.fillna('')