目录
一、引言
当你爬取到大量用户评论时,想快速知道大家在关注什么?却不知道如何提炼重点?其实,只要掌握「文本分词」这招都能轻松解决。今天就用一个简单的案例,带大家看看文本分词是怎么把杂乱的文本 “变废为宝” 的 —— 从评论里,挖出核心话题、高频词、给每个词分词性!
二、文本分词是什么
文本分词就是把一段连续的文本,拆分成一个个带有意义的词语。
比如:“我爱吃苹果”经过分词后会变成 “我 / 爱 / 吃 / 苹果”。
为啥中文需要分词?因为中文不像英文有空格分隔,“我爱吃苹果” 既可以是 “我 / 爱 / 吃 / 苹果”,也可能被误读为 “我 / 爱吃 / 苹果”,必须通过分词明确词语边界,才能进行后续分析。
三、实战案例
01、准备工具
分词不是瞎拆的,得有 “规则” 才行。这次用到了两个关键文件:
停用词表(cn_stopwords.txt):过滤掉 “的”、“是”、“在” 等这种没实际意义的虚词,避免干扰结果。
自定义词典(清华分词词典.txt):能提前定义专业术语(比如 “AIGC”、“智慧农业”),确保这些词不被拆错(比如 “AIGC” 不会被分成 “A/I/G/C”)。可以根据行业需要增加自定义词典里的词语。
02、文本分词
用 Python 的jieba库(中文分词神器)对每条评论进行处理:
比如评论 “中国 AI 医疗,2016 年就开始研发和投入了”,会被拆成 “中国”“AI”“医疗”“2016 年”“开始”“研发”“投入”。
(这里自动跳过了停用词,比如 “就”“和” 不会出现在结果里~)
03、词频词性
分词后还能做两件事:
(1)词频统计:算每个词出现的次数,找出热门话题
(2)词性标注:给每个词贴标签(比如 “AI” 是英文词,“研发” 是动词,“智能手机” 是名词)
四、分词结果
01、高频词告诉你大家在聊什么
“AI” 出现了 4 次,是绝对的核心话题
“研发”“人工”“智能手机”“食品工业” 各出现 2 次,说明讨论围绕 AI 的研发、应用场景(比如替代人工、和智能手机结合)展开
02、词性标注帮你理清句子结构
名词(n)最多:“医疗”“行业”“劳动力” 等,都是讨论的内容;动词(v)其次:“投入”“打压”“取代” 等,体现了动作和趋势;还有英文词(eng):“AI”“AIGC”,说明这些概念是讨论的重点。
五、代码展示
import jieba
import pandas as pd
import codecs # Python编#解码器(codec)库
import jieba.posseg as psegfrom collections
import Counter
# 读取 Excel 文件
data = pd.read_excel('测试.xlsx')#修改成文件所在路径!!!
a = data.head()
# print(a)
# 定义停用词文件路径
stop_words_file = 'cn_stopwords.txt'
# 定义自定义中文词典文件路径
custom_dict_file = '清华分词词典.txt'
# 读取停用词文件
with codecs.open(stop_words_file, 'r', 'utf-8') as f:
stop_words = [line.strip()
for line in f.readlines()]
# print(stop_words)
# 读取自定义词典文件
with codecs.open(custom_dict_file, 'r', 'utf-8') as f:
custom_dict = [line.strip()
for line in f.readlines()]
# print(custom_dict)
# 对文本列进行分词
text = data['评论'].valuesseg_list = []
# 定义一个空列表# 加载自定义词典,只需加载一次jieba.load_userdict(custom_dict_file)
for text_item in text:
# 将数据转换为字符串类型
text_item = str(text_item)
# 进行分词,并去除停用词
seg = [word
for word in jieba.cut(text_item)
if word not in stop_words]
seg_list.extend(seg) # 将分词结果添加到列表中
# 输出分词结果
for word in seg_list:
print(word)
seg_word = []
for word in seg_list:
seg_word.append({'分词结果': word})
for word in seg_word:
print(word)
df = pd.DataFrame(seg_word)
df.to_excel('分词结果.xlsx', index=False) # 不导出索引列
六、总结
最后分享两个实用技巧,亲测能让分词更靠谱:
1.自定义词典要更新:如果涉及专业领域(比如 “智慧农业”),提前把术语放进词典,避免被拆错;
2.停用词表按需调整:比如分析情感时,“开心”“讨厌” 这类词不能当停用词删掉,但 “嗯”“哦” 可以去掉。
关注【小小科研】公众号,后台回复:文本分词
免费获取分词小工具!
这是我们文本建模的第一期:“文本分词”。
关注公众号【小小科研】下一期我们将手把手教大家怎么用分词后的结果进行情感分析,敬请期待!