核心要点

  • 核心是把词级向量聚合成句/文档级表示:简单平均、TF-IDF 加权平均或最大池化

  • 进阶用神经网络建模:TextCNN 抽局部 n-gram 特征、BiLSTM 建序列依赖、FastText 走快速浅层方案

  • 可用预训练词向量(Word2Vec/GloVe)初始化 Embedding 层,再随任务微调

  • 相比 one-hot/BoW 有语义泛化与降维优势,但静态向量无法消歧、长文本易丢信息

标准回答

一、最朴素:聚合成固定向量

文本分类需要把变长文本变成定长特征,最简单的是对句中所有词向量做聚合:

  • 平均池化:所有词向量取均值,实现简单、效果尚可,是常见基线
  • TF-IDF 加权平均:用 TF-IDF 给词加权,让信息量大的词主导句向量,弱化停用词
  • 最大池化:逐维取最大值,突出最显著特征

得到句向量后接 LR、SVM 或浅层 MLP 即可分类。

二、进阶:交给神经网络建模

聚合会丢词序与局部结构,更强的做法是把词向量序列直接喂给网络:

  • TextCNN:用不同宽度卷积核在词向量序列上滑动,捕捉 2-gram、3-gram 等局部短语特征,再池化分类,速度快、短文本效果好
  • BiLSTM:双向建模序列依赖,适合较长、语序敏感的文本
  • FastText:把词与 n-gram 向量平均后接 softmax,极快、强基线,工业冷启动常用

三、预训练与微调

可用 Word2Vec / GloVe / FastText 预训练词向量初始化 Embedding 层,小数据上能显著提升并加速收敛;数据充足时再随分类任务微调,让向量贴合本任务语义。

四、相比传统方法的优势

  • 对比 one-hot / BoW:词向量是稠密低维表示,天然带语义泛化(近义词向量接近),缓解维度灾难与稀疏问题
  • BoW 把每个词当独立符号,无法体现"好"和"棒"相近,词向量则可

五、局限

  • 经典词向量是静态的,一词一向量,无法消歧多义词
  • 长文本做平均会稀释关键信息、丢失结构
  • 进阶方案改用 BERT 等上下文向量取句表示,能消歧并更好建模长程语义,是当前主流

常见误区

⚠️ 常见踩坑

误区一:以为对词向量做平均就够好——平均丢词序与局部结构,长文本尤其严重,应视任务上 TextCNN/BiLSTM 或上下文模型。误区二:小数据上还从零训 Embedding,浪费数据且不稳,应优先用预训练词向量初始化。误区三:把静态词向量当成能消歧的万能表示,多义词、反讽、否定等场景静态向量会失效,需要上下文向量。误区四:忽略 OOV 处理,未登录词直接丢弃或随机向量会损害效果。

追问

追问 1Embedding 层在训练中要冻结还是微调?

取决于数据量。小数据建议冻结预训练向量,避免少量样本把向量带偏、过拟合;数据充足时微调能让向量贴合任务语义、提升上限。折中做法是先冻结训练几轮稳定上层,再解冻小学习率微调,或保留一份不可训练向量与一份可训练向量并行。

追问 2TextCNN 为什么对文本分类有效?

TextCNN 用不同宽度卷积核在词向量序列上滑动,等价于自动学习关键 n-gram(短语)特征,再用最大池化挑出最显著的,对"是否出现某类判别性短语"这种分类信号很敏感;它参数少、并行度高、训练快,在短文本分类上常逼近甚至超过更重的 RNN

追问 3什么时候该从词向量升级到 BERT?

当任务对多义消歧、否定/反讽、长程依赖敏感,或静态词向量方案精度触顶时,应升级到 BERT 等上下文向量:同词随上下文变化、天然消歧、语义更精准。代价是算力与延迟更高,对短文本、低延迟或资源受限场景,FastText/TextCNN 仍是高性价比选择。

🔗 相似问题

同一考点的不同问法,面试官可能换着问,一起刷更稳

没找到想看的面试题?把你想看的告诉我们 →

延伸学习

按主题分类的相关资源,便于系统复习