在嘈杂的火锅店里,客人说“把那本图…递给我”,后面的音节被锅底的咕嘟声盖住了。声学上,“图…”既可能是“图书”,也可能是“突出”。可服务员小张几乎不犹豫就朝书柜方向走去——因为“把那本突出递给我”根本不像句人话,而“把那本图书递给我”才通顺。让机器在“听起来都差不多”的候选里,凭“哪一句更像人话”来拍板,这正是语音识别中语言模型的看家本领。 语言模型本质上是一个“句子打分器”:它给每个词序列算出一个概率,概率越高,句子就越符合人类语言习惯。它和负责“听声音”的声学模型分工协作——声学模型告诉你“刚才的音像哪些字”,语言模型告诉你“哪些字组合起来才像一句话”。两者结合,语音识别器才能从成千上万个同音组合里,快速锁定最合理的一句。本文顺着一条主线展开:为什么需要语言模型、它如何参与解码搜索、经典 N-gram 是怎么做的、神经网络语言模型强在哪、如何评估模型,以及生产中如何做领域适配。

岗位关联

语言模型是语音识别准确率提升的重要抓手,也是解码搜索、领域定制与指标调优的核心知识底座。掌握它,你才能精准定位“明明发音很像,却总被识别成错词”的根因。

目录
  1. 可视化演示
  2. 语言模型基础
  3. 解码搜索原理
  4. N-gram 模型
  5. 困惑度评估
  6. 神经语言模型
  7. 领域适配优化
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示语音识别中语言模型约束束搜索解码的完整过程,以及N-gram与神经网络语言模型在困惑度和准确率上的对比。

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

语言模型约束束搜索解码 声学模型输出帧级概率,语言模型为候选序列打分 束搜索每步保留束宽k个最优候选,LM约束降低搜索空间 score = AM × α + LM × β 语言模型显著提升识别准确率。

语言模型基础

服务员小张在火锅店干了三个月,练出一项本领:哪怕客人被辣得说话含混,他也能从“呲…锅…”里推出“微辣鸳鸯锅”五个字。这份本领一半靠耳朵——听见“呲”是“吃”的音;另一半靠脑子里的“点单常识”——菜单上确实有“鸳鸯锅”,而且“吃火锅”比“啜火过”像话得多。前者对应声学模型,后者就是语言模型。

在技术世界里,语言模型是一个“句子打分器”。给定词序列 $W=(w_1,w_2,\ldots,w_n)$,它输出一个概率 $P(W)$,衡量这句话在真实语言中出现的可能性。$P(W)$ 越大,词与词的搭配越自然。语言模型并不直接“听懂”声音,它只负责回答一个朴素问题:这些词串在一起,像不像一句人话?

要从数学上计算整个句子的概率,最自然的做法是利用链式法则,把联合概率拆成一串条件概率:

P(W)=P(w1,w2,…,wn)=∏i=1nP(wi∣w1,…,wi−1)\displaystyle P(W)=P(w_1,w_2,\ldots,w_n)=\prod_{i=1}^{n}P(w_i\mid w_1,\ldots,w_{i-1})

1. 拆句成链:把“整句概率”拆成“挨个预测下一个词”的连乘,这是所有语言模型的起点。

P(w1,w2,…,wn)=P(w1) P(w2∣w1) P(w3∣w1,w2)⋯P(wn∣w1,…,wn−1)\displaystyle P(w_1,w_2,\ldots,w_n)=P(w_1)\,P(w_2\mid w_1)\,P(w_3\mid w_1,w_2)\cdots P(w_n\mid w_1,\ldots,w_{n-1})

2. 读条件概率:$P(w_i\mid w_1,\ldots,w_{i-1})$ 表示已经看到前面 $i-1$ 个词之后,下一个词是 $w_i$ 的概率。

P(wi∣w1,…,wi−1)\displaystyle P(w_i\mid w_1,\ldots,w_{i-1})

3. 连乘的含义:整句话的概率是每一步预测概率的乘积;任一步骤不合理,整句就会被打低分。

∏i=1nP(wi∣w1,…,wi−1)\displaystyle \prod_{i=1}^{n}P(w_i\mid w_1,\ldots,w_{i-1})

这个概率从哪来?答案是语料。给模型大量文本,它就能统计出“想”后面接“吃”的次数远多于接“啜”的次数。语言模型家族分两大类:基于计数的 N-gram 模型,和基于神经网络的神经语言模型。两代模型殊途同归——都在估算 $P(w_i\mid \text{history})$。就像小张脑海里的“点单常识库”,既存着旧经验(统计次数),也带着对整桌客人的全局观察(上下文建模)。

解码搜索原理

小张听客人说了一句含混的“窝…香…滋…苹…果”,他大脑里瞬间冒出好几条候选:是“我想吃苹果”,还是“卧像啜平裹”?他一边听一边排除,最后挑出整句话最顺口、也最符合点单场景的一种。这个过程就是解码搜索。

语音识别系统面对的难题是:词表假设有一万个词,一个十词长的句子就有一万亿亿种组合,根本不可能逐一枚举。真正的系统采用束搜索:每一步只保留得分最高的 $K$ 条路径,像小张心里同时装着两三个候选点单,边听边淘汰。

解码的数学准则来自贝叶斯公式。设 $O$ 是声学特征,$W$ 是候选词序列,识别目标就是找一个 $W$ 使后验概率最大:

W∗=arg⁡max⁡W  P(O∣W) P(W)\displaystyle W^*=\mathop{\arg\max}_{W}\;P(O\mid W)\,P(W)

1. 语言模型先验:$P(W)$ 是语言模型给出的先验概率,表示这句话本身有多像人话。

P(W)\displaystyle P(W)

2. 声学似然:$P(O\mid W)$ 是声学模型给出的似然,表示“如果真说的是 $W$,实际声音特征有多像 $O$”。

P(O∣W)\displaystyle P(O\mid W)

3. 选最大值:$\arg\max$ 表示遍历所有候选 $W$,挑出两者乘积最大的那一个作为识别结果。

W∗=arg⁡max⁡WP(O∣W)P(W)\displaystyle W^*=\mathop{\arg\max}_{W}P(O\mid W)P(W)

工程实现时,概率通常取对数相加,并对语言模型和声学模型分别加权重。调大语言模型权重,结果会更偏向常见句式;调大声学模型权重,则更忠实于原始声音。小张的“听感”和“常识”也会随环境调整:店里安静时他更依赖听感(声学权重高),店里嘈杂时他更依赖对点单套路的预判(语言模型权重高)。这正是解码器里的“权重”在现实中对应的直觉。

N-gram 模型

小张猜菜名,最重要的参照是“上一道菜”。客人刚点了肥牛,下一句大概率是“再来盘青菜”,而不是“再来架飞机”。他不需要回忆客人三小时前在别的店喝了什么——只盯着最近几个词,就能做判断。这种“只看最近几个词”的简化,正是 N-gram 模型的核心思想:马尔可夫假设。

N-gram 假设第 $i$ 个词只依赖前面 $n-1$ 个词。以三元语法为例:

P(wi∣w1,…,wi−1)≈P(wi∣wi−2,wi−1)\displaystyle P(w_i\mid w_1,\ldots,w_{i-1})\approx P(w_i\mid w_{i-2},w_{i-1})

1. 截断历史:把“所有历史词”压缩成“最近 $n-1$ 个词”,让概率可计算。

P(wi∣wi−n+1,…,wi−1)\displaystyle P(w_i\mid w_{i-n+1},\ldots,w_{i-1})

2. 二元特殊情况:当 $n=2$ 时,只看前一个词,即 $P(w_i\mid w_{i-1})$。

P(wi∣wi−1)\displaystyle P(w_i\mid w_{i-1})

3. 加一平滑兜底:为了避免语料里没出现过的组合概率为 0,给计数加上一个常数 $1$,分母同步加上词表大小,这样所有组合都有一个小概率。

P(wi∣wi−1)=C(wi−1,wi)+1C(wi−1)+∣V∣\displaystyle P(w_i\mid w_{i-1})=\frac{C(w_{i-1},w_i)+1}{C(w_{i-1})+|V|}

N 越大,能捕捉的约束越精细,但“长的词串”在有限语料里会出现次数急剧下降,甚至完全没见过,导致零概率爆炸。因此实际系统常用 $3$-gram 到 $5$-gram,并配合剪枝与回退。小张的经验也像一本“菜谱 N-gram”:他见过的常见搭配形成稳定先验,没见过的搭配就用“其他菜都有可能”——也就是平滑——来兜底。正是这份统计智慧,让语音识别在真实嘈杂环境中依然能保持稳定。

困惑度评估

怎么判断小张“预判点单”的水平?看他平均“犹豫”多少次。如果客人刚开口他就能接上后半句,说明他对点单套路很熟;如果每句话都要愣一下再猜,那他就很难胜任高峰期的点单。语言模型的“犹豫指数”就是困惑度。

困惑度(Perplexity,PPL)的定义是:对一段测试文本,计算模型给出的平均负对数似然,再取以 2 为底的指数。它的本质是“每个位置上,模型平均要在多少个词里做选择”。PPL 越低,模型越自信、预测越准:

PPL(W)=2−1N∑i=1Nlog⁡2P(wi∣w1,…,wi−1)\displaystyle \mathrm{PPL}(W)=2^{-\frac{1}{N}\sum_{i=1}^{N}\log_2 P(w_i\mid w_1,\ldots,w_{i-1})}

1. 单点对数概率:模型对第 $i$ 个词给出条件概率,取 $\log_2$ 后得到一个负数,概率越小负数绝对值越大。

log⁡2P(wi∣w1,…,wi−1)\displaystyle \log_2 P(w_i\mid w_1,\ldots,w_{i-1})

2. 取平均:把整句 $N$ 个词的对数概率平均,代表模型平均每个位置有多“惊讶”。

1N∑i=1Nlog⁡2P(wi∣w1,…,wi−1)\displaystyle \frac{1}{N}\sum_{i=1}^{N}\log_2 P(w_i\mid w_1,\ldots,w_{i-1})

3. 还原成指数:加负号并作为 2 的指数,把对数空间换算成“等效候选词数”的直觉单位。

PPL(W)=2−1N∑i=1Nlog⁡2P(wi∣w1,…,wi−1)\displaystyle \mathrm{PPL}(W)=2^{-\frac{1}{N}\sum_{i=1}^{N}\log_2 P(w_i\mid w_1,\ldots,w_{i-1})}

PPL 是一个相对指标,常用于对比不同语言模型或不同训练数据的优劣。但要小心:PPL 下降不一定等比例地让字错误率(WER)下降,因为最终识别还取决于声学模型与解码搜索。小张的“犹豫指数”低,不代表他在每个吵闹角落都能一次听懂——他还需要听力好(声学模型强),两者配合才谈得上整体表现。

神经语言模型

店长老周比小张更厉害:他不仅看上一道菜,还会观察整桌人的口味、聊天的话题,甚至记得某位熟客上次来点的锅底。他能把“全局信息”都纳入对下一句话的预判。N-gram 只能盯住最近的 $n$ 个词,而神经网络语言模型(NNLM)就像这位店长——用稠密向量和深层结构编码全部历史上下文。

NNLM 先把已经出现的词映射成向量,通过循环网络或自注意力结构,把它们融合成一个上下文向量 $h$。然后,用 $h$ 和词表中每个候选词的向量 $v_w$ 做内积,再经 softmax 归一化,得到下一个词的概率分布:

P(wi∣C)=exp⁡(h⊤vwi)∑wj∈Vexp⁡(h⊤vwj)\displaystyle P(w_i\mid C)=\frac{\exp(h^{\top} v_{w_i})}{\sum_{w_j\in V}\exp(h^{\top} v_{w_j})}

1. 编码上下文:用神经网络把历史词序列压缩成一个向量 $h$,捕获全局信息。

h=fθ(w1,…,wi−1)\displaystyle h=f_{\theta}(w_1,\ldots,w_{i-1})

2. 打分:$h$ 与候选词向量 $v_{w_i}$ 做内积,得分越高表示这个候选与当前语境越契合。

h⊤vwi\displaystyle h^{\top} v_{w_i}

3. 归一化:用 softmax 把所有候选得分转成正数且和为 1 的概率分布。

P(wi∣C)=exp⁡(h⊤vwi)∑wj∈Vexp⁡(h⊤vwj)\displaystyle P(w_i\mid C)=\frac{\exp(h^{\top} v_{w_i})}{\sum_{w_j\in V}\exp(h^{\top} v_{w_j})}

NNLM 的优势是能利用长距离上下文和词义相似性,比如“苹果”和“香蕉”在向量空间里相近,模型可以举一反三。代价是计算量大、推理慢,因此在线上 ASR 系统里,通常先用 N-gram 做第一遍快速搜索,再用 NNLM 对候选列表“重打分”。这就像火锅店的人工配合:小张靠经验和直觉快速接单(N-gram),店长在空闲时复盘全局、微调服务策略(NNLM),两人合起来才是最佳组合。

领域适配优化

小张被总公司调到隔壁的日料店,第一天就闹笑话:客人说“要一份三文鱼”,他脑子里却自动弹出“三碗鱼”。原因是他脑子里的常识库来自川味火锅店。他需要快速补充“日料菜单知识”,但又不能把中文的点单逻辑全忘掉——这就是领域适配。

语音识别系统也有同样的痛点:通用语料训练的语言模型,不理解“申购”“承销”这类金融术语,也不认识某位用户的歌手名。解决手段之一是线性插值,把通用模型和领域模型按权重混合:

Pdomain(W)=λ Pin(W)+(1−λ) Pgeneral(W)\displaystyle P_{\mathrm{domain}}(W)=\lambda\,P_{\mathrm{in}}(W)+(1-\lambda)\,P_{\mathrm{general}}(W)

1. 准备两个模型:$P_{\mathrm{general}}$ 用大规模通用语料训练,$P_{\mathrm{in}}$ 用目标领域语料训练。

Pgeneral(W),Pin(W)\displaystyle P_{\mathrm{general}}(W),\quad P_{\mathrm{in}}(W)

2. 加权求和:用 $\lambda$ 控制领域模型的比例,$\lambda$ 越大越倾向领域表达习惯。

Pdomain(W)=λPin(W)+(1−λ)Pgeneral(W)\displaystyle P_{\mathrm{domain}}(W)=\lambda P_{\mathrm{in}}(W)+(1-\lambda)P_{\mathrm{general}}(W)

3. 调参验证:在开发集上试不同 $\lambda$,选让识别效果最好的值;实际系统中常做成可动态调整。

λ=领域可信度领域可信度+通用可信度\displaystyle \lambda = \frac{\text{领域可信度}}{\text{领域可信度}+\text{通用可信度}}

除了线性插值,工程上还有一个非常实用的“热词表”方法:把用户名单、品牌名、歌曲名临时注入识别器,并提高这些词的语言模型概率。小张调到日料店后,手里攥一张“本店热卖 Top 10”纸条(热词表),再加上对中文点单基本语序的理解(通用模型),很快就能在新环境里流畅服务。语音识别系统正是用这些手段,让同一个底座适配金融、医疗、音乐、客服等千差万别的场景。

AI 应用场景

音乐搜索中的热词增强

阶段:解码搜索阶段

解决的问题:用户对音箱说“播放周杰伦的晴天”,声学上“晴天”和“情天”几乎同音。通用语言模型更偏向高频词“情天”,导致歌名被误写。传统做法完全依赖通用语料统计,歌名往往不在高频词表里;通过热词表注入歌单中的歌手名和歌曲名,并临时提高这些词的语言模型概率,识别结果会明显向正确歌名倾斜。

具体案例:某音乐 App 的语音搜索渠道,将曲库 TOP 1000 的歌手名、歌名动态注入语言模型后,歌曲名识别准确率从 82% 提升到 95%。用户只需说一次歌名,就能正确拉起播放列表。

金融会议纪要转写定制

阶段:领域适配与训练阶段

解决的问题:券商晨会转写场景里,“承销”“逆回购”“资管新规”等术语在通用语料中频率不高,容易被识别成“成销”“议回购”等常见同音词。通过收集半年金融会议文本,训练一个小型领域 N-gram 语言模型,并与通用模型做线性插值,能够显著提升金融术语的召回率。

具体案例:某金融科技公司的会议纪要产品在注入领域语言模型后,“承销”识别正确率从 68% 升至 92%,客户对转写稿的后期修正量降低了一半。

客服质检中的关键词准召

阶段:实时转写与后处理阶段

解决的问题:电商客服质检系统需要捕捉“退款”“假一赔三”等高风险词,但电话语音嘈杂、口音多样,单纯靠声学模型容易出现漏召回。利用该行业的客服对话语料训练语言模型,并针对高风险词调高权重,可以显著改善实时转写中的关键词召回。

具体案例:某电商平台在客服录音质检流水线上引入行业语言模型后,高风险词的召回率从 74% 提高到 89%,质检工单发现违规对话的数量明显增长。

Python 演示

python87 行
# -*- coding: utf-8 -*-"""简化版二元语法语言模型 + 束搜索演示语音识别中“拼音候选序列”如何利用语言模型消歧"""import math CORPUS = [    "我想吃苹果派",    "我想吃西瓜",    "你想喝奶茶",    "他要吃火锅",    "他们都想喝果汁",    "他爱吃苹果",    "她想吃面条",    "我不吃苹果",    "她也爱喝柠檬茶",]  class NgramLM:    def __init__(self, corpus, k=1):        self.k = k        self.vocab = set()        self.uni = {}        self.bi = {}        for s in corpus:            words = list(s)            for w in words:                self.vocab.add(w)                self.uni[w] = self.uni.get(w, 0) + 1            for a, b in zip(words, words[1:]):                self.bi[(a, b)] = self.bi.get((a, b), 0) + 1        self.V = len(self.vocab)        self.total = sum(self.uni.values())     def prob(self, w, h):        if h is None:            num = self.uni.get(w, 0) + self.k            den = self.total + self.k * self.V        else:            num = self.bi.get((h, w), 0) + self.k            den = self.uni.get(h, 0) + self.k * self.V        return num / den     def log_prob(self, w, h):        return math.log(self.prob(w, h))     def beam_search(self, candidates, beam=2):        paths = [(None, [], 0.0)]        for cand in candidates:            nxt = []            for h, seq, lp in paths:                for w in cand:                    nxt.append((w, seq + [w], lp + self.log_prob(w, h)))            nxt.sort(key=lambda x: x[2], reverse=True)            paths = nxt[:beam]        best = paths[0]        return "".join(best[1]), best[2]     def score_seq(self, seq):        lp = 0.0        h = None        for w in seq:            lp += self.log_prob(w, h)            h = w        return lp  def main():    lm = NgramLM(CORPUS)    candidates = [        ["我", "卧", "喔"],        ["想", "像", "响"],        ["吃", "啜", "嗤"],        ["苹", "平", "瓶"],        ["果", "裹", "过"],    ]    sent, score = lm.beam_search(candidates, beam=2)    print("束搜索最佳句子:", sent)    print("对数概率:", round(score, 4))    for s in ["我想吃苹果", "我想吃火锅", "卧像啜平裹"]:        print("候选 {} 的分数: {:.4f}".format(s, lm.score_seq(list(s))))  if __name__ == "__main__":    main()
目的:用一个小型中文语料训练二元语法语言模型,再用束搜索从拼音同音候选序列中找出最合理的句子,完整演示了语言模型 + 解码搜索的协同机制。
  1. num = self.bi.get((h, w), 0) + self.k在二元组合计数上做加一平滑,避免未出现组合概率为 0。
  2. den = self.uni.get(h, 0) + self.k * self.V分母用前一个词的总计数加词表大小,让概率分布归一化。
  3. nxt.sort(key=lambda x: x[2], reverse=True)对候选路径按累计对数概率从高到低排序。
  4. paths = nxt[:beam]只保留得分最高的 beam 条路径,这就是解码中的束搜索剪枝。
  5. candidates = [["我", "卧", "喔"], ...]模拟声学模型在每个发音位置给出的同音候选字。
  6. lm.score_seq(list(s))用同一语言模型给其他候选句子打分,方便对比不同句子被选中的原因。

常见误区

误区我一直以为语音识别里那个黑盒子就是语言模型,输入音频直接输出文字,模型内部怎么分工不重要。

正解语音识别链路里至少有两条腿:声学模型负责“听音辨字”,语言模型负责“对句子打分”。前者回答“声音像哪些字”,后者回答“哪些字串起来像人话”,解码器再把两者结合选出最佳路径。没有语言模型,声学模型面对一堆同音字会非常迷茫。

为何常见:入门时看整体演示,只看到“音频进、文字出”,很容易忽略内部的模型分工。

误区既然三元语法比二元好,那把 N 调到 10,识别率岂不是更高了?

正解N 越大,需要的完整词串在语料中出现的次数越少,数据稀疏问题会急剧爆发,大量组合概率为零。实际系统常用 3-gram 到 5-gram,并配合裁剪、迭代平滑和回退来保持鲁棒性。

为何常见:直觉是“更多上下文等于更准”,但忽略了长词串在有限语料里几乎不会重复出现。

误区离线测试里困惑度降了二十多个点,上线后 WER 肯定也会跟着大幅下降。

正解PPL 只衡量语言模型对文本的预测能力,而最终识别结果还受声学模型、解码搜索权和噪声环境影响。PPL 改善是积极信号,但不一定线性转化为 WER 的下降,尤其当声学模型误差占主导时。

为何常见:因为开发时常用 PPL 作离线指标,而离线测试集与线上真实语音的分布差异容易被忽略。

误区NNLM 效果全面碾压 N-gram,那就把线上解码全换成神经网络模型。

正解NNLM 推理开销大,直接用于大规模解码会拖慢实时性。工程上普遍用 N-gram 做第一遍搜索,再用 NNLM 对候选集重打分,兼顾速度与效果。

为何常见:学术界论文都在刷 NNLM 的 SOTA,容易忽略真实系统对时延和吞吐量的硬约束。

误区只要把网络文本下载足够多,模型自然会聪明,不需要特意准备领域数据。

正解通用语料提供的是通用分布,但“回购”“心梗”“承销”这类领域词在通用语料中出现频率低,容易被更常见的高频同音词吞掉。领域语料、热词表和动态插值才是解决专有名词识别问题的关键。

为何常见:通用语料体量大、获取成本低,很容易让人误以为量大就能覆盖一切场景。

面试题

Q1. 语言模型在语音识别中的主要作用是?

单选题 · easy

  • A.识别音频中的噪音
  • B.对词序列进行打分← 正确答案
  • C.提取声学特征向量
  • D.增强语音信号质量

答案:B。语言模型负责给候选词序列计算概率,判断哪个句子更像人话。A 是降噪任务,C 是声学特征提取,D 是语音增强,都不属于语言模型的职责。

Q2. 二元语法 P(苹果|吃) 表示什么?

单选题 · easy

  • A.在吃之后出现苹果的概率← 正确答案
  • B.在苹果之后出现吃的概率
  • C.二者同时出现的概率
  • D.苹果是句首词的概率

答案:A。P(苹果|吃) 读作“在已知前一个词是吃的条件下,下一个词是苹果的概率”,这是二元语法的核心形式。B 把条件对象颠倒了,C 是联合概率,D 与句首信息无关。

Q3. 束搜索在解码中的主要作用是?

单选题 · easy

  • A.保留得分最高的 K 条路径← 正确答案
  • B.枚举所有可能的路径
  • C.将音频切成等长片段
  • D.统计语料中的词频

答案:A。束搜索每步只保留得分最高的 K 条候选路径,避免穷举指数级组合。B 是穷举搜索,C 是音频分帧,D 是语料统计,都不是束搜索的目的。

Q4. 贝叶斯准则 W\*=argmax P(O|W)P(W) 中 P(W) 指的是?

单选题 · mid

  • A.声学模型的似然概率
  • B.语言模型的先验概率← 正确答案
  • C.解码器的后验概率
  • D.音频的特征分布

答案:B。P(W) 是语言模型给出的先验概率,衡量词序列本身有多自然;P(O|W) 才是声学似然。A 对应 P(O|W),C 是整个后验,D 与音频特征分布无关。

Q5. 3-gram 模型计算 P(苹果|我想吃) 时,实际使用的是?

单选题 · mid

  • A.P(苹果|我想)
  • B.P(苹果|想吃)← 正确答案
  • C.P(我想|吃)
  • D.P(苹果|我)

答案:B。3-gram 只看最近 2 个历史词,因此 P(苹果|我想吃) 被近似为 P(苹果|想吃)。A 是用了 3 个历史词,C 把条件方向弄反,D 是二元语法而不是三元语法。

Q6. 下列哪些是神经语言模型相对 N-gram 的优势?

多选题 · mid

  • A.可建模更长上下文← 正确答案
  • B.能利用词间语义相似性← 正确答案
  • C.完全不需要训练数据
  • D.可灵活处理长距离依赖← 正确答案

答案:ABD。NNLM 用上下文向量建模全部历史词,能处理长距离依赖,并能通过向量相似性感知词与词的关系。C 明显错误——神经模型对训练数据的需求反而更大。

Q7. 困惑度越低说明语言模型?

单选题 · mid

  • A.对测试数据的预测越准确← 正确答案
  • B.训练语料的词数越多
  • C.模型参数数量越多
  • D.解码速度变得越快

答案:A。困惑度衡量模型对测试集的平均“惊讶程度”,值越低预测越准。参数多、语料大不一定直接降低 PPL,解码速度也与 PPL 无关。

Q8. 下列做法能提升语音识别语言模型领域适配能力的是?

多选题 · hard

  • A.收集领域语料重新训练← 正确答案
  • B.在解码时注入热词表← 正确答案
  • C.完全忽略领域差异
  • D.融合领域通用模型← 正确答案

答案:ABD。领域语料训练、热词表注入、线性插值融合都是工程上常见的领域适配手段。C 的做法会保留通用模型的偏差,无法提升特定领域的识别表现。

Q9. 在实际 ASR 系统中,神经语言模型通常部署在哪个环节?

单选题 · hard

  • A.替换声学模型做前端特征提取
  • B.第一遍搜索后对候选重打分← 正确答案
  • C.在解码器内逐帧实时计算
  • D.替代语言模型做端点检测

答案:B。NNLM 计算量大,通常在第一遍 N-gram 解码产生候选列表后,再对候选句子重打分。A 是声学模型任务,C 因速度限制并不常见,D 是信号处理任务,与语言模型无关。

Q10. 关于困惑度与 WER 的关系,以下说法正确的是?

单选题 · extreme

  • A.困惑度与 WER 必然线性相关
  • B.困惑度下降通常有利于 WER← 正确答案
  • C.困惑度升高一定降低准确率
  • D.二者之间没有任何关系

答案:B。困惑度下降代表语言模型预测更准,通常会帮助解码器做出更好选择,从而有利于 WER,但不是严格线性关系。A、C 过于绝对,D 忽略了两者的实际相关性。