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

Pandas DataFrame调用underthesea的word_tokenize分词报错如何解决

错误产生原因
  • 核心原因是Review列存在缺失值,pandas读取csv文件时默认将空值识别为NaN,属于浮点型数据。而underthesea的word_tokenize方法会默认对输入文本执行decode转码操作,浮点型数据不具备decode方法,因此触发该AttributeError报错。
  • 次要场景为Review列混杂了非字符串类型的数值内容,比如纯数字的评论被pandas自动识别为整型/浮点型,同样会触发该报错。
解决方法

步骤1:排查异常值分布

先执行以下代码确认Review列的异常值情况:

# 查看列中缺失值总数
print(df['Review'].isna().sum())
# 查看列内所有值的类型分布
print(df['Review'].apply(type).value_counts())

步骤2:选择适配的处理方案

你可以根据业务需求从以下方案中选择:

  • 方案1:删除异常数据行
    适合对数据量要求不高、无效评论无分析价值的场景,代码如下:
    # 仅保留Review列为字符串类型的有效行
    df = df[df['Review'].apply(lambda x: isinstance(x, str))].reset_index(drop=True)
    # 执行分词
    df['review_token'] = df['Review'].apply(word_tokenize)
    
  • 方案2:异常值替换为空字符串
    适合需要保留所有原始行的场景,代码如下:
    # 所有非字符串内容统一转为空字符串
    df['Review'] = df['Review'].apply(lambda x: x if isinstance(x, str) else '')
    # 执行分词
    df['review_token'] = df['Review'].apply(word_tokenize)
    
  • 方案3:增加分词异常捕获逻辑
    适合数据类型混杂、不确定会触发什么异常的场景,避免单条数据异常导致全量任务终止:
    def safe_tokenize(text):
        try:
            return word_tokenize(text)
        except (AttributeError, TypeError):
            # 异常情况返回空的分词列表
            return []
    
    df['review_token'] = df['Review'].apply(safe_tokenize)
    

内容的提问来源于stack exchange,提问作者Lê Phương Oanh Nguyễn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:36:03