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

如何在Pandas DataFrame中提取唯一单词?生成词袋模型遇异常内容

解决词袋模型提取唯一单词时的异常内容问题

嘿,我懂你碰到的麻烦——用to_string()合并评论文本后,提取出的单词里混进了索引数字、换行符和省略号,对吧?这是因为Series.to_string()根本不是用来合并文本内容的工具,它的作用是把整个Series转换成带行索引、换行符,甚至长文本自动截断的格式化字符串,所以才会出现fel...\n1093这种奇怪的内容。

下面给你几个靠谱的解决步骤:

第一步:正确合并所有评论文本

要把review_body列的所有文本合并成一个干净的大字符串,应该用这两种方法之一,还能自动处理空值:

方法1:用str.cat()(Pandas原生方法)

# 先过滤空值,再用空格拼接所有文本
all_text = df['review_body'].dropna().str.cat(sep=' ')

方法2:用join()结合tolist()

# 同样先过滤空值,转成列表后拼接
all_text = ' '.join(df['review_body'].dropna().tolist())

这两种方法都不会混入索引或截断标记,得到的就是纯评论内容拼接的字符串。

第二步:提取干净的唯一单词

拿到干净的文本后,还需要做一些基础预处理(不然会把Hello和hello当成不同单词,或者把带标点的good!和good分开):

import string

# 1. 转成小写,避免大小写差异
# 2. 去掉所有标点符号
clean_text = all_text.lower().translate(str.maketrans('', '', string.punctuation))

# 按空格分词
words_list = clean_text.split()

# 转成集合去重,再转回列表
unique_words = list(set(words_list))

进阶优化(可选)

如果你的评论里有很多口语化表达(比如don't、can't),或者有连字符单词(比如state-of-the-art),可以用NLTK的专业分词工具来处理:

from nltk.tokenize import word_tokenize
import string

# 先预处理
clean_text = all_text.lower().translate(str.maketrans('', '', string.punctuation))
# 用word_tokenize分词,比split()更智能
words_list = word_tokenize(clean_text)
unique_words = list(set(words_list))

这样处理出来的唯一单词就完全符合词袋模型的需求啦!

内容的提问来源于stack exchange,提问作者Luis Ramon Ramirez Rodriguez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:32:55