为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕工程0101907 2021-09-11 10:17:32
 from nltk import word_tokenize, sent_tokenize text = data.loc[:, "text"] tokenizer = word_tokenize((text)) print(tokenizer)我正在尝试在数据集的特定列上执行单词标记器,并且我已经切出该列并将其传递到 word_tokenizer 对象中,但是当我尝试打印单词时,我得到“预期的字符串或类似字节的对象错误”。
查看完整描述

1 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

让我们假设这个 dataframe


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

然后当你运行你的脚本时,你应该得到一个错误,因为你传递的是一个系列而不是一个字符串......


text = data.loc[:, "text"]

tokenizer = word_tokenize(text)

print(tokenizer)

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


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))])


查看完整回答
反对 回复 2021-09-11
  • 1 回答
  • 0 关注
  • 233 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号