文本分类(机器学习方法)
文本分类实现步骤:
- 定义阶段:定义数据以及分类体系,具体分为哪些类别,需要哪些数据
- 数据预处理:对文档做分词、去停用词等准备工作
- 数据提取特征:对文档矩阵进行降维、提取训练集中最有用的特征
- 模型训练阶段:选择具体的分类模型以及算法,训练出文本分类器
- 评测阶段:在测试集上测试并评价分类器的性能
- 应用阶段:应用性能最高的分类模型对待分类文档进行分类
特征提取的几种经典方法:
- Bag-of-words:最原始的特征集,一个单词/分词就是一个特征。往往会导致一个数据集有上万个特征,有一些的简单指标可以筛选掉一些对分类没帮助的词语,如去停用词、计算互信息熵等。但总的来说,特征维度都很大,每个特征的信息量太小
- 统计特征:TF-IDF方法。主要是用词汇的统计特征来作为特征集,每个特征都有其物理意义,看起来会比 bag-of-word 好,实际效果差不多
- N-gram:一种考虑词汇顺序的模型,也就是 N 阶 Markov 链,每个样本转移成转移概率矩阵,有不错的效果
分类器方法:
-
朴素贝叶斯(Naive Bayesian, NB)
对于给定的训练集,首先基于特征条件独立学习输入、输出的联合概率分布 P(X, Y),然后基于此模型,对给定的输入 x ,利用贝叶斯定理求出后验概率最大的输出 y
假设P(X, Y)独立分布,通过训练集合学习联合概率分布 P(X, Y)
根据上面的等式可得贝叶斯理论的一般形式
分母是根据全概率公式得到
因此,朴素贝叶斯可以表示为:
为了简化计算,可以将相同的分母去掉
优点:实现简单,学习与预测的效率都很高
缺点:分类的性能不一定很高
-
逻辑回归(Logistic Regression, lR)
一种对数线性模型,它的输出是一个概率,而不是一个确切的类别
逻辑斯蒂函数:
图像:
对于给定数据集,应用极大似然估计方法估计模型参数
优点:实现简单、分类时计算量小、速度快、存储资源低等
缺点:容易欠拟合、准确率不高等
-
支持向量机(Support Vector Machine, SVM)
在特征空间中寻找到一个尽可能将两个数据集合分开的超平面(hyper-plane)
对于线性不可分的问题,需要引入核函数,将问题转换到高维空间中
优点:可用于线性/非线性分类,也可以用于回归;低泛化误差;容易解释;计算复杂度低;推导过程优美
缺点:对参数和核函数的选择敏感
中文垃圾邮件分类实战
数据集分为:ham_data.txt 和 Spam.data.txt , 对应为 正常邮件和垃圾邮件
其中每行代表着一个邮件
主要过程为:
- 数据提取
- 对数据进行归整化和预处理
- 提取特征(tfidf 和 词袋模型)
- 训练分类器
- 基于词袋模型的多项式朴素贝叶斯
- 基于词袋模型的逻辑回归
- 基于词袋模型的支持向量机
- 基于 tfidf 的多项式朴素贝叶斯
- 基于 tfidf 的逻辑回归
- 基于 tfidf 的支持向量机
- 用 准确率(Precision)、召回率(Recall)、F1测度 来评价模型
代码放在 GitHub 上了
https://github.com/CuveeFer/my-nlp
结果:
Now is better than never
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!