小明是图书馆新来的管理员,第一天就收到一箱箱待整理的新书:文学、财经、体育、科技,馆长要求下班前全部贴上标签送上书架。他翻了几本,眼睛都花了,突然冒出一个念头——能不能把自己的“分类经验”教给机器?比如看到“进球、赛季”就归体育,看到“股价、基金”就归财经。这套让计算机根据文字内容自动判断类别的任务,就是文本分类。本文就跟着小明把这套“图书馆整理术”从零建起来:先拆书做关键词卡片(预处理),给卡片打分(向量化),再用经验规则或清晰界线分架(分类模型),最后用科学的尺子检查效果(评估调优)。从传统方法到深度学习,再到真实项目落地,你会发现文本分类是 NLP 世界里最实用的一把瑞士军刀。

岗位关联

文本分类是自然语言处理里最基础也最高频的落地技能,掌握它,你就握住了新闻打标、情感分析、内容审核、意图识别等真实业务场景的敲门砖。

目录
  1. 可视化演示
  2. 认识文本分类
  3. 文本预处理
  4. 特征向量化
  5. 经典分类模型
  6. 评估与调优
  7. 深度学习之路
  8. 实战落地流程
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示机器学习文本分类的完整流程:原始文本经分词、去停用词、TF-IDF向量化后输入分类器,输出类别预测。切换模式查看不同处理阶段。

本节配有交互动效(进入视口后自动加载,约 3KB)。

文本分类流水线 原始文本经分词和去停用词预处理为词序列 TF-IDF将词序列转为数值特征向量 TF-IDF = TF × log(N/DF) 分类器基于特征向量输出类别预测

认识文本分类

小明当上图书馆管理员的第一天,办公室里堆着三箱新书,馆长要求下班前全部贴好标签:文学、财经、体育、科技。小明硬着头皮翻了几本,突然想到:判断一本书属于哪类,靠的不就是“出现哪些关键字”吗?这些经验完全可以写成规则交给机器。这个“让计算机根据文字内容自动判断类别”的任务,就是文本分类。

不过,光有规则还不够,规则从哪来?小明发现,与其自己一条条手写,不如先准备一批“已经分好类的旧书”做参考——这就是监督学习:用带标签的样本让模型自己总结规律。等模型学完,再拿新文章让它猜。前端是“输入一段文字”,后端是“输出一个预设类别”。

用数学语言说,模型要做的事是:在候选类别里,找出让条件概率最大的那个类别。

小明的第一版方案就是一场“概率赌局”:书里“比赛、进球”出现得多,压体育类;“股价、基金”出现得多,压财经类。不过他现在遇到新问题:机器读不懂一整本书,得先把文字拆成能理解的零件——这正是下一节要解决的预处理。

c∗=arg⁡max⁡c∈CP(c∣d)\displaystyle c^{*} = \mathop{\arg\max}_{c \in C} P(c \mid d)
把“哪类最像”翻译成“概率最大”,argmax 就是在候选答案里挑胜率最高的那个。
  1. 符号 c 与 CC 是所有候选类别的集合(体育、财经、科技……),c 代表其中某一个,比如“财经”。
    c∈Cc \in C
  2. 条件概率P(c|d) 表示在已知文章 d 的条件下,它属于类别 c 的可能性大小,可能性越大越有把握。
    P(c∣d)P(c \mid d)
  3. argmax 取最大值把每个类别都代入算一遍,挑出概率最大的那个类别,作为最终的预测结果。
    arg⁡max⁡c∈C\mathop{\arg\max}_{c \in C}
  4. 星号表示最优c* 读作“c 星”,代表机器最终选出的最佳标签,也就是管理员要贴的那张分类签。
    c∗c^{*}

文本预处理

小明决定先给每本书做“关键词卡片”。他试着把书的目录和简介一字一句拆成词,像做语文课的“词语卡片”。这个拆词操作在中文里叫分词。英文单词天然有空格分开,中文却必须靠工具判断“我们”是一个词而不是“我”和“们”——这正是 jieba 这类分词工具登场的地方。

拆出一堆词后,小明发现里面混着大量“没营养的噪音”:几乎所有书里都有“的、了、在、是”这类词,它们对判断类别毫无帮助。他把这些词列成一张“停用词表”,统一扔掉。同理,标点、数字、大小写差异也要清理,这一步叫数据清洗。预处理用公式表达,就是从原始文本里筛出“非停用词”的干净词集合。

经过预处理,一本书变成一叠干净的关键词卡片。小明发现这些卡片还是“文字”,而机器只认数字,得想办法把卡片转成数字——这就是下一节的特征向量化。顺带一提,去掉停用词后卡片数量大幅减少,后面的计算也会快很多。

D′={w∣w∈D, w∉S}\displaystyle D' = \{ w \mid w \in D,\ w \notin S \}
一句话记忆:D 是原文,S 是垃圾词清单,D' 是筛完杂质后留下的干净关键词。
  1. 清洗后的文档 D分词前先把标点、数字、大小写等噪音清理掉,得到的干净文本集合叫 D。
    DD
  2. 分词得到词 w用分词工具把 D 切成一个个词,w 是其中任意一个词,例如“市盈率”。
    w∈Dw \in D
  3. 停用词表 S把“的、了、在、是”这类每个类别里都高频出现的连接词收集成一张表 S。
    SS
  4. 集合筛选从 D 中挑出“不在 S 里”的词,组成新的集合 D'——这就是真正喂给模型的关键词卡片。
    D′={w∣w∈D, w∉S}D' = \{ w \mid w \in D,\ w \notin S \}

特征向量化

小明把卡片摊在桌上,想给每张卡“打分”。他发现“比赛”这个词在体育书里满天飞,但“市盈率”几乎只在财经书里出现。一个词的价值,不在于它出现过多少次,而在于“在这本书里出现得多 + 在整个馆里出现得少”。这套“词频 × 稀有度”的打分法,就是 TF-IDF。

有了每个词的分数,一本书就被表示成一串数字——这叫向量。最简单的是词袋模型:把整批书里出现过的所有词排成一个“词表”,每本书对应一个长向量,每个位置填上这个词的 TF-IDF 值。机器一看这串数字,就知道这本书大概在讲什么。TF-IDF 的核心公式:一个词的权重等于它在当前文档里的词频,乘以它在整个语料里的“稀有度”。

小明把每本书都变成了坐标图上的一个点,不同类别的书自然聚成了几个“群落”。向量化还有进阶玩法——词向量,它能让“汽车”和“轿车”这样意思相近的词映射到相近的位置,让模型理解“语义”而不只是“字面”。不过对小明来说,TF-IDF 已经足够起步了。

tf-idf(t,d)=tf(t,d)×log⁡Ndf(t)+1\displaystyle \text{tf-idf}(t,d) = \text{tf}(t,d) \times \log \frac{N}{\text{df}(t)+1}
一句话记忆:自己这边出现得越频繁、别人那边越少见,这个词就越有“身份证”价值。
  1. tf(t,d) 词频词 t 在文档 d 中出现的次数。出现越多,说明这个词越能代表这篇文档的主题。
    tf(t,d)\text{tf}(t,d)
  2. N 文档总数整个训练集共有多少篇文章,它是计算“稀有度”时的分母基数。
    NN
  3. df(t) 文档频率有多少篇文章包含词 t。df 越大,说明 t 越常见、越没有区分度。
    df(t)\text{df}(t)
  4. log 对数压缩加一log(N/(df+1)) 给罕见词高分、常见词低分;+1 防止某词从未出现时分母为 0。
    log⁡Ndf(t)+1\log \frac{N}{\text{df}(t)+1}
  5. 两项相乘词频 × 稀有度,让“常用且独特”的词脱颖而出,比如财经书里的“市盈率”。
    tf(t,d)×log⁡Ndf(t)+1\text{tf}(t,d) \times \log \frac{N}{\text{df}(t)+1}

经典分类模型

现在书都变成了坐标点,小明准备了两套“分架”方案。方案一像老师傅翻台账:翻开过去五年的借阅记录,发现提到“市盈率”的书里九成是财经类——那就按各种词的条件概率给类别下注。方案二像在黑板画界线:在两类点之间画一条“最宽”的分界线,新书落在哪边就归哪边。

方案一就是朴素贝叶斯:它把“这本书属于 c 类”的概率,拆成“每个词在 c 类里出现概率”的乘积,再把所有词的“投票”乘起来,最后乘以类别的先验概率。“朴素”来自一个大胆假设:词与词之间相互独立。虽然现实中“茅台”和“股价”常常抱团出现,但这个小偷懒让计算变得飞快,而且在文本分类上效果出奇地好。

方案二就是 SVM 支持向量机。它不关心概率,只关心几何距离:找一个超平面把两类分开,并且让这个平面到最近样本的距离(间隔)最大化。

小明把两套方案都跑了一遍,贝叶斯快得像翻台账,SVM 在边界纠缠的书上更稳。但到底哪个更准?他需要一把科学的“尺子”来量——评估环节登场。

P(c∣x)=P(c)×∏i=1nP(xi∣c)P(x)\displaystyle P(c \mid x) = \frac{P(c) \times \prod_{i=1}^{n} P(x_i \mid c)}{P(x)}
一句话记忆:把分类线画得离两边样本都尽量远,新书来了才不容易站错队。
  1. 超平面参数 w、bw 是法向量,b 是偏置,它们共同决定一根分类边界线在空间里的位置。
    w⋅x+b=0w \cdot x + b = 0
  2. 约束条件要求每个样本 x_i 都落在正确的一侧,并且离边界至少 1 的距离,即“留出安全间隔”。
    yi(w⋅xi+b)≥1y_i(w \cdot x_i + b) \ge 1
  3. 目标函数最小化 ½||w||²,数学上等价于把间隔最大化,让边界线离两类点都“尽可能居中”。
    min⁡12∥w∥2\min \frac{1}{2}\|w\|^2
  4. 核技巧延伸当数据在低维纠缠不清时,SVM 会把数据映射到高维再画平面(只需替换内积,不必真的升维)。
    K(xi,xj)=ϕ(xi)⋅ϕ(xj)K(x_i, x_j) = \phi(x_i) \cdot \phi(x_j)

评估与调优

月底馆长抽查了小明的书架,给每类书列了一张“错放表”:体育类被预测了 20 本,其中 2 本其实是财经书;财经类本该有 30 本在架,只找到 28 本。这张表把“分对的、分错的、漏掉的”全部摊开,在机器学习里它叫混淆矩阵。

只看“总正确率”会骗人。比如 100 本书里 95 本是文学类,机器全部无脑预测文学,准确率也有 95%,但它一本体育书都没分对。所以要用精确率(预测为某类的书里有多少真属于该类)和召回率(本该属于某类的书里找回来多少)两个指标搭配看,再用 F1 把它们合成一个分数。

调优也不可少。小明把全部书随机切成 5 份,轮流拿 4 份训练、1 份验证,这叫交叉验证,能更稳定地测出模型的真实水平。随后他微调几个旋钮:TF-IDF 选多少关键词、贝叶斯的平滑系数多大,再用网格搜索找到最优组合。尺子备齐了,他终于能自信地定方案了。

F1=2×P×RP+R\displaystyle F1 = \frac{2 \times P \times R}{P + R}
一句话记忆:精确率和召回率是“宁缺毋滥”和“一个不漏”的较量,F1 逼着两个都得高分。
  1. P 精确率预测为 c 类的书里,真正属于 c 类的比例。放错的杂物越少,P 越高。
    P=TPTP+FPP = \frac{TP}{TP + FP}
  2. R 召回率本该属于 c 类的书里,被成功找回来的比例。漏掉的越少,R 越高。
    R=TPTP+FNR = \frac{TP}{TP + FN}
  3. 调和平均F1 是 P 和 R 的调和平均,要求二者都高才得高分,防止只刷单边指标。
    2×P×RP+R\frac{2 \times P \times R}{P + R}

深度学习之路

传统方法像小明手把手教规则,深度学习则像一台“自动分拣机器人”:你不用告诉它“市盈率”重要,它自己读遍成千上万本书,在大量文本中领悟哪些字词组合有类别区分度。

深度学习方法里,TextCNN 用多个“卷积窗口”扫描短文、抓取关键短语组合;RNN 逐词阅读、记住前后文顺序;更强的预训练模型(如 BERT)先在大规模语料上“通读万卷书”学会通用语言知识,再拿少量业务数据微调即可。它们的共同点是都需要大量数据和算力,最后用 softmax 输出每个类别的概率。

小明算了笔账:馆里标注好的书只有几千本,跑深度学习容易过拟合,反而是朴素贝叶斯又稳又快。他决定把传统模型定为首版方案,等未来数据扩充到几十万条,再升级成“分拣机器人”。这是一条很现实的工程路线:先简单后复杂,让基线跑赢再迭代。

softmax(z)i=ezi∑j=1Kezj\displaystyle \text{softmax}(z)_i = \frac{e^{z_i}}{\sum_{j=1}^{K} e^{z_j}}
一句话记忆:把一堆原始分数变成“加起来等于 1”的概率分布,谁分高谁的概率就大。
  1. 原始得分 z_i最后一层网络对第 i 个类别输出一个分数,分数越高代表模型越倾向该类。
    ziz_i
  2. 指数函数e 的 z 次方把所有分数转成正数,并放大分数之间的差异。
    ezie^{z_i}
  3. 分母求和对所有类别的指数值求和,让每个输出落在 0 到 1 之间且总和为 1。
    ∑j=1Kezj\sum_{j=1}^{K} e^{z_j}
  4. 概率输出softmax 给的是“软”概率,不仅告诉我们答案是哪一类,还能看出模型的信心有多强。
    softmax(z)i\text{softmax}(z)_i

实战落地流程

几个月后,小明把个人经验整理成了《图书馆智能分架作业手册》:收书登记→拆书做卡片→给卡片打分→模型分架→人工抽查→每月复盘。每一步有固定工具和责任人,新来的实习生照着手册也能操作——这就是文本分类项目的完整落地流程。

对应到工程上,流程是:数据收集与标注→预处理→特征工程→模型训练→离线评估→上线部署→效果监控与错误分析。工具选型上,起步阶段用 sklearn 加 jieba 就能跑通全流程,十分钟就能出一个可用原型;数据量上来后再考虑 PyTorch 与预训练模型。评判整体效果时,最常用的总指标是准确率。

小明发现“上线”只是开始,真正的功夫在迭代:每周看错误案例,发现“科比退役”被分到财经类,就往词典里补词;新类别出现就重训。他也终于理解,文本分类从来不是一个模型打天下,而是数据、特征、模型、评估环环相扣的工程——这也是任何 AI 项目能持续创造价值的秘密。

Accuracy=TP+TNTP+FP+FN+TN\displaystyle \text{Accuracy} = \frac{TP + TN}{TP + FP + FN + TN}
一句话记忆:把所有判断里“判对的”除以“全部判断”,就是最直觉的准确率。
  1. TP 真正例本来是 c 类、也预测成 c 类的数量——放对架子的书。
    TPTP
  2. TN 真负例本来不是 c 类、也正确预测成“非 c 类”的数量——正确放去其他架子的书。
    TNTN
  3. FP 与 FNFP 是误报(把别的书放进了 c 类),FN 是漏报(该进 c 类的书放丢了)。
    FP+FNFP + FN
  4. 准确率TP 加 TN 的和,除以四种情况的总和。类别均衡时好用,不平衡时要配合 F1 一起看。
    TP+TNTP+FP+FN+TN\frac{TP + TN}{TP + FP + FN + TN}

AI 应用场景

新闻平台自动打标

阶段:数据准备 + 特征工程 + 模型训练

解决的问题:编辑每天要读几千篇投稿并人工打标签,既慢又标准不一。AI 先用历史标注稿训练分类器,新稿到达时自动给出类别候选,编辑只需二次确认,省去从头通读的功夫。

具体案例:某资讯 App 用 jieba + TF-IDF + 朴素贝叶斯做 5 类一级分类,覆盖 80% 的稿件,准确率约 90%,编辑工作量减少一半——就像小明的“关键词卡片”制度从手工翻书升级成了自动分架。

电商评论情感分析

阶段:模型训练 + 评估调优

解决的问题:客服逐条读评论,难以及时发现集中爆发的问题。把评论按好评、中评、差评分类,并抽取高频吐槽词,运营就能快速定位“物流慢”“包装破损”等痛点。

具体案例:某电商平台用 SVM 对 50 万条评论做情感二分类,F1 达到 0.87,每周自动生成舆情摘要,供应链据此优化打包流程——这正是“精确率与召回率”工具的实际应用。

客服工单智能路由

阶段:上线与迭代

解决的问题:人工分配工单慢且易错。按“退款、改地址、开发票、投诉”等意图分类,把工单自动路由到对应团队,用户等待时间显著缩短。

具体案例:某银行客服系统用 BERT 微调做意图识别,路由准确率 95%,工单转手次数降低 30%,用户等待时间缩短 40%——这是深度学习“读万卷书再微调”思路的典型落地。

Python 演示

python51 行
# -*- coding: utf-8 -*-"""新闻文本分类实战:jieba 分词 + TF-IDF + 朴素贝叶斯"""import jiebafrom sklearn.feature_extraction.text import TfidfVectorizerfrom sklearn.naive_bayes import MultinomialNBfrom sklearn.metrics import classification_report CORPUS = [    ("中国队夺金,奥运健儿再创佳绩", "体育"),    ("股市收评:沪指上涨,成交量放大", "财经"),    ("科技公司发布新款手机,续航提升", "科技"),    ("男篮联赛开打,各队备战新赛季", "体育"),    ("央行降准释放流动性,银行股走强", "财经"),    ("人工智能新突破,大模型加速落地", "科技"),    ("世界杯预选赛,国足客场取胜", "体育"),    ("基金定投正当时,基民热情高涨", "财经"),    ("芯片产业迎政策利好,关注龙头", "科技"),] STOP_WORDS = {"的", "了", "在", "是", "与", "和", "及", "为", "着"}  def clean(text, stop_words):    words = jieba.lcut(text)    return " ".join(w for w in words if w not in stop_words and w.strip())  def main():    texts = [clean(t, STOP_WORDS) for t, _ in CORPUS]    labels = [label for _, label in CORPUS]     vectorizer = TfidfVectorizer()    X = vectorizer.fit_transform(texts)     model = MultinomialNB()    model.fit(X, labels)     tests = [        "国足晋级,球迷呐喊",        "创业板大涨,新能源领涨",        "手机厂商发布折叠屏新品",    ]    for doc in tests:        vec = vectorizer.transform([clean(doc, STOP_WORDS)])        print(doc, "->", model.predict(vec)[0])     print(classification_report(labels, model.predict(X), zero_division=0))  if __name__ == "__main__":    main()
目的:完整跑通“分词 → 去停用词 → TF-IDF → 朴素贝叶斯 → 预测与评估”的新闻分类小流程,把理论公式变成能跑的代码。
  1. words = jieba.lcut(text)调用 jieba 分词,把句子切成词的列表,是中文预处理的起跑线。
  2. if w not in stop_words and w.strip()只保留不在停用词表且非空白的词,把“的、了”这类噪音挡在门外。
  3. " ".join(...)把过滤后的词用空格拼回一个字符串,符合 TfidfVectorizer 的输入格式。
  4. X = vectorizer.fit_transform(texts)先学习全部语料的词表,再一次性把文本转成 TF-IDF 稀疏矩阵。
  5. model = MultinomialNB()创建朴素贝叶斯分类器,特别适合 TF-IDF 这类非负计数特征。
  6. model.fit(X, labels)让模型从“向量 + 标签”中学出每个类别里关键词的概率偏好。
  7. model.predict(vec)[0]对一条新文本的向量做预测,返回最可能的类别标签。

常见误区

误区“分词不是把句子拆开就行吗?拆完直接扔给模型,效果不好一定是模型不行。”

正解原始分词结果里满是停用词、标点和噪音词,它们每个类别都出现,会稀释真正有区分度的词。预处理就像筛面粉——先筛掉杂质,后面揉出的面团才筋道。实验表明,去掉停用词后 TF-IDF 分类准确率常能提升 5% 到 10%。

为何常见:初学时很难意识到“噪音词”的危害,因为它们看起来也是词,似乎也“有信息量”。

误区“TF-IDF 值越大,说明这个词绝对更重要,把数值最高的词拿去当关键词准没错。”

正解TF-IDF 衡量的是“在文档内相对常见、在整个语料中相对稀有”的折中。短文档里一个词的词频可能虚高;冷门错别字词的 IDF 虽高但没意义。它刻画“区分度”而非“绝对重要性”,要结合业务语义一起判断。

为何常见:名字里带着“权重、打分”,容易让人误以为它是绝对真理,忽略了它只是特征工程里的一个统计量。

误区“测试准确率 97%,模型肯定没问题,直接上线!”

正解类别不平衡时,无脑预测多数类也能拿到高准确率。就像图书馆 99% 是文学书,你全部贴上文学标签,准确率也是 99%,但体育书全被埋没。还要看每类的精确率、召回率、F1 和混淆矩阵,尤其要关注少数类有没有被找回。

为何常见:准确率是最直观的指标,潜意识里容易把它当成唯一标准,而忘了它会被样本分布带偏。

误区“既然叫朴素贝叶斯,还假设特征相互独立,肯定很弱,实战中没人用吧?”

正解独立性假设虽简化,但在文本任务上往往表现奇好:垃圾邮件过滤、新闻分类的传统基线至今常用它。它是“性价比”选手——训练飞快、可解释、小数据不慌,而不是“笨”选手。数据少时它常常比深度学习更靠谱。

为何常见:名字里的“朴素(naive)”翻译容易误导人,让人以为它稚嫩无用。

误区“深度学习是大趋势,公司里直接上 BERT 一定比朴素贝叶斯强。”

正解数据少时深度学习容易过拟合,训练和推理成本高,调参复杂;朴素贝叶斯和 SVM 在几千条小样本上能快速给出可靠基线。工程上通常先用传统方法跑通,再在大数据上考虑升级,而不是一上来就扛“重武器”。

为何常见:媒体上“某某模型刷新纪录”的标题容易让人忽略最佳实践取决于数据量、算力和业务约束。

面试题

Q1. 在文本分类任务中,“体育、财经、科技”这类预先设定的输出类别一般被称为什么?

单选题 · easy

  • A.文本特征
  • B.模型参数
  • C.类别标签← 正确答案
  • D.停用词典

答案:C。预先设定好的输出类别叫标签(label),是监督学习里训练数据必须提供的部分,就像图书馆给每本书预设的候选分类。文本特征是分词后供模型使用的词;模型参数是训练中自动学出来的;停用词是被丢弃的噪音词。故 C 正确。

Q2. 对中文文本做预处理时,第一步通常是什么?

单选题 · easy

  • A.模型训练
  • B.绘制图表
  • C.计算 F1
  • D.中文分词← 正确答案

答案:D。中文没有天然的词边界,必须先分词才能得到有意义的词单元,这是预处理的第一步。模型训练是后续环节;F1 是评估指标;绘制图表是展示工具。故 D 正确。

Q3. TF-IDF 中 IDF(逆文档频率)的主要作用是?

单选题 · easy

  • A.减少常见词影响
  • B.突出罕见词区分度← 正确答案
  • C.去除停用词处理
  • D.缩短训练耗时

答案:B。IDF 等于 log(N/(df+1)):一个词在越多文档出现,df 越大,IDF 越小,从而压低“的、了”这类常见词,抬高“市盈率”这类罕见词的区分度。它不负责去停用词(那是预处理阶段的事),也不能直接缩短训练时间,A 只是表象而非主要作用。

Q4. 朴素贝叶斯中的“朴素”一词指的是?

单选题 · mid

  • A.不需要任何特征
  • B.特征条件独立的假设← 正确答案
  • C.只支持中文语料
  • D.模型简单无需调参

答案:B。“朴素”指假设各词特征在给定类别下相互独立——尽管现实中“茅台”和“股价”常抱团出现,但这个简化让计算量骤降。它仍需调参(如平滑系数),也不局限于中文,更不可能不需要特征。故 B 正确。

Q5. 类别严重不平衡时,仅用准确率评估的问题在于?

单选题 · mid

  • A.全猜多数类仍高分← 正确答案
  • B.准确率无法计算
  • C.准确率一定很低
  • D.与模型无关紧要

答案:A。99% 是文学书的馆藏里,机器全贴“文学”准确率也有 99%,却一本体育都没分对。准确率会被多数类带偏,必须配合各类的精确率、召回率、F1 与混淆矩阵综合判断。故 A 正确。

Q6. 关于 SVM 支持向量机,下列说法正确的有?

多选题 · mid

  • A.目标是最大化间隔← 正确答案
  • B.可用核技巧升维← 正确答案
  • C.仅支持二分类任务
  • D.无需文本向量化

答案:AB。SVM 在正确分类的前提下最大化间隔,间隔越大对新样本越鲁棒;线性不可分时用核技巧把数据映射到高维再画超平面。SVM 本身是二分类器,但可通过“一对多”扩展为多分类;它同样需要特征向量作为输入,所以 C、D 错误。

Q7. F1 分数在数学上是精确率与召回率的什么平均?

单选题 · hard

  • A.算术平均
  • B.加权平均
  • C.调和平均← 正确答案
  • D.几何平均

答案:C。F1 = 2PR/(P+R) 是调和平均,对“偏科”敏感:只有 P 和 R 都高,F1 才高。算术平均会被拉平(0.1 和 0.9 平均 0.5),无法惩罚一边高一边低的情况,所以 A 错;加权和几何平均也不是 F1 的定义。

Q8. 下列哪一项属于深度学习相对传统机器学习的主要劣势?

单选题 · hard

  • A.无法处理中文文本
  • B.需要大量数据算力← 正确答案
  • C.无法做情感分析
  • D.没有预训练方案

答案:B。深度学习需要大量标注数据和 GPU 算力,小数据上容易过拟合。它当然能处理中文文本,也擅长情感分析,还有成熟的预训练方案,所以 A、C、D 都不对。工程上小数据先上传统模型是更优策略。

Q9. 文本向量化的常用方法有哪些?

多选题 · mid

  • A.统计词袋模型← 正确答案
  • B.TFIDF 加权法← 正确答案
  • C.词向量嵌入法← 正确答案
  • D.混淆矩阵计算

答案:ABC。词袋模型把文本映射为词频向量,TF-IDF 在其上做加权以突出稀有词,词向量(word2vec、预训练嵌入)学习语义相近词的分布表达,三者都是向量化手段。混淆矩阵是评估工具,与向量化无关,故 D 错误。

Q10. 关于预训练模型(如 BERT)在文本分类中的应用,说法正确的有?

多选题 · hard

  • A.先在大型语料上预训练← 正确答案
  • B.需用业务数据微调← 正确答案
  • C.算法效果必然更好
  • D.无需任何标注样本

答案:AB。预训练模型先在大规模语料上“通读万卷书”学习通用语义,再用少量业务数据微调适应具体分类任务,两道工序缺一不可。它并非稳胜:小数据时朴素贝叶斯更稳,分类任务也需要少量标注做微调,所以 C、D 错误。