本节你会学到
- 说清楚「中文分词与停用词:让模型先读懂文本边界」解决的核心问题
- 知道它在「文本分类项目(35~42)」中的位置
- 把 分类与回归、机器学习、监督学习 这些关键词联系起来
理解中文分词为什么重要,停用词应该怎么用,以及在文本分类项目里如何把句子切成可建模的词。
学习路线:文本分类项目(35~42) · 第 36 课
重新拆解中文文本分类链路,从编码清洗、分词、向量化、评估、保存一路做到演示页面。
学完本阶段你能做到:从一份原始中文文本出发,独立完成清洗、分词、向量化、训练、评估、保存和演示页面,并能解释每个环节为什么这么做。
推荐读法:如果已经吃透第 19-20 课,可按薄弱环节跳读;否则建议顺序阅读。
查看完整阶段 · 8 篇先看目标,再带着问题读正文。读完后用练习确认自己真的理解了。
项目文要先说清数据流。输入通常是原始数据或上一步结果,输出必须能被下一步稳定复用。
优先排查预处理是否一致,例如分词、TF-IDF 词表、标签映射、标准化器是否沿用训练阶段的同一套对象。
因为真实项目还要看数据质量、错误样本、部署入口、复用方式和失败边界。
上一课我们把中文文本分类项目的数据流讲清楚了。现在进入第一步真正的文本处理:中文分词。
英文句子天然有空格,例如:
machine learning is useful
中文句子没有天然空格:
机器学习很有用
模型不能直接理解“这一整串字”里哪些部分是词。分词的作用就是先把句子切成更有意义的单位。
分词就是把句子切成词。
例如:
我喜欢机器学习
可以切成:
我 / 喜欢 / 机器学习
也可能切成:
我 / 喜欢 / 机器 / 学习
这两个结果都不是完全离谱,但对模型来说含义不一样。如果“机器学习”是一个整体概念,把它切开可能会损失信息。
中文分词难在三个地方。
第一,词边界不明显。中文没有空格,模型不知道哪里该断。
第二,存在歧义。比如:
南京市长江大桥
可以理解成“南京市 / 长江大桥”,也可能被错误切成“南京 / 市长 / 江大桥”。
第三,领域词很多。比如 AI 学习笔记里会有:
随机森林 / 交叉验证 / 梯度下降 / 文本分类
通用分词工具不一定知道这些词应该连在一起。
入门阶段可以先用 jieba。
import jieba
text = "我正在学习中文文本分类"
words = jieba.lcut(text)
print(words)
可能得到:
["我", "正在", "学习", "中文", "文本", "分类"]
jieba.lcut 会直接返回一个列表,后面可以继续做停用词过滤、词频统计、TF-IDF 特征提取。
如果项目里有很多领域词,最好加自定义词。
jieba.add_word("随机森林")
jieba.add_word("交叉验证")
jieba.add_word("文本分类")
这样可以减少被错误切开的情况。
例如:
jieba.lcut("随机森林适合做文本分类吗")
更希望得到:
["随机森林", "适合", "做", "文本分类", "吗"]
而不是把重要概念拆得太碎。
停用词是指在很多文本里频繁出现,但对分类帮助不大的词。
常见例子:
的、了、是、在、和、也、就、都、吗、吧
如果我们要判断文本主题,这些词往往贡献很小。把它们去掉,可以让特征更集中。
例如:
这个功能真的很好用
分词后:
这个 / 功能 / 真的 / 很 / 好用
去掉停用词后可能变成:
功能 / 好用
模型更容易抓住重点。
停用词不是越多越好。有些词在某些任务里很重要。
比如情感分类中:
不好用
如果把“不”删掉,只剩下“好用”,意思就完全反了。
再比如:
没有收到验证码
“没有”对分类非常关键,不能轻易删除。
所以停用词表要根据任务调整。通用停用词表只能作为起点,不能直接无脑使用。
可以先写一个简单版本:
import jieba
stopwords = {"的", "了", "是", "在", "和", "也"}
def tokenize(text):
words = jieba.lcut(text)
words = [w.strip() for w in words if w.strip()]
words = [w for w in words if w not in stopwords]
return words
print(tokenize("这个功能真的很好用"))
这个函数做了三件事:
后面做 TF-IDF 时,就可以把它接入特征提取流程。
分词不是写完代码就结束。你需要抽样看结果。
重点检查:
| 检查点 | 说明 |
|---|---|
| 领域词有没有被切开 | 比如“交叉验证”“文本分类” |
| 否定词有没有被误删 | 比如“不”“没有”“无法” |
| 无意义符号有没有保留太多 | 比如表情、链接、乱码 |
| 单字词是否过多 | 过多单字可能让特征变稀碎 |
如果分词结果本身很差,后面的模型很难补救。
中文分词解决的是“词边界”问题,停用词解决的是“无效高频词”问题。
但它们都不是固定答案。真正项目里要看数据、看任务、看错分样本,再决定怎么切、怎么删、怎么保留。
下一课我们把分词后的文本变成数字:TF-IDF。
留言讨论