4、文本表示方法(一):词袋模型(Bag of Words)、TF-IDF、N-gram,以及它们的优缺点和适用场景

在NLP文本分类与意图识别任务中,文本表示是连接原始文本与机器学习模型之间的桥梁。计算机无法直接理解自然语言,必须将文本转换为数值向量。词袋模型、TF-IDF和N-gram是最经典且应用最广泛的文本表示方法,它们构成了现代文本特征工程的基石。理解这些方法的数学原理、优缺点和适用场景,是构建高效分类模型的前提。本章将系统讲解这三种方法的核心机制,并通过案例对比帮助你在实际项目中做出合理选择。

文本表示方法对比与选择路径 原始文本语料 词袋模型 (BoW) 词频统计,忽略顺序 TF-IDF 词频 × 逆文档频率 N-gram 连续N个词/字符组合 高维稀疏向量 维度=词表大小 加权稀疏向量 突出重要词,抑制常见词 上下文片段特征 保留局部词序信息 下游任务:文本分类 / 意图识别 朴素贝叶斯、逻辑回归、SVM、MLP等 选择建议:短文本/意图识别→BoW或TF-IDF+逻辑回归;长文本/主题分类→TF-IDF+N-gram;需保留词序→N-gram

4.1 词袋模型(Bag of Words)

4.1.1 核心原理

词袋模型是最直观的文本向量化方法。其核心思想是:将文本看作一个无序的词集合,忽略语法和词序,仅统计每个词在文档中出现的次数。具体实现分为三步:第一步,构建词表(Vocabulary),即语料中所有不重复词的集合;第二步,为每个文档创建一个与词表等长的向量;第三步,遍历文档中的每个词,在向量对应位置累加计数。

例如,两句话“我喜欢自然语言处理”和“自然语言处理很有趣”,词表为{我,喜欢,自然,语言,处理,很,有趣},则第一句的向量为[1,1,1,1,1,0,0],第二句为[0,0,1,1,1,1,1]。这种表示方式将文本转化为固定长度的数值向量,可直接输入机器学习模型。

4.1.2 操作流程与判断方法

  1. 文本预处理:分词、去停用词、词干提取/词形还原,降低特征维度。
  2. 构建词表:统计所有文档中的词频,可设置min_df和max_df过滤低频词和高频词。
  3. 向量化:使用sklearn的CountVectorizer或手动实现,生成文档-词频矩阵。
  4. 模型训练:将稀疏矩阵输入分类器(如朴素贝叶斯、逻辑回归)。
经验提醒:词袋模型对停用词敏感。建议在预处理阶段去除“的、了、是”等高频无意义词,否则这些词会占据大量特征维度,稀释有效信息。同时,可设置max_features=5000~20000来控制词表规模,避免维度灾难。

4.1.3 案例拆解:电商评论情感分类

假设我们有一个电商评论数据集,共10000条评论,标注为正面/负面。使用词袋模型进行情感分类的流程如下:

步骤操作参数/结果
1. 预处理分词、去停用词词表初始约50000词
2. 过滤min_df=2, max_df=0.8词表缩减至12000词
3. 向量化CountVectorizer10000×12000稀疏矩阵
4. 分类器朴素贝叶斯准确率82.3%

该案例中,词袋模型简单高效,但存在明显问题:高频词如“不错”在正面评论中频繁出现,但“不错”在负面评论中也可能出现(如“包装不错但质量差”),导致误分类。这说明词袋模型忽略了词序和上下文信息。

4.1.4 常见误区与总结

风险提示:词袋模型假设词与词之间相互独立,这在实际语言中不成立。此外,向量维度随词表线性增长,容易过拟合。当语料规模大、类别差异明显时,词袋模型表现尚可;但面对语义复杂、需要理解上下文的任务时,效果会显著下降。

总结:词袋模型适合短文本、类别区分度高的任务(如垃圾邮件过滤、简单情感判断),其优势在于实现简单、计算快速、可解释性强;劣势在于无法捕捉词序、语义和上下文信息。

4.2 TF-IDF(词频-逆文档频率)

4.2.1 核心原理

TF-IDF在词袋模型基础上引入了权重机制,用于评估一个词对某篇文档的重要程度。其核心思想是:如果一个词在文档中频繁出现(TF高),但在整个语料中很少出现(IDF高),则该词具有很好的区分能力。计算公式为:

TF-IDF(t,d) = TF(t,d) × IDF(t)
IDF(t) = log((N+1) / (DF(t)+1)) + 1

其中,TF(t,d)是词t在文档d中的出现次数,N是文档总数,DF(t)是包含词t的文档数。加1平滑避免除零,log压缩IDF值范围。

4.2.2 操作流程与调优方法

  • 参数选择:sublinear_tf=True(对TF取log)、min_df/max_df过滤、norm='l2'归一化。
  • 与分类器配合:TF-IDF特征适合线性模型(逻辑回归、SVM),不适合树模型(因稀疏性)。
  • 降维处理:可结合卡方检验或互信息选择Top-K特征。
实战要点:TF-IDF对长文本效果优于词袋模型,因为它能抑制“的、是、在”等无意义高频词的权重。在意图识别中,TF-IDF能突出“退款”“投诉”“咨询”等关键意图词,提升分类准确率。

4.2.3 案例拆解:新闻主题分类

使用TF-IDF对20000篇新闻进行分类(体育、财经、科技、娱乐)。关键步骤与结果:

方法特征维度准确率训练时间
词袋模型8000088.1%12s
TF-IDF8000092.7%15s
TF-IDF+卡方选择Top200002000093.2%8s

结果显示,TF-IDF比词袋模型准确率提升4.6个百分点,且通过特征选择后维度降低75%,训练速度反而更快。这说明TF-IDF的权重机制有效提升了特征质量。

4.2.4 常见误区与总结

风险提示:TF-IDF假设词的重要性与文档频率成反比,但某些领域术语(如“深度学习”中的“深度”)在特定语料中可能频繁出现,IDF值偏低,导致重要词被低估。此外,TF-IDF仍无法解决一词多义问题。

总结:TF-IDF是文本分类中最常用的基线方法,在多数任务中优于词袋模型。它适合中长文本、主题明显的分类任务,计算复杂度低,可解释性强。但需注意,它仍是基于词频的统计方法,无法捕捉语义和上下文。

4.3 N-gram模型

4.3.1 核心原理

N-gram模型通过将连续的N个词(或字符)作为一个整体特征,部分保留了词序信息。当N=1时退化为词袋模型;N=2时称为Bigram,N=3时称为Trigram。例如,“我不喜欢”的Bigram特征为“我不”“不喜”“喜欢”。N-gram能捕捉局部短语搭配,如“非常棒”比单独的“非常”和“棒”更具情感倾向。

4.3.2 操作流程与参数选择

  1. 确定N值:N=2或3最常用,N越大特征维度爆炸式增长。
  2. 特征组合:可同时使用Unigram+Bigram,兼顾覆盖率和词序信息。
  3. 剪枝策略:设置min_df过滤低频N-gram,或使用特征选择保留Top-K。
经验提醒:在中文场景中,字符级N-gram(如Bigram字符)对未登录词和拼写错误有更好的鲁棒性。例如“人工智障”和“人工智能”,词级N-gram无法识别,但字符级Bigram能捕捉到“人工”“工智”“智障”的差异。

4.3.3 案例拆解:短文本意图识别

在智能客服系统中,需要识别用户意图(如“查余额”“办理挂失”“投诉”)。使用不同N-gram配置的对比:

配置特征数准确率召回率
Unigram350084.5%83.1%
Bigram1200089.2%88.0%
Unigram+Bigram1550091.8%90.5%
Unigram+Bigram+Trigram2800092.1%91.0%

从结果看,Unigram+Bigram组合性价比最高,准确率比纯Unigram提升7.3个百分点,而加入Trigram仅提升0.3个百分点,但特征数增加80%。这说明在短文本场景中,Bigram已能捕捉足够的局部词序信息。

4.3.4 常见误区与总结

风险提示:N-gram的特征空间随N值指数增长,容易导致过拟合。同时,N-gram无法捕捉长距离依赖(如“虽然...但是...”结构),对语序颠倒的句子鲁棒性差。

总结:N-gram适合需要保留局部词序的任务,如短文本分类、情感分析、语言识别。它比词袋模型信息量更丰富,但计算开销更大。在实际应用中,建议从Unigram+Bigram组合开始,根据验证集效果决定是否增加Trigram。

4.4 三种方法对比与选择策略

维度词袋模型TF-IDFN-gram
核心机制词频统计词频×逆文档频率连续N词组合
词序信息无无局部保留
特征维度词表大小词表大小词表大小^N
稀疏性高高极高
计算复杂度低低中高
可解释性强强中
适用场景短文本、简单分类中长文本、主题分类短文本、情感分析
典型算法朴素贝叶斯逻辑回归、SVM逻辑回归、SVM

4.5 综合案例:电商评论情感分析系统

背景与约束:某电商平台需要构建评论情感分析系统,数据为50万条用户评论,平均长度约30字。业务要求:准确率不低于90%,推理延迟小于10ms,模型可解释。

初始现象:使用词袋模型+逻辑回归,准确率仅85.2%,且对“物流慢但质量好”这类混合情感评论误判严重。

分析判断:词袋模型无法区分“慢”和“好”分别修饰的对象,需要引入局部词序信息。同时,评论中存在大量“不错”“还行”等模糊词,需要TF-IDF抑制其权重。

实际操作:

  1. 预处理:分词、去停用词、保留情感词和程度副词。
  2. 特征构建:使用TF-IDF加权Unigram+Bigram,min_df=3,max_features=50000。
  3. 模型选择:逻辑回归(L2正则化,C=1.0)。
  4. 验证:5折交叉验证,准确率91.3%,推理延迟3ms。

结果对比:相比纯词袋模型,准确率提升6.1个百分点;相比纯TF-IDF,提升2.8个百分点。混合情感评论的误判率从18%降至7%。

风险与代价:特征维度从8000增至50000,内存占用增加约3倍,但通过稀疏矩阵存储和在线预测优化,实际内存占用仅增加120MB。模型可解释性略有下降,但通过查看Top特征权重仍可追溯关键决策依据。

复盘经验:在短文本场景中,TF-IDF+Bigram是性价比最高的组合。若业务对延迟敏感,可考虑使用特征选择将维度压缩至20000,准确率仅下降0.4个百分点,但推理速度提升40%。

最终建议:对于文本分类与意图识别任务,建议按以下路径选择:① 先使用TF-IDF+逻辑回归作为基线;② 若效果不达标,加入Bigram特征;③ 若仍不达标,尝试字符级N-gram或引入词向量;④ 始终关注特征维度和计算开销的平衡。