1 任务定义与范畴

1.1 基本概念

1.1.1 文本实例与类别标签

文本分类的核心操作对象是“文本实例”——即一段自然语言文本,可以是一句话、一段评论、一篇文章或一份文档。每个实例对应一个预定义的“类别标签”,该标签来自一个有限的、互不重叠(或允许重叠)的集合。例如,一封邮件可以被标注为“垃圾邮件”或“正常邮件”;一条新闻可被归入“体育”“科技”“娱乐”等主题之一。文本实例与类别标签之间的映射关系构成了训练和评估分类模型的基础。

1.1.2 分类粒度:二分类、多分类与多标签分类

根据类别数量的不同,文本分类可以分为以下三种粒度:

  • 二分类:类别标签只有两种(如“正例”与“反例”),是最基本的分类形式,典型应用包括垃圾邮件检测、欺诈评论识别。
  • 多分类:类别标签超过两种,且每个文本实例只能归属于一个类别。例如,将新闻分为“政治”“经济”“文化”等,一篇报道只能进入其中一个主题。
  • 多标签分类:每个文本实例可以同时拥有多个类别标签。例如,一篇讨论AI伦理的论文可能同时被标注为“计算机科学”和“哲学”。多标签分类需输出一组标签而不强制互斥。

1.2 与相关任务的关系

1.2.1 文本聚类(无监督 vs. 有监督)

文本分类与文本聚类最根本的区别在于监督信息的来源。文本分类是有监督学习,依赖大量标注好的文本-标签对来训练模型,标签的含义由人事前定义。文本聚类则是无监督学习,通过度量文本之间的相似度自动将其分组,每组并无预先定义的语义标签。简言之,分类是“给已知的类别贴标签”,聚类是“发现未知的群落”。

1.2.2 文本回归(离散 vs. 连续输出)

文本分类输出的是离散的类别标签,而文本回归输出的则是连续的数值。例如,预测一篇影评的打分(如1到5分)属于回归任务,而将影评判断为“好评”“中性”“差评”则属于分类任务。两者在模型架构和损失函数上存在本质差异。

2 传统方法

2.1 基于规则的方法

2.1.1 手工规则与正则表达式

在机器学习普及之前,文本分类主要依赖人工构建的规则。领域专家通过分析文本特征,编写一系列条件判断语句或正则表达式来识别类别。例如,在垃圾邮件过滤中,规则可以写成“若邮件包含‘中奖’且不含‘退订’,则判为垃圾”。正则表达式则用于匹配特定的字符模式,如电话号码、邮箱后缀等。

2.1.2 专家系统的局限性

基于规则的系统虽然在某些窄领域(如法律文书的关键词匹配)中表现精确,但存在明显缺陷:

  • 可扩展性差:每增加一个新类别或新语言表达,都需要重新编写规则。
  • 维护成本高:规则之间可能冲突,且随着语言演变需持续更新。
  • 泛化能力弱:无法处理规则的未覆盖的变体,例如同义词、拼写错误或句法变化。

2.2 基于统计机器学习的方法

2.2.1 特征工程

2.2.1.1 词袋模型与TF-IDF

统计机器学习方法的第一步是将文本转换为数值向量。词袋模型是最简单的表示法:统计每个单词在文档中出现的次数,构成一个高维稀疏向量。TF-IDF(词频-逆文档频率)在词袋模型基础上引入权重机制,降低常见词(如“的”“是”)的重要性,同时提高那些在少数文档中频繁出现的词的重要性。公式为:\( \text{TF-IDF}(t,d) = \text{TF}(t,d) \times \log\left(\frac{N}{\text{DF}(t)}\right) \),其中 \( \text{DF}(t) \) 是包含词 \( t \) 的文档数。

2.2.1.2 N-gram特征

N-gram将连续的 \( N \) 个词或字符视为一个特征单元,从而捕捉局部词序信息。例如,二元组(bigram)“垃圾邮件”作为整体特征,比单独考虑“垃圾”和“邮件”更具区分力。N-gram的 \( N \) 值通常取1~3,过大会导致特征维度爆炸且稀疏性加剧。

2.2.2 常用分类器

2.2.2.1 朴素贝叶斯

朴素贝叶斯是一种基于贝叶斯定理的概率分类器,假设特征之间条件独立。尽管“朴素”假设在实际文本中往往不成立(例如单词间存在相关性),但该算法训练速度快,在小样本场景下表现稳健。常用于垃圾邮件过滤和情感极性判断。

2.2.2.2 支持向量机(SVM)

支持向量机通过寻找最大间隔超平面来划分不同类别的样本。在文本分类中,SVM配合词袋或TF-IDF特征能有效应对高维稀疏数据,且通过核技巧可处理非线性边界。SVM曾是文本分类的标杆算法,尤其在中大规模数据集上表现优异。

2.2.2.3 逻辑回归

逻辑回归利用Sigmoid函数将线性组合映射为0~1之间的概率值,输出可解释为类别置信度。它简单、可并行化,且易于引入正则化防止过拟合,是工业界最常用的线性分类器之一。对于多分类问题,常采用Softmax回归(多项逻辑回归)。

3 深度学习方法

3.1 词嵌入与表示学习

3.1.1 Word2Vec与GloVe

传统词袋模型无法捕捉词语的语义相似性。Word2Vec(2013年)通过神经网络在大量无标注语料上学习稠密、低维的语义向量,使语义相近的词在向量空间中彼此靠近。GloVe(2014年)则结合全局矩阵分解与局部上下文窗口,生成兼具全局统计和局部语义的词向量。这些预训练词向量为深度学习模型提供了良好的初始表示。

3.1.2 子词嵌入(FastText)

FastText(2016年)在Word2Vec基础上引入子词(subword)信息,将每个词表示为其字符N-gram向量的和。这一设计有效处理了未登录词(OOV)问题——即使模型从未见过某个词,也能通过其子词片段推测其语义。FastText在形态丰富的语言(如德语、土耳其语)中尤具优势。

3.2 神经网络架构

3.2.1 卷积神经网络(TextCNN)

TextCNN(2014年)将文本视为一维序列,利用多个不同大小的卷积核提取局部N-gram特征,再通过池化层整合为全局表示。该模型结构简单、计算高效,特别适合句子级分类任务(如情感分析、意图识别)。由于卷积核的并行性,训练速度快于循环神经网络。

3.2.2 循环神经网络(BiLSTM+Attention)

双向长短期记忆网络(BiLSTM)能够捕捉文本的双向上下文依赖,克服了普通RNN的长期遗忘问题。在此基础上引入注意力机制(Attention),使模型在生成最终表示时“关注”文本中对当前分类任务最重要的部分。例如,在情感分析中,模型可自动聚焦于“糟糕”“惊艳”等情感色彩强烈的词。

3.2.3 基于Transformer的模型

3.2.3.1 BERT及其变体

BERT(2018年)基于Transformer编码器,采用双向预训练策略(遮蔽语言模型+下一句预测),在大量无标注文本上学习深层的上下文感知表示。微调后,BERT在多项自然语言处理任务上刷新了纪录。其变体包括RoBERTa(更优的预训练超参数)、ALBERT(参数共享)、DistilBERT(轻量化蒸馏)等,兼顾性能与效率。

3.2.3.2 预训练-微调范式

预训练-微调(Pre-train then Fine-tune)成为深度学习文本分类的标准流程:先在通用大规模语料上预训练一个语言模型,再在特定分类任务的少量标注数据上微调全部或部分模型参数。这一范式显著降低了下游任务对标注数据的需求,且学到的词表示蕴含丰富的语言知识。

3.3 当前挑战与前沿方向

3.3.1 小样本与零样本分类

实际场景中,某些类别可能只有极少量甚至零条标注样本。小样本学习通过元学习、数据增强或原型网络等方法,让模型从少量样例中快速迁移知识。零样本分类则利用类别描述的语义嵌入(如“动物的照片”),在未见过的类别上进行推理。

3.3.2 少标签与半监督学习

在标注数据昂贵而大量无标签文本存在的场景下,半监督学习方法(如自训练、一致性正则化、伪标签)通过挖掘未标注数据中的结构信息来提升模型效果。例如,用少量标注数据训练一个教师模型,对未标注数据生成软标签,再训练学生模型。

3.3.3 多模态文本分类

文本往往与图像、音频或视频共存(如社交媒体帖子、电商商品页面)。多模态分类需融合不同模态的信息,例如将文本词向量与图像特征通过跨模态注意力机制结合,以提升分类准确性。该方向在假新闻检测、内容审核等领域尤为重要。

4 评估与指标

4.1 评估数据集与基准

4.1.1 经典数据集(如20 Newsgroups、IMDB、AG News)

文本分类领域存在一批广泛使用的基准数据集:

  • 20 Newsgroups:约20,000篇新闻,按20个主题分类,是传统多分类的经典测试集。
  • IMDB Reviews:50,000条电影评论,标签为“正面”或“负面”,是二分类情感分析的标杆。
  • AG News:约120,000篇新闻,分为“世界”“体育”“商业”“科技”四类,常用于多分类。

4.1.2 领域特定数据集(医学、法律等)

特定领域的数据集更贴近实际应用,例如:

  • 医学:MIMIC-III(临床病历分类)、PubMed 200k RCT(随机对照试验摘要分类)。
  • 法律:Legal-BERT微调数据集(如案件类型识别)。
  • 金融:FinBERT相关数据集(如财报情感分析)。

4.2 评价指标

4.2.1 准确率、精确率、召回率与F1值

  • 准确率(Accuracy):正确预测的样本数占总样本数的比例,在类别均衡时有效,但在不平衡数据中可能产生误导(例如99%为正常邮件,全判为正常邮件也可达99%准确率)。
  • 精确率(Precision):模型预测为正例的样本中真正为正例的比例,公式为 \( \frac{TP}{TP+FP} \)。
  • 召回率(Recall):真实正例中被模型正确识别的比例,公式为 \( \frac{TP}{TP+FN} \)。
  • F1值:精确率与召回率的调和平均数,公式为 \( 2 \times \frac{P \times R}{P + R} \),是最常用的综合指标。

4.2.2 宏平均与微平均

在多分类或多标签场景下,需汇总每个类别的指标:

  • 宏平均(Macro-average):先计算每个类别的指标,再取算术平均,赋予所有类别同等权重(不受类别大小影响)。
  • 微平均(Micro-average):将全局的TP、FP、FN相加,再计算指标,偏向于样本数多的类别。

4.2.3 ROC曲线与AUC

ROC曲线以假阳性率(FPR)为横轴、真阳性率(TPR)为纵轴,绘制分类器在不同阈值下的表现。AUC(曲线下面积)量化了模型的排序能力:AUC越接近1,说明模型将正例排在反例之前的概率越高。AUC对类别不平衡的敏感度较低,常用于二分类评估。

4.3 交叉验证与置信区间

为避免因一次数据划分带来的偶然性,常采用K折交叉验证(如5折或10折),将数据集随机分为K份,每次用K-1份训练、1份验证,重复K次后取指标的平均值。同时,可通过Bootstrap方法计算指标的标准差或95%置信区间,以评估模型的稳定性与统计显著性。

5 应用场景与实例

5.1 内容管理与过滤

5.1.1 垃圾邮件识别(“删掉那个中奖通知,反手一个举报”)

垃圾邮件识别是最早也最成功的文本分类应用之一。模型分析邮件正文、标题和发件人信息,自动将“恭喜您中奖啦!请点击链接领取”等可疑内容判为垃圾邮件,并将其移入垃圾箱。结合用户举报反馈,模型可持续迭代,严防钓鱼套路。

5.1.2 敏感内容检测

社交媒体和论坛中,不当言论(如仇恨言论、暴力煽动)需被及时识别并拦截。分类器可对用户发布的每条内容打上“安全”“疑似违规”“明确违规”等标签,辅助人工审核员处理,提高内容治理效率。

5.2 舆情与情感分析

5.2.1 商品评论极性判断

电商平台利用文本分类自动分析用户评论的情感极性(正面/负面/中性)。例如,“这款手机续航极佳,拍照清晰”被判为正面,“充电慢还发热”被判为负面。聚合所有评论极性可生成商品的口碑评分。

5.2.2 社交媒体情绪追踪

品牌方通过实时分析Twitter、微博等平台上的相关讨论,监测公众对某一事件的情绪走势。分类模型将每条推文标注为“喜悦”“愤怒”“悲伤”等情绪类别,帮助企业及时调整公关策略。

5.3 自动标签与知识组织

5.3.1 新闻主题分类

新闻聚合平台根据内容自动分配主题标签(“国际”“军事”“娱乐”等),实现新闻的快速归档与个性化推荐。例如,一篇关于“某型火箭发射成功”的文章会进入“科技”和“军事”两个类别。

5.3.2 论文学科划分

学术搜索引擎利用文本分类将论文自动归入计算机科学、生物学、经济学等学科。这有助于构建知识图谱、优化检索结果,并能基于学科类别推荐相关研究工作。

5.4 商业智能与客服机器人

5.4.1 用户意图识别

智能客服系统需首先判断用户的核心意图,例如是“退换货”“查询物流”还是“投诉”。分类器将用户输入的自然语言映射到预设的意图标签,从而引导后续对话流或知识库检索。

5.4.2 工单自动分派

企业内部工单系统可根据描述文本自动将任务分配给对应的部门。例如,“服务器宕机”转至IT运维,“客户未收到退款”转至财务或客服,大幅降低人工分发成本。

6 实现工具与资源

6.1 开源框架

6.1.1 Scikit-learn(传统方法)

Scikit-learn是Python生态中最常用的传统机器学习库,集成了特征提取(CountVectorizer、TfidfVectorizer)、分类器(朴素贝叶斯、SVM、逻辑回归)及评估函数。其API设计简洁,适合快速实验和基准测试。

6.1.2 Hugging Face Transformers(深度学习)

Hugging Face Transformers提供了数百种预训练语言模型的PyTorch/TensorFlow接口(如BERT、RoBERTa、GPT),并附带分词器、微调范例和模型分享平台。用户仅需几行代码即可加载一个预训练模型并进行微调,大幅降低了深度分类的入门门槛。

6.2 中文处理特殊考虑

6.2.1 分词与字符级模型

中文文本不具备天然空格分隔,因此分词是常规预处理步骤。常用分词工具有jieba、HanLP、LAC等。然而,分词错误会引入噪声,部分模型(如BERT-based)直接以字(character)为单位输入,避免了分词歧义,在细粒度分类任务中表现更好。

6.2.2 预训练模型(如BERT-wwm、RoBERTa-zh)

针对中文语境,哈工大与讯飞联合发布了BERT-wwm(全词掩码),在预训练时对整个中文词语进行掩码而非单个汉字,提升了语义理解能力。RoBERTa-zh等变体则继承了RoBERTa的动态掩码与更大batch size策略,在中文文本分类基准上取得了领先成绩。

6.3 部署与优化

6.3.1 模型压缩与量化

深度学习模型参数量巨大,直接部署到生产环境会带来高昂的推理成本。常用压缩手段包括:知识蒸馏(小模型模仿大模型输出)、权重量化(将32位浮点数转换为8位整数)、剪枝(移除冗余权重或注意力头)。例如,DistilBERT可将BERT压缩40%~60%,同时保留95%以上分类性能。

6.3.2 在线推理延迟控制

实时分类(如客服场景)对延迟敏感,需优化推理流程:批量处理(将多个请求合并推理)、使用ONNX Runtime或TensorRT加速、启用GPU推理与动态批处理。对于超低延迟需求,可将轻量模型(如FastText或TextCNN)部署在CPU上,配合缓存机制应对重复查询。

7 历史与未来展望

7.1 发展简史

7.1.1 从规则到统计再到神经网络

文本分类的发展经历了三个阶段:20世纪80年代前以手工规则为主,局限于小规模专用领域;90年代至21世纪初,统计机器学习(朴素贝叶斯、SVM)结合特征工程成为主流,实现了较高的准确率与泛化能力;2010年代中期以来,深度神经网络(TextCNN、RNN、Transformer)逐步取代传统方法,端到端地学习特征与分类器。

7.1.2 预训练时代的降临

2018年BERT的发布标志着预训练-微调范式的全面降临。此后,ELMo、GPT系列、T5、XLNet等模型相继涌现,将分类任务的性能推向新高。预训练模型使得单一模型可在多个领域快速适配,大幅降低了标注成本,成为当前工业界和学术界的事实标准。

7.2 未来趋势

7.2.1 大语言模型(LLM)作为分类器

以GPT-4、Claude、LLaMA为代表的大语言模型可直接通过指令(prompt)进行零样本或少样本分类。用户只需给模型一段文本和类别描述,即可获得分类结果,无需额外微调。这种方式的灵活性极高,但面临推理成本高、可重复性较低等挑战。未来可能出现专门针对分类任务的轻量级指令微调模型。

7.2.2 可解释性与公平性

黑箱模型在关键应用(如医疗诊断、信贷审核)中引发信任危机。可解释性研究旨在让模型同时输出决策理由,例如通过注意力权重定位关键段落,或利用LIME、SHAP等工具解释特征贡献。公平性则关注模型是否对不同群体(性别、种族、地域)产生歧视性分类,需在训练数据、评估指标和模型算法层面建立公平性约束。

7.2.3 联邦学习下的隐私保护分类

当文本数据(如医疗记录、电子邮件)涉及用户隐私时,集中收集数据训练模型可能违反法规(如GDPR)。联邦学习允许多个客户端在本地训练分类模型,仅上传模型参数(而非原始数据)到服务器进行聚合。这一方向上,差分隐私与安全多方计算进一步为参数更新添加噪声保护,平衡分类性能与隐私保护。