Ожидаемая строка или байтоподобный объект Ошибка - PullRequest
0 голосов
/ 08 декабря 2018
 from nltk import word_tokenize, sent_tokenize
 text = data.loc[:, "text"]
 tokenizer = word_tokenize((text))
 print(tokenizer)

Я пытаюсь выполнить токенайзер слова для определенного столбца в наборе данных, и я вырезал столбец и передал его в объект word_tokenizer, но когда я пытаюсь напечатать слова, которые я получаю "Ожидаемая строка илиБайт как объект Ошибка ".

1 Ответ

0 голосов
/ 08 декабря 2018

давайте предположим, что это dataframe

data = pd.DataFrame({'text':['some thing', 'word', 'some more text']})

тогда, когда вы запустите свой скрипт, вы должны получить ошибку, потому что вы пропускаете серию, а не строку ...

text = data.loc[:, "text"]
tokenizer = word_tokenize(text)
print(tokenizer)

TypeError: ожидаемая строка или байтовоподобный объект

word_tokenize будет принимать строки, поэтому word_tokenize('some text') будет работать.поэтому вам нужно перебрать вашу серию:

text = data.loc[:, "text"]
tokenizer = [word_tokenize(text[i]) for i in range(len(text))]
print(tokenizer)

[['some', 'thing'], ['word'], ['some', 'more', 'text']]

, если вы все еще получаете ошибку типа, тогда, скорее всего, не каждое значение в data['text'] является строкой.Давайте предположим, что этот фрейм данных теперь:

data = pd.DataFrame({'text':['some thing', 'word', 'some more text', 1]})

выполнение понимания списка на этом фрейме данных не будет работать, потому что вы пытаетесь передать int в word_tokenize

, однако, если вы измените вседля строки это должно работать:

data = pd.DataFrame({'text':['some thing', 'word', 'some more text', 1]})
data['text'] = data['text'].astype(str)

text = data.loc[:, "text"]
tokenizer = [word_tokenize(text[i]) for i in range(len(text))]
print(tokenizer)

[['some', 'thing'], ['word'], ['some', 'more', 'text'], ['1']]

вы проверяете свои типы по print([type(text[i]) for i in range(len(text))])

...