Python ошибка: ошибка типа: ожидаемая строка или байтовоподобный объект - PullRequest
2 голосов
/ 17 марта 2020

В настоящее время я работаю над проектом анализа настроений, используя nltk в python. Я не могу заставить свой скрипт передавать строки текста из моего csv для выполнения токенизации. Однако, если я передаю текст по одной записи за раз, он работает нормально. Я получаю одну постоянную ошибку: «TypeError: ожидаемая строка или байтовоподобный объект», когда я пытаюсь передать весь csv. Вот напечатанный фрейм данных и код python, который я использую. Любая помощь в решении этой проблемы была бы полезна.

                              abstract
0    Allergic diseases are often triggered by envir...
1    omal lymphopoietin (TSLP) has important roles ...
2    of atrial premature beats, and a TSLP was high...
3     deposition may play an important role in the ...
4    ted by TsPLP was higher than that mediated by ...
5    nal Stat5 transcription factor in that TSLP st...
data = pd.read_csv('text.csv', sep=';', encoding = 'utf-8')
x = data.loc[:, 'abstract']
print(x.head())
tokens = nltk.word_tokenize(x)
print(tokens)

Прилагается ошибка трассировки полного стека. РЕДАКТИРОВАТЬ: вывести заявление

enter image description here

РЕДАКТИРОВАТЬ: Выход

enter image description here

Ответы [ 2 ]

1 голос
/ 17 марта 2020

В документации nltk приведен пример использования nltk.word_tokenize, где вы можете заметить, что "предложение" - это string.

В вашей ситуации x - это фрейм данных Series (из строк), который необходимо преобразовать в строку перед передачей ее в nltk.word_tokenize.

Один из способов справиться с этим - создать nltk «предложение» из x:

x = data.loc[:, 'abstract']
sentence=' '.join(x)
tokens = nltk.word_tokenize(sentence)

РЕДАКТИРОВАТЬ: Попробуйте сделать это в соответствии с дальнейшими комментариями (помните, что это будет Series токенов, к которым следует обращаться соответственно):

tokens=x.apply(lambda sentence: nltk.word_tokenize(sentence))
1 голос
/ 17 марта 2020

токены = [nltk.word_tokenize (line) для строки в x]

...