预期字符串或字节类似对象错误

问题描述 投票:0回答:1
 from nltk import word_tokenize, sent_tokenize
 text = data.loc[:, "text"]
 tokenizer = word_tokenize((text))
 print(tokenizer)

我正在尝试在数据集上的特定列上执行单词标记化器,并且我已经将列切出并将其传递到word_tokenizer对象中,但是当我尝试打印单词时,我得到“预期字符串或字节像对象错误”。

python pandas nltk data-analysis
1个回答
1
投票

让我们假设这个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))])查看你的类型

© www.soinside.com 2019 - 2024. All rights reserved.