You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pandas Series传入word_tokenize触发TypeError类型报错问题

TypeError: expected string or bytes-like object:存储字符串数据的变量为何显示为不同类型?

问题复现

完成依赖库导入、数据集加载的前置准备后,执行如下代码:

import pandas as pd
from nltk.tokenize import word_tokenize

data = pd.read_csv("/content/gdrive/MyDrive/Data/tripadvisor_hotel_reviews.csv")
reviews = data['Review'].str.lower()

# 类型检查
print(reviews)
print(type('Review'))
print(type(reviews))

运行后输出如下:

0        nice hotel expensive parking got good deal sta...
1        ok nothing special charge diamond member hilto...
2        nice rooms not 4* experience hotel monaco seat...
3        unique, great stay, wonderful time hotel monac...
4        great stay great stay, went seahawk game aweso...
                               ...                        
20486    best kept secret 3rd time staying charm, not 5...
20487    great location price view hotel great quick pl...
20488    ok just looks nice modern outside, desk staff ...
20489    hotel theft ruined vacation hotel opened sept ...
20490    people talking, ca n't believe excellent ratin...
Name: Review, Length: 20491, dtype: object
<class 'str'>
<class 'pandas.core.series.Series'>

后续执行分词代码:

word_tokenize(reviews)

触发如下报错:

TypeError: expected string or bytes-like object

报错堆栈指向punkt分词器内部的正则匹配逻辑,无法在传入对象上执行finditer操作。

原因分析

  • type('Review')返回str是因为传入的参数是字符串字面量'Review',也就是DataFrame的列名字符串本身,和列中存储的评论数据没有任何关系。
  • data['Review'].str.lower()返回的不是单个字符串,是pandas.core.series.Series类型的一维列对象,里面按行存储了20491条独立的字符串评论,是集合类型的容器,不是单个字符串值。
  • NLTK的word_tokenize函数仅支持传入单个字符串或字节类型的文本作为输入,直接传入Series容器时,函数无法识别容器结构,自然抛出类型错误。

解决方案

根据分词需求二选一即可:

  • 对每条评论单独分词,得到逐行分词后的结果:使用Series的apply方法逐元素调用分词函数
    tokenized_reviews = reviews.apply(word_tokenize)
    
  • 需要把所有评论合并为单个长文本做整体分词:先把Series转为列表再拼接为单个字符串后传入
    all_reviews_text = ' '.join(reviews.tolist())
    tokenized_result = word_tokenize(all_reviews_text)
    

内容的提问来源于stack exchange,提问作者Mariangel Ibarra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 21:21:26