城市街角有一家“阿茶奶茶店”。每天打烊后,店长阿茶都会翻开留言本,一条一条读顾客的反馈:“甜度刚好,必须推荐!”他笑着画个圈;“等了四十分钟,太失望了。”他皱着眉在旁边写下“排班要调”。日复一日,阿茶练出了一项本领:从一句话里读出人的真实情绪,再拿情绪指导第二天该备多少波霸、要不要改取餐动线。这门本领,就是今天要讲的主题——情感分析。 情感分析是自然语言处理里的经典任务,本质是判断一段文本表达的是正面、负面还是中性情绪。它就像阿茶听顾客讲话:先听清说的是什么词(文本预处理),查查词的好坏(情感词典法),再学着从整句话的语境里判断语气(机器学习与深度学习),最后用指标验证判断准不准(评估调优),并用在舆情监控、产品评价这些真实场景里。本文会用“开店”这个比喻,带你从零搭起一整套情感分析体系,先建立直觉,再走进原理,最后看见落地。
学习情感分析,是 AI 从业者踏入 NLP 实战的必修课。它能直接落地到舆情监控、产品口碑分析、客服质检等真实业务,成为你简历上最有画面感的项目经验。
可视化演示
本节配有交互动效(进入视口后自动加载,约 3KB)。
情感词典法——逐词打分 正面词:+分 负面词:-分 score = Σ sentiment(word) 总分决定极性
情感分析概述
阿茶第一次翻留言本时,会把每条留言贴上标签:“甜度刚好,必须推荐”是笑脸,“等太久,失望”是哭脸。贴得多了,他发现自己的判断规律其实可以描述成一句大白话:一段话里,夸赞的浓度高于抱怨,就可以说是正面;反过来就是负面。情感分析要做的事,正是把阿茶这种“读情绪”的本事交给计算机。
在技术上,情感分析是自然语言处理的一个文本分类任务:输入一段文本,输出一个情感极性标签——正面、负面,有时还有中性。它和信息检索、机器翻译不同,它关心的不是文本说了什么事实,而是说话人对这件事的态度。就像阿茶不关心顾客具体抱怨哪个步骤,只关心“这次体验是愉快还是不愉快”。
情感分析按分析粒度可以分成三级:篇章级判断整段话的情绪,句子级逐句判断,方面级则要针对某个具体的评价对象,比如“奶茶好喝但服务怠慢”,整句可能是中性,但对“奶茶”是正面、对“服务”是负面。真实业务中大部分难点都来自这种“对象相关”的判断,需要模型能够定位情绪指向谁。
阿茶渐渐明白,读评论不是数有几个笑脸词那么简单。讽刺、反语、网络新词和口语化的表达,会让机器像第一次开店的新手一样摸不着头脑。但阿茶也找到了破解的办法:先从最朴素的词汇信号开始,再一步步升级到能理解语境的模型。接下来的旅程,就从他把留言本拆成一个个词说起。
文本预处理
阿茶听顾客说话,最怕店里音乐太吵。他会先关掉音乐、把椅子挪到顾客身边,让自己“只听得到关键词”——“甜”“太甜”“刚好”。计算机也一样,原始文本就是一片嘈杂的声浪,直接扔给模型往往事倍功半,所以要先做文本预处理,把噪音丢掉、把关键零件整理整齐。
预处理的第一步是分词。英文天然用空格隔开单词,而中文的“好喝”和“好喝吗”之间没有明确边界,需要用分词工具把连续的汉字切成有意义的词,把“奶茶好喝”切成“奶茶 / 好喝”。第二步是去停用词,像“的”“了”“啊”这类语法词出现频率极高但不携带情感信息,直接删掉可以给后续计算减负。第三步是噪声清洗,把 URL、@符号、多余标点和表情符号统一处理成干净文本,避免模型把"!!!!!"当成什么天大的情绪信号。处理完之后,句子就变成了一串干干净净的词语序列。
预处理后的词语还要变成计算机能运算的数字。最朴素的特征表示是词频:统计每个词在文本里出现了几次。一个词出现得越频繁,它在这段文本里的权重信号就越强。词频是后面一切向量化方法的基石,也是理解 TF-IDF 的第一块拼图。
阿茶把留言本从头到尾翻完,发现“甜”“快”“差”这些词总是反复出现。他开始意识到,与其眉毛胡子一把抓,不如先把每个词的地位摸清楚。预处理做完,留言本变成了一沓干净的“词卡片”,下一步就可以查他的情绪小词典了。
- 分子目标词的计数:$\displaystyle f_{t, d}$ 表示词 t 在文档 d 中出现的次数。比如“好喝”在留言里出现 3 次,$f_{好喝, d}=3$。
- 分母文档总词量:$\displaystyle \sum_{k} f_{k, d}$ 表示文档 d 中所有词出现次数之和,也就是这段文本的长度。
- 比值相对重要性:两者相除得到词频 TF,衡量词 t 在文档内部的相对占比,占比越高,说明这个词越应该被关注。
情感词典法
阿茶手头有一本祖传的“好感词小本本”:正面记着“推荐”“满意”“喜欢”“超值”,负面记着“失望”“难吃”“退款”“生气”。每次看到一条留言,他就像查字典一样,把留言里的词一个个比对,碰到好评词加一分,碰到差评词减一分,最后看总分是正还是负。这套朴素而有效的打法,就是情感词典法。
词典法的核心是提前构建一本带极性标注的情感词典:每个词标注极性值,正面词设为 +1,负面词设为 -1,中性词为 0。分析时把文本分词,逐个词查表累加,得到整句的情感得分。词典规模直接决定覆盖能力,领域名词典需要靠人工与自动挖掘结合来扩充,例如把“好喝”“新鲜”加进餐饮词典,把“顺畅”“卡顿”加进 App 评论词典。
不过阿茶很快发现,简单的累加会闹笑话。“奶茶不是不好喝”这句里明明有两个否定,意思其实是“好喝”,但词典法只数词的话会得出负面结论。于是在打分时还要引入两个修正器:程度副词给权重,比如“很失望”的“很”把 -1 放大成 -1.5;否定词给翻转,比如“不”让后面的情感分值乘以 -1。综合起来,一条留言的情感得分就是每个词的极性、程度、否定翻转共同作用的加权和。
词典法像阿茶那本小本本一样,胜在快速、透明、可解释,但遇到没见过的网络新词、反讽和复杂语境时就会失灵。“绝绝子”不在本子上,“好难喝啊,真是谢谢了”里全是正词却表达强烈不满——这些局限让阿茶明白,光靠翻本子走不远,得让机器学着自己总结经验。
- 求和符号$\displaystyle \sum_{i=1}^{n}$ 表示把文本中命中的 n 个情感词逐项加总,它是整段话情绪值的汇总方式。
- 极性值$\displaystyle c_i$ 是第 i 个词的极性,正面词为 +1、负面词为 -1,决定这个词朝哪个方向推分。
- 程度权重$\displaystyle w_i$ 是程度副词的缩放系数,“很推荐”的权重大于 1,“有点推荐”的权重小于 1,让情绪强度有梯度。
- 否定翻转$\displaystyle (-1)^{k_i}$ 中 $k_i$ 是这个词前面被否定词修饰的次数,k 为奇数时极性反转,偶数时还原。
机器学习法
阿茶开了三年店,渐渐不用翻本子也能秒懂顾客。他脑子里积累了大量经验:说“甜度刚好”的人满意,说“甜到发齁”的人不满,说“配送快”和“配送太慢”情绪完全相反。这种“从大量例子中总结规律”的能力,就是机器学习法想要模拟的东西。词典法是背规则,机器学习法是看样例、学规律。
机器学习法先把文本变成特征向量。有了预处理后的词语序列,再给每个词算一个权重——常见的是 TF-IDF:一个词在某条留言中出现得多(TF 高)、但在所有留言中出现得少(IDF 高),说明它区分情感的能力强,权重就大。接着把文本表示成数字向量,喂给分类器。朴素贝叶斯是经典的入门选择:它按贝叶斯定理推导,在一篇文档中各词出现的条件下,算出它属于正面的概率和属于负面的概率,哪个大就判哪个。
训练流程就像阿茶带徒弟:先准备一批已经标好情感标签的留言(训练数据),把留言变成向量(特征工程),让分类器在标签的指导下反复调整内部概率参数(训练),最后拿没见过的留言考考徒弟(测试评估)。整个过程的核心公式朴素贝叶斯如下,它基于“特征相互独立”的简化假设,把各类别后验概率拆成词概率的连乘。
阿茶的徒弟们在大量留言的喂养下越学越灵,能识别许多话里话外的信号,但仍有局限:词与词的顺序被打乱时它们常常毫无察觉。“我不讨厌它”和“讨厌它我不”在词袋模型眼里几乎一样——这让阿茶意识到,必须让模型学会“顺着句子读下去”,于是他把目光投向了能记住语境的深度学习。
- 后验概率$\displaystyle P(c \mid d)$ 表示已知文本 d、其类别为 c 的概率。分类时计算“正面”和“负面”两个后验概率并比较。
- 正比符号$\displaystyle \propto$ 表示左右两边成正比,因为分母 P(d) 对所有类别都一样,比较时可以直接省略,简化计算。
- 类别先验$\displaystyle P(c)$ 是训练集中类别 c 的占比,比如 60% 的留言是正面,$P(正面)=0.6$,它代表“不问内容先猜一个”的基线。
- 似然连乘$\displaystyle \prod_{i=1}^{n} P(w_i \mid c)$ 把文档中每个词在类别 c 里出现的概率逐个相乘,表示“假设是这类留言,看到这些词的可能性”,这正是从训练语料里统计出来的经验。
深度学习进阶
阿茶发现,老练的店长听顾客说话不是蹦单词地听,而是顺着语序听完一整句:“虽然排队很久,但是奶茶值得。”前面的抱怨和后面的夸奖组合在一起,才是完整态度。这种“一边读一边记”的方式,正是深度学习处理文本的基本姿态,它的代表结构是循环神经网络(RNN)。
RNN 之前的词袋模型把词当成独立的符号,忽略了顺序。RNN 则让模型拥有一个“滚动记忆”:每读一个新词,就把上一个时刻的记忆和当前词的向量融合,生成新的记忆传给下一个时刻。这个记忆就是隐藏状态 h,它像一个店员在脑子里不断更新“目前听下来,顾客应该是满意还是不满意的倾向”。词向量则把每个词映射成稠密向量,让意思相近的词在向量空间里彼此靠近,“好喝”和“美味”有了相似的位置。
LSTM 是 RNN 的升级版,它给记忆加了三个门:忘记门决定扔掉哪些旧信息,输入门决定记下哪些新信息,输出门决定放出哪些信息,从而能跨越很长的距离记住关键情绪——就像阿茶记得顾客第一句“我要少糖”直到最后一句“这次刚好”的呼应。而 BERT 更进一步,用预训练加微调的模式在海量文本上学通用语义,再在情感数据上小成本微调,成为当前工业界的主流底座。
阿茶的“高级店员”们终于能顺着句子理解情绪了,但阿茶又有了新困惑:这些店员到底靠不靠谱?会不会只是把老一套背得滚瓜烂熟,遇到新顾客就露馅?他决定给店员们做一场严格的“盲测考试”——这就是模型评估与调优。
- 新记忆$\displaystyle h_t$ 是读完第 t 个词后模型的最新记忆,它同时携带了前面所有词的浓缩信息和当前词的信号。
- 旧记忆$\displaystyle h_{t-1}$ 是上一个时刻的记忆,体现“滚动传递”:每个时刻都基于前一个时刻,形成按顺序阅读的链条。
- 当前输入$\displaystyle x_t$ 是第 t 个词的向量表示,它是新信息进入记忆的入口。
- 权重矩阵与偏置$\displaystyle W_h$ 和 $\displaystyle W_x$ 分别调节旧记忆和新词的贡献比例,$\displaystyle b$ 是偏置项,它们都是训练中不断学习的参数。
- 非线性压缩$\displaystyle \tanh$ 把加权和的结果压缩到 -1 到 +1 之间,让记忆值始终稳定在可计算的范围内,同时给模型引入非线性表达能力。
评估与调优
阿茶想验证店员读情绪的本事,不能拿他背过的老留言考他,否则成绩再好也是自欺欺人。正确做法是把所有留言分成三份:训练集给店员学习用,验证集用来边学边微调,测试集压箱底、全程不碰,最后才拿出来做最终考核。模型的评估与调优,遵循的正是这套“考卷与练习册分离”的规则。
评估要看什么指标?最直觉的是准确率,但它在正负样本不平衡时很会骗人——如果 90% 的留言都是好评,模型闭眼全猜好评也能有 90% 准确率,可它对差评毫无识别能力。因此工程上更重视精确率与召回率:精确率回答“模型说是负面里真有负面有几个”,召回率回答“真正的负面里模型抓住了几分”。两者往往此消彼长,需要 F1 分数做调和平均,给出单个数综合排名。
模型调优的本质是防止过拟合:训练集成绩出众、测试集成绩崩盘,说明店员把当年背过的答案刻进了脑子,却没学会举一反三。化解手段包括增加更多数据、降低模型复杂度、加入正则化、用早停法等。交叉验证则是把样本轮流切成多份、分别当验证集做多轮评估,让分数更稳定,避免一次划分的偶然性。
盲测过后,阿茶对店员的判断力有了底气。现在,他要干一件更大的事:把成熟的判断力装进一个面向全城的系统,让每家分店都能实时感知顾客情绪,提前行动。从单店手艺到平台能力,情感分析真正走完了从原理到落地的路。
- 分子连乘$\displaystyle 2 \times \text{Precision} \times \text{Recall}$ 让两个指标以乘积形式同时影响结果,任何一个偏低都会明显拉低 F1。
- 分母相加$\displaystyle \text{Precision} + \text{Recall}$ 作分母起归一化作用,使 F1 始终落在 0 到 1 之间,方便横向比较。
- 调和平均$\displaystyle \frac{2PR}{P+R}$ 比算术平均更严格,它惩罚“偏科生”:一个指标很高、另一个很低时,F1 会明显低于两者的平均值。
舆情监控应用
阿茶的事业越做越大,开了多家连锁店。他开始需要一套系统:每天自动扫完全城所有互联网平台上关于“阿茶奶茶”的帖子、评论和短视频弹幕,告诉各分店“城东店今天口碑在涨,城西店出现一条负面投诉正在扩散”。这套系统,就是情感分析最典型的落地场景——舆情监控。
具体到产品评价分析,系统会把每条评论先做预处理,再用词典法快速粗筛,拿不准的交给机器学习或深度学习模型精判,输出好评率、差评率以及高频痛点词(“太甜”“出餐慢”)。舆情预警则盯着负面比例这个核心信号:当某个时间段负面评论占比突然超过阈值,系统立刻触发告警推送,运营人员能在半天内介入处理,避免危机发酵成热搜。情感趋势分析则按小时或天聚合情感得分,绘制曲线,让决策者一眼看清口碑的长期走向。
这类系统落地部署时非常强调实时性与可观测性:消息队列接入评论流,模型服务化部署通过 API 输出预测,同时把每条预测结果和置信度记录下来做监控,一旦分布漂移就触发重新标注与模型更新,确保上线后的判断力不衰减。业务上还要把情感得分和销量、复购率、投诉量联动分析,让“情绪”变成可量化的经营指标,而不只是报表里的一个数字。
阿茶站在总店的大屏前,看着各分店的口碑热力值像潮水一样起伏,心里踏实了。词典法让他起步,机器学习让他规模化,深度学习让他读懂复杂语境,评估体系让他守住底线,而落地系统让这一切产生了实实在在的商业价值。从留言本到舆情大屏,情感分析的旅程,正是一个把人类读心直觉工程化的故事。
- 当前观测$\displaystyle x_t$ 是 t 时刻的即时情感指标,比如本小时内差评占比的上升量。
- 平滑系数$\displaystyle \alpha$ 取 0 到 1 之间,决定系统对近期变化的敏感度,α 越大反应越快但越容易抖动。
- 历史记忆$\displaystyle (1 - \alpha) \times H_{t-1}$ 把上一时刻的热度按比例延续,形成平滑曲线,避免因为一两条偶发差评就误报警。
- 递推更新$\displaystyle H_t$ 由新旧两部分合成,既追踪变化又保留历史惯性,适合舆情趋势的实时监测。
AI 应用场景
电商产品评价分析
阶段:文本预处理 → 情感分类 → 归因分析
解决的问题:传统人工逐条读评论耗时巨大,且品控人员只能抽样,漏掉大量负面信号。AI 情感分析可以全量自动化处理商品评论,按天输出好评率、差评率、负面词云和趋势曲线。
具体案例:某电商团队搭建评论分析管线,先用词典法粗筛日常评论,对置信度低的样本调用深度学习模型精判;系统发现某批次手机“发热”负面占比 48 小时从 5% 飙到 22%,自动推送告警,团队当天召回该批次产品,止损数百万元。
微博舆情预警系统
阶段:数据采集 → 预处理 → 情感监控 → 预警联动
解决的问题:品牌危机往往在社交媒体上发酵极快,人工监测无法 7×24 小时实时覆盖。AI 舆情系统对全网提及品牌名的文本持续做情感分析,结合指数平滑热度曲线识别异常飙升。
具体案例:某连锁餐饮品牌接入舆情预警平台后,监测到“门店卫生”相关负面提及量在 2 小时翻了三倍,热度指数突破阈值触发告警,公关团队在热搜形成前 4 小时完成回应与整改声明,将一次潜在危机化解为正面公关曝光。
客服工单情绪质检
阶段:工单文本分类 → 客户情绪识别 → 风险升级
解决的问题:客服会话量大,人工质检抽检率不足 5%,大量愤怒客户被遗漏。情感分析逐条评估会话中客户情绪,识别出高愤怒、高流失风险的对话,自动升级到高级客服处理。
具体案例:某电信运营商在客服工单系统嵌入情感打分模块,客户说“再不好我就要携号转网了”被模型识别为高危负面,系统实时弹窗提醒坐席并优先接入主管,客户挽留率提升了 18%。
Python 演示
# -*- coding: utf-8 -*-import refrom collections import Counterfrom sklearn.feature_extraction.text import CountVectorizerfrom sklearn.naive_bayes import MultinomialNB POS = {"推荐", "满意", "喜欢", "很棒", "好喝", "快", "贴心", "不错"}NEG = {"失望", "差评", "生气", "难喝", "难吃", "慢", "亏", "差"} def tokenize(text): text = re.sub(r"[^\w\u4e00-\u9fa5]", " ", text) return [t for t in text.split() if t] def lexicon_score(text): tokens = tokenize(text) score = 0 for t in tokens: if t in POS: score += 1 elif t in NEG: score -= 1 return score, Counter(tokens) def train_bayes(corpus, labels): X = [" ".join(tokenize(c)) for c in corpus] vec = CountVectorizer() Xv = vec.fit_transform(X) clf = MultinomialNB().fit(Xv, labels) return vec, clf def main(): corpus = [ "奶茶 好喝 推荐 购买", "物流 很快 包装 满意", "口感 很棒 服务 贴心", "味道 不错 下次 再来", "客服 态度 差评 生气", "等 太久 很 失望", "东西 难吃 亏 了", "售后 不行 退款 慢", ] labels = [1, 1, 1, 1, 0, 0, 0, 0] vec, clf = train_bayes(corpus, labels) tests = ["奶茶 好喝 推荐", "发货 太慢 失望", "口感 一般 但 送货 快"] for t in tests: score, cnt = lexicon_score(t) x = vec.transform([" ".join(tokenize(t))]) pred = int(clf.predict(x)[0]) tag = "正面" if pred else "负面" print(t, "-> 词典法得分:", score, "| 朴素贝叶斯:", tag) if __name__ == "__main__": main()
re.sub(r"[^\w\u4e00-\u9fa5]", " ", text)把所有标点、符号替换成空格,只保留中英文和数字,完成噪声清洗。[t for t in text.split() if t]按空格切出词序列,过滤掉空串,得到干净的 token 列表。score += 1 / score -= 1查正负词典累加情感分,这是词典法极性的核心逻辑。X = [" ".join(tokenize(c)) for c in corpus]把每句话先分词再用空格连接,让 CountVectorizer 能按词条切分出特征。MultinomialNB().fit(Xv, labels)用多项式朴素贝叶斯在词频矩阵上学习“哪些词更可能属于正面或负面”。clf.predict(x)对新的评论做预测,输出 1 表示正面、0 表示负面,得到机器学习路线的判断结果。
常见误区
误区现在的模型都是深度学习的天下,基于情感词典的方法又笨又旧,学它纯粹浪费时间。我只需要学会 BERT 就够了。
正解词典法在工业界依然大量存在:它零训练成本、秒级响应、完全可解释,在冷启动阶段和置信度粗筛场景无可替代。深度学习模型再强,也需要词典法产出的先验信号做兜底和数据增强。就像阿茶开店,小本本虽有局限,但新店员上手时最依赖的还是它。
为何常见:因为论文和课程都在追逐新模型,宣传口径把深度学习的表现渲染得过于强大,让学习者误以为旧方法没有生存空间。
误区模型在测试集上的准确率 92%,说明它已经非常优秀,可以直接上线。我平时汇报也都只讲准确率。
正解当正负样本不平衡时,准确率会有严重欺骗性。90% 好评、10% 差评的数据集里,模型全猜好评都能拿 90% 准确率,但对差评的召回率是 0。真实业务更该关注精确率、召回率与 F1,并结合业务成本决定阈值。阿茶给店员考核时,如果只问“你猜中的有多少”,而从不问“差评你漏了多少”,评价体系就会失真。
为何常见:准确率的定义最直观、最容易向非技术同事解释,也最常被模型训练日志自动打印出来,于是成了默认认知。
误区深度学习模型一定比朴素贝叶斯、SVM 好,所以我应该直接上 BERT,省去特征工程的麻烦。
正解在标注数据只有几百条的小场景下,简单模型往往表现更好;深度学习需要大语料和算力兜底,数据不足时容易过拟合。工程上还常出现朴素贝叶斯与 BERT 性能接近、但前者推理速度快几个数量级的情况。选型要看数据规模、延迟预算与可解释性要求,而不是盲目追捧参数量。
为何常见:深度学习在公开榜单上成绩亮眼,容易形成“复杂必胜”的错觉,忽略了榜单背后海量数据和昂贵算力的前提。
误区情感分析就是把文本里的正负词数量数一遍,个数多的那边就是情绪方向。“不是不好喝”里有“好喝”一个正词,应该判正面。
正解“不是不好喝”是双重否定,真实语义是“好喝”;“有点失望”和“极度失望”的情感强度差异巨大。词典法必须引入否定翻转和程度加权,机器学习法要确保特征中保留词序信息或 negations 特征,否则模型会把关键语义完全搞反。阿茶如果只听词数,会把“一点都不推荐”听成表扬,生意迟早要黄。
为何常见:因为初学时用“数正面词减负面词”三步实现一个 demo 很容易,而否定与程度的建模需要额外设计和数据标注,学习者往往止步于 demo 层面没有继续深化。
面试题
Q1. 情感分析的核心任务是什么?
- A.判断文本表达的情感倾向← 正确答案
- B.统计文本中的字符总数
- C.将文本翻译成另一种语言
- D.提取文本中的关键实体
答案:A。情感分析属于文本分类任务,输入文本、输出正面/负面/中性等极性标签,核心是判断情绪倾向。统计字符数、翻译、抽取实体分别是其他 NLP 任务,与情感倾向判断无关。
Q2. 以下哪一步不属于文本预处理?
- A.对中文句子进行分词
- B.去除“的、了、啊”等停用词
- C.清理 URL 与多余标点符号
- D.在 GPU 上训练分类模型← 正确答案
答案:D。分词、去停用词、噪声清洗都是典型的文本预处理环节,目的是把原始文本整理成干净、可计算的词序列。训练分类模型属于建模阶段,发生在预处理完成之后,所以 D 不属于预处理。
Q3. 词典法中用程度副词“很”修饰“失望”,正确做法是?
- A.直接忽略这个副词
- B.放大“失望”的情感权重← 正确答案
- C.把“失望”翻转成正面
- D.从文本中删除副词
答案:B。“很失望”比“有点失望”的负面强度更高、比“失望”更激烈,程度副词的作用就是按强度缩放情感词权重。忽略、删除会丢失强度信息,翻转只适用于否定词而非程度副词。
Q4. TF-IDF 中 IDF 分量的主要作用是什么?
- A.提高出现次数多的词的权重
- B.降低常见词的权重、突出区分词← 正确答案
- C.统计训练集的文档总数
- D.自动去除所有停用词
答案:B。IDF(逆文档频率)衡量一个词在多少文档里出现过。出现在越少文档里的词区分度越高,IDF 越大;像“的”“好”这种到处出现的词 IDF 很小。它的作用就是压低常见无区分词的权重,让“难喝”“惊艳”这类情感判别词凸显出来。
Q5. 朴素贝叶斯分类器基于的关键假设是什么?
- A.特征之间相互独立← 正确答案
- B.特征之间必须存在强相关
- C.文本必须按时间顺序排列
- D.分类不需要概率计算
答案:A。朴素贝叶斯“朴素”就体现在条件独立性假设上:给定类别时,各词的出现互不影响,因此可以把联合概率拆成各词概率的连乘。虽然现实中词与词并非完全独立,但这个简化带来了极高的计算效率,实际效果也相当不错。
Q6. 基于词典的情感分析最主要的局限是?
- A.难以处理未登录词、反讽与语境反转← 正确答案
- B.运行速度太慢无法上线
- C.必须使用 GPU 才能推理
- D.无法输出任何数值型结果
答案:A。词典法依赖词表覆盖与词的静态极性,遇到网络新词、讽刺语气和“真是谢谢了”这类反语时判断常常出错;它也无法感知词语在不同上下文中的极性变化。词典法速度极快、不依赖 GPU 且能输出得分,B/C/D 均不成立。
Q7. 类别严重不平衡时,以下哪个指标最能反映模型对少数类的识别能力?
- A.整体准确率
- B.F1 分数← 正确答案
- C.训练轮数
- D.词典规模
答案:B。当负面样本只占 5% 时,模型全猜正面准确率也有 95%,准确率完全失真。F1 是精确率与召回率的调和平均,精确率惩罚误报、召回率惩罚漏报,对少数类(如差评)的识别质量更敏感,因此不平衡场景下更可靠。训练轮数与词典规模不是评估指标。
Q8. RNN 能有效处理文本序列的关键原因是什么?
- A.通过隐藏状态在时刻间传递并保留历史信息← 正确答案
- B.训练过程中不需要任何损失函数
- C.只能接受固定长度输入,天然适合文本
- D.完全抛弃了词语之间的顺序关系
答案:A。RNN 的核心机制是隐藏状态逐时刻更新,当前输入结合上一时刻记忆形成新记忆,让模型得以建模顺序与上下文。RNN 依赖损失函数训练,输入长度可灵活变化,并且非常依赖顺序建模,因此 B/C/D 都是错误描述。
Q9. 文本预处理阶段通常包含哪些操作?
- A.对句子进行分词← 正确答案
- B.去除停用词与低频噪声← 正确答案
- C.清洗 URL、标签和特殊符号← 正确答案
- D.人工为每条样本标注情感
答案:ABC。分词把连续文本切成词,去停用词减负,清洗噪声让文本规范,这三步都是预处理的标准操作。人工标注情感发生在数据标注阶段,一般在训练之前单独进行,并不属于文本预处理本身的内容。
Q10. 关于模型评估与过拟合,以下说法正确的有?
- A.训练集表现远好于测试集是过拟合的信号← 正确答案
- B.交叉验证能比单次划分给出更稳定的评估← 正确答案
- C.模型参数量越大泛化能力必定越强
- D.早停与正则化可以缓解过拟合← 正确答案
答案:ABD。过拟合的典型特征就是训练集与测试集差距过大,模型死记训练数据而没有泛化;交叉验证通过多轮划分平均分数降低偶然性;早停、正则化、增加数据都是缓解过拟合的常规手段。参数量大并不等于泛化强,复杂模型反而更容易过拟合,C 错误。