#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('')