想象一下,你是一位餐厅老板,想把自家招牌菜的菜单翻译成英文,招待外国客人。你不会英文,但手里有两样东西:一本厚厚的双语菜单册(记录着很多句子中英文对照),以及一摞英文菜单(记录着英文菜名通常怎么搭配使用)。你不敢保证翻译绝对完美,但你有一条朴素逻辑:在双语册里找“长得最像”的对应片段拼起来,再按英文菜单的习惯润色成通顺句子。这就是统计机器翻译(SMT)的雏形——不靠神机妙算的语法天才,而是靠“翻旧账”和“看习惯”来猜最合理的译文。这套思路在深度学习爆发之前,统治了机器翻译领域十几年。本文会用“查菜谱配菜”的比喻,带你从零看懂 SMT 的核心原理。
对 AI 从业者而言,SMT 是理解“数据驱动翻译”的基石:掌握翻译模型、语言模型、平行语料与解码搜索后,你不仅看得懂老一代翻译系统,更能为理解神经机器翻译的演进打下扎实底子。
可视化演示
展示统计机器翻译三大核心环节:平行语料词对齐训练翻译模型、短语表抽取计算翻译概率、束搜索解码结合语言模型生成最优翻译,动态展示BLEU分数与翻译概率。
本节配有交互动效(进入视口后自动加载,约 3KB)。
词对齐 词对齐 短语表 解码 P(e|f) ∝ P(f|e) × P(e)
翻译建模思想
你开了一家“双语餐厅”,后厨墙上贴满了中英对照的菜名便签。但你会发现:同一道“红烧肉”,有时被翻译成“braised pork“,有时被写成”red-cooked pork“。哪种更靠谱?统计机器翻译的核心态度是:不给唯一答案,只给概率。每一种翻译都是一种可能,只是可能性有大有小。这个思路像极了经验丰富的厨师——他不会说某道菜”绝对“怎么做,而是告诉你”八成“该这样做,”两成”可以那样做。
概率翻译观进一步需要一个统一框架来组织这些“可能性”。SMT 借用了通信工程中的噪声信道模型:假设你想说的中文句子 S,经过一个“嘈杂的翻译信道”后,变成了我们看到的英文句子 T。翻译的任务,就是根据收到的 T,反推出最可能被说出的 S。这个“反推”过程自然引出贝叶斯公式——它像一个逆向推理的法宝,把“已知 T 求 S”转化成两个更易统计的乘积。
从技术上说,统计机器翻译的目标函数可以写成如下形式:在给定译入语文本条件下,寻找使后验概率最大化的源语言句子。
回到餐厅比喻:你点了一道英文菜“braised pork with brown sauce“,厨房要猜这道菜对应的中文名。翻译模型负责回答”这个英文菜名有多像某道中文菜“,语言模型负责回答”猜出的中文名在中文菜单里读起来顺不顺口”。两者相乘,得分最高的那个中文菜名,就是最后端上桌的翻译结果。
- 候选句子 S表示我们猜测的源语言句子(比如中文原句),在所有可能的 S 中做选择。
- 贝叶斯展开把 P(S|T)(已知英文求中文的概率)转化成两个因子的乘积,P(T|S) 是翻译模型,P(S) 是语言模型。
- 归一化省略分母 P(T) 对所有 S 都一样,不影响最大值比较,所以直接省略。
平行语料准备
要“翻旧账”,首先得有一本厚实的双语菜单册。这本册子在 SMT 里叫做平行语料——大量互为翻译的中英文句子对。比如“我喜欢苹果 / I like apples”就是一对。语料的规模和质量,直接决定了后续所有模型能学到的“经验”上限。这就好比:你的双语菜单册越厚、记录越准确,厨师配菜时能参考的“先例”就越多。
但现实中的语料往往很“脏”。爬虫抓来的双语网页、政府白皮书、电影字幕……这些数据可能带着乱码、重复行、长度严重不匹配的句子对甚至完全错位的翻译。所以准备工作必须经过三步:清洗(去掉乱码和噪声)、预处理(分词、小写化、去除超长句)、句对齐(把互为翻译的句子配对)。其中句对齐尤其关键——你的菜单册如果装订错乱,把“麻婆豆腐”对到了"fried rice"上,那所有统计都会跟着出错。
句对齐的经典方法是基于长度和词汇的混合策略:双语文本中互译的句子往往长度成比例,同时会有一些“锚点词”(如数字、专有名词)帮助锁定对应关系。对齐结果通常用一个二分图来表示,每条边连接一对互译句子。
菜单册一旦整理妥当,接下来就能开始真正“学手艺”了。语料准备的每一步都像是在为厨师准备标准化食材:清洗像择菜去根,分词像切丁切片,句对齐像按食谱把主料配菜分袋装好。没有这套准备工序,再好的统计模型也无米下锅。
- 候选句子对s_i 是源语言第 i 句,t_j 是目标语言第 j 句,我们要判断它们是否互为翻译。
- 长度因子源句与目标句的长度比符合经验分布时,对齐概率更高。
- 词汇锚点共现的专有名词、数字越多,越可能是翻译对。
词对齐算法
菜单册里每一行是中英对照句子,但厨师真正要学的是“词”级别的搭配:中文的“红色的”到底对应“red“还是”red-colored“?词对齐解决的就是这个”词与词谁跟谁配对”的问题。它像在双语菜单的一行里,用线把互译的词连起来——线画得准,后面抽取短语才靠谱。
词对齐最经典的数学工具是 IBM 模型家族,其中 IBM Model 1 最简:假设每个源语言词独立地生成一个目标语言词,且每个目标词的对齐位置互不影响。但这个简化模型面临一个“鸡生蛋”困境:要知道每个词去哪了,得先知道对齐概率;要知道对齐概率,又得先有对齐结果。EM 算法(期望最大化)破局的方式是迭代:先给所有对齐一个均匀的猜测,统计出一版概率;再用这版概率重新给对齐打分,更新统计;反复循环,直到概率收敛稳定。
这个词对齐过程用公式表达,就是迭代地估计“源词 s 生成目标词 t”的期望频次,并归一化为概率:
就像厨师反复试菜调整配方——先凭直觉放调料,尝一口,根据味道反馈修正比例,再尝再调,直到味道稳定。EM 算法也是这样一个“猜-改-再猜”的循环,若干轮后,词对齐概率便从粗糙的均匀分布收敛到能反映真实双语规律的分布。
- 对齐变量 a表示一个具体词对齐方案,即每个目标词位置对应哪个源词位置。
- 指示函数当且仅当当前对齐把源词 s 与目标词 t 连在一起时取 1,否则取 0,用来计数。
- 期望频次计数分子累加“源词 s 与目标词 t 被对齐”的期望次数。
- 归一化分母分母累加源词 s 参与的所有对齐期望次数,保证概率和为 1。
翻译模型原理
词对齐完成之后,厨师终于可以“切菜配菜”了——从对齐好的句对中抽取短语对。这里“短语”不严格等于语言学上的短语,它指任何连续的词串组合。比如从“红色的 苹果 / red apples”这一对齐句中,可以抽取出“红色的 苹果 ↔ red apples”、“红色的 ↔ red”等若干短语对。抽取规则的核心是:只要短语内部所有词的对外对齐不“越界”,就可以组合成一个合法的短语对。
短语抽取完成后,进入翻译模型的核心——计算每个短语对的翻译概率。概率越高,说明这个短语在平行语料中越常被用来互译。同时 SMT 还要考虑调序概率:不同语言里词序不同,中文说“红色的苹果”,英文说“red apples“,形容词与名词的先后顺序就不一样。调序模型就是用来惩罚那些”词序不符目标语言习惯”的翻译假设。
短语翻译概率的计算非常简单朴素,就是频率的比值——我们需要计算给定源短语时,某个目标短语出现的条件概率:
回到餐厅:短语抽取就像从菜单册里剪贴出可复用的“菜名碎片”,比如“宫保 鸡丁”可以拆成“宫保”和“鸡丁”两个独立单元,也可以组合成整块菜名。翻译概率就是这些碎片在历史菜单中“搭配出现”的频率——越常一起出现,越说明它们是可靠的搭配。调序模型则像摆盘规则:盘子左边放主菜还是配菜,得按目标顾客的用餐习惯来。
- 短语对共现次数count(s, t) 表示源短语 s 与目标短语 t 在训练语料中作为合法短语对出现的频次。
- 分母归一化对目标端所有可能的翻译候选 t' 求和,把频次化为 0 到 1 之间的概率。
- 条件概率含义读作“在已知源短语是 s 的条件下,目标短语选择 t 的概率”。
语言模型原理
光会“翻词”还不够。哪怕每个单词都翻对了,“I like red apples“和”Like I apples red“哪个像人话?任何说英语的人都会选前者。语言模型就是那个”像不像人话”的裁判。它的作用是计算一个句子在目标语言中出现的可能性,也就是 P(S)。这个概率可以让翻译系统優先选择那些读起来自然、通顺的译文,而不是逐词硬翻的怪句子。
最常用的语言模型是 N-gram 模型:它假设第 n 个词的出现只依赖前面 n-1 个词。比如二元模型(bigram)认为“apples“的出现只依赖前一个词”red“。这个假设虽然粗糙,却把”整句概率“这个几乎无法统计的问题,拆解成了”相邻词组概率“这种可以从语料中轻松数出来的小问题。但小问题也有麻烦:很多合法搭配在有限语料里一次都没出现过,概率会算成 0。于是需要平滑技术,比如给所有没见过的 n-gram 一个微小的”保底概率”,避免一票否决。
N-gram 语言模型计算句子概率的方式是链式乘法——我们要把句子里每个位置的词在既定历史条件下的概率乘起来:
这个裁判的评判标准,就是你开业以来积累的英文菜单习惯。比如你发现过去 100 道英文菜名里,90 道把颜色词放在名词前,那 “red apples“ 就会得到很高的语言模型分,而 ”apples red“ 得分就低。翻译系统在最后选择译文时,就会自觉避开”客人不顺口”的搭配,端出更地道的句子。
- 词序列w_1 到 w_m 表示句子里的 m 个词,语言模型要为整个序列打分。
- 连乘运算从第一个词一直乘到最后一个词,每个因子都是条件概率。
- 条件窗口P(w_i | ……) 里的历史条件是它之前紧邻的 n-1 个词。
解码搜索策略
翻译模型和语言模型都训练好了,但真正“出菜”时厨师面临一个大难题:句子越长的,可能的翻译组合方式呈指数爆炸。给定一个中文句,把短语表里每个短语的候选翻译都拿来拼一拼,可能的英文句子数量是天文数字。解码就是在这片巨大的可能性空间里,高效搜索“翻译模型 × 语言模型”总分最高的译文。
SMT 中最主流的解码策略是柱搜索(beam search)。它的思路很“贪心但留有余地”:从左到右逐词生成译文,每一步只保留得分最高的前 K 个部分翻译假设(这 K 个就称为“柱”)。每一步又用新的短语扩充这些假设——比如假设已生成 “I like“,下一步可以把它扩成 ”I like red“ 或 ”I like eating”,扩充后重新排序,再次截断到前 K 个。直到所有源语言词都被覆盖,再从最终幸存者中挑出总分最高者。
解码过程的打分函数把各路证据汇总在一起,我们要为每个候选翻译 T 计算它的综合得分:
柱搜索就像厨师同时开几个灶台试做几版菜:灶台 A 先炒主菜,灶台 B 先做配菜,每个灶台都在不断试错,但灶台数量有限(这就是柱宽 K)。每次尝完味道,留下最满意的几版继续改进,过早出局的候选直接倒掉。最终出锅的,就是所有试做版本里综合评价最高的一道菜。
- 短语翻译得分每个源短语块 s_i 到目标短语块 t_i 的翻译概率连乘。
- 调序得分对短语顺序发生调整的情况给出概率惩罚。
- 语言模型得分整句目标译文在 N-gram 语言模型下获得的通顺性分数。
质量评估方法
做出来的翻译到底好不好?这需要一个“品菜师”。在机器翻译领域,最著名的自动评估指标是 BLEU(Bilingual Evaluation Understudy,双语评估替补)。它的核心思想非常直观:让机器译文与人工参考译文做“词语重合度”对比。重合的 n-gram(连续 n 个词的片段)越多,得分越高。BLEU 还加了一个长度惩罚因子:机器译文明显比参考译文短时,会扣分,防止系统靠“少翻一点”来钻空子。
BLEU 的计算公式综合了多个 n-gram 的精确率以及长度惩罚,它把不同 n 值下的匹配率取几何平均:
回到餐厅场景,BLEU 就是一位只看“食材重叠度”的品菜师:他把你端出的菜和名厨的标准菜谱对比,看有多少食材、多少步骤能对上号。但这位品菜师也有局限——他不太懂“换种食材同样好吃”的创意做法。所以工程实践中通常 BLEU 与人工评价配合使用:自动指标用于快速迭代筛选,人工评价用于最终把关口感与地道程度。
- n-gram 精确率p_n 表示机器译文里长度为 n 的词组,有多少比例也能在人工参考译文中找到。
- 对数平均对 p_1 到 p_N 取对数再加权平均,让不同的 n-gram 匹配率共同起作用。
- 长度惩罚因子当机器译文比参考译文短时 BP < 1,用来压低分数。
AI 应用场景
场景一:跨境电商的商品标题翻译
阶段:数据准备与模型训练
解决的问题:跨境电商需要把中文商品标题批量翻译成英文、西班牙语等多语言。传统做法是雇用人工翻译,成本高且速度慢;SMT 可以利用平台积累的双语商品数据训练专用翻译模型,对高频商品术语(如“无线充电”“降噪耳机”)的翻译更准确。
具体案例:某出海电商平台积累了 50 万条中英商品标题平行语料,用 SMT 训练短语翻译模型后,商品标题翻译的 BLEU 值从通用的 18 提升到 31,同时每周新上架商品的翻译从人工的 3 天缩短到 10 分钟。
场景二:政府白皮书与法律文档的辅助翻译
阶段:解码与质量评估
解决的问题:政府文本和法律条款对术语一致性要求极高,泛化模型容易把“当事人”翻成“the person concerned“而非法律界惯用的”the party concerned”。SMT 通过领域平行语料训练出的短语表,能锁定特定术语的固定搭配,保证全文术语统一。
具体案例:某翻译机构用近十年双语版政府白皮书训练 SMT,并设置术语词典强制约束,把“供给侧结构性改革”等固定表述稳定翻译为"supply-side structural reform",人工审校工作量减少约 60%。
场景三:字幕组的初翻自动化
阶段:语料对齐与模型训练
解决的问题:字幕翻译对时间轴和口语化表达要求高。字幕组积压了大量双语字幕数据,传统人工初翻成本高;SMT 可以利用这些字幕语料训练出口语化的短语翻译模型,自动生成初稿,再由人工校对润色。
具体案例:某字幕组用 10 万条中英字幕句对训练 SMT,自动生成的初翻在口语短句上表现良好。人工只需要修改约 30% 的内容,整体翻译效率提升两倍以上。
Python 演示
# -*- coding: utf-8 -*-"""基于平行语料的短语翻译表训练与BLEU评估演示."""from collections import defaultdictimport math # 模拟平行语料:每行是一对中文-英文句子parallel_corpus = [ ("我 喜欢 苹果", "I like apples"), ("我 喜欢 红色 的 苹果", "I like red apples"), ("他 喜欢 香蕉", "he likes bananas"), ("红色 的 香蕉", "red bananas"), ("她 喜欢 红色 的 花", "she likes red flowers"),] def tokenize_zh(sentence): """中文按空格预分词(真实场景需用分词工具)。""" return sentence.split() def tokenize_en(sentence): """英文按空格分词并统一小写。""" return sentence.lower().split() def build_phrase_table(parallel_data): """从词对齐后的平行语料中抽取短语对并统计翻译概率.""" phrase_count = defaultdict(int) source_count = defaultdict(int) for zh_sent, en_sent in parallel_data: zh_tokens = tokenize_zh(zh_sent) en_tokens = tokenize_en(en_sent) # 简化词对齐:假设一一对应 for zh_word, en_word in zip(zh_tokens, en_tokens): phrase_count[(en_word, zh_word)] += 1 source_count[zh_word] += 1 phrase_table = {} for (en_word, zh_word), cnt in phrase_count.items(): phrase_table[(zh_word, en_word)] = cnt / source_count[zh_word] return phrase_table def translate_sentence(zh_sentence, phrase_table): """用查表方式生成简单翻译候选.""" words = tokenize_zh(zh_sentence) translated_tokens = [] for word in words: best_en = None best_prob = 0.0 for (zh, en), prob in phrase_table.items(): if zh == word and prob > best_prob: best_prob = prob best_en = en if best_en is not None: translated_tokens.append(best_en) else: translated_tokens.append(word) return translated_tokens def compute_bleu(candidate, reference): """计算简化版BLEU:仅用1-gram匹配 + 长度惩罚.""" cand_tokens = candidate.split() ref_tokens = reference.split() cand_count = defaultdict(int) ref_count = defaultdict(int) for token in cand_tokens: cand_count[token] += 1 for token in ref_tokens: ref_count[token] += 1 matches = 0 for token, cnt in cand_count.items(): matches += min(cnt, ref_count.get(token, 0)) precision = matches / len(cand_tokens) if cand_tokens else 0.0 if len(cand_tokens) <= len(ref_tokens): brevity_penalty = math.exp(1 - len(ref_tokens) / len(cand_tokens)) else: brevity_penalty = 1.0 return brevity_penalty * precision if __name__ == "__main__": phrase_table = build_phrase_table(parallel_corpus) test_zh = "我 喜欢 红色 的 香蕉" test_ref = "I like red bananas" translation = translate_sentence(test_zh, phrase_table) trans_str = " ".join(translation) print("中文原句:", test_zh) print("机器译文:", trans_str) print("参考译文:", test_ref) print("BLEU得分:", round(compute_bleu(trans_str, test_ref), 4))
parallel_corpus = [...]模拟一份小型平行语料,每行是一对中英互译句子,相当于“双语菜单册”的最小样本。phrase_count[(en_word, zh_word)] += 1统计每个“中文词→英文词”配对在语料中出现的次数,这是翻译概率的分子。source_count[zh_word] += 1统计每个中文词在语料中出现的总次数,作为归一化分母。phrase_table[(zh_word, en_word)] = cnt / source_count[zh_word]用频率比值估计翻译概率,这正是正文中的 P(t|s) 公式。for word in words:对待翻译句子逐词查翻译表,取概率最高的英文词作为候选。compute_bleu(trans_str, test_ref)用 1-gram 匹配率和长度惩罚计算 BLEU,验证译文质量。
常见误区
误区我听说统计机器翻译就是查字典,把每个中文词翻成对应的英文单词,再换个顺序拼起来就行。它做不了复杂的语言理解吧?
正解SMT 的“短语”概念远大于单个词,它抽取的是连续词块的翻译对(如“红色的 苹果”整体翻译成 “red apples“),并且通过调序模型和语言模型处理语序与通顺度。这比”逐词硬翻”强得多。真正的逐词翻译是更早期基于规则的词典替换,SMT 的核心贡献恰恰是用概率统计替代了僵硬的一对一查表。
为何常见:很多人接触 SMT 时先看到的是它从词对齐开始讲起,误以为翻译粒度只有词。加上“统计”二字容易让人联想到简单的频次计数,就误以为整个系统只是查表。
误区只要平行语料足够多,SMT 的翻译质量就一定能持续上升。语料是万能的吗?
正解语料数量不是唯一因素,质量与领域匹配度同样关键。如果混入大量错位对齐、噪声大的语料,反而会稀释短语表的可靠性。此外语料的领域也至关重要——用法律语料训练出的系统去翻译口语字幕,效果会大幅下降。工程中“清洗、去重、领域筛选”的时间和训练模型的时间几乎一样多。
为何常见:因为 SMT 确实是数据驱动方法,直觉上让人觉得“大力出奇迹”。但忽略了数据分布与测试场景的一致性,以及噪声数据带来的负面影响。
误区BLEU 得分越高,译文就越地道,可以直接替代人工判断。我们优化系统时,把 BLEU 从 30 刷到 32 就是进步对吧?
正解BLEU 只在统计意义上与人工评估相关,它本质是 n-gram 重合度指标。机器译文完全可能用另一种同样正确的表达来翻译,但因为和参考译文用词不同而被扣分。反之,有些语句虽然 n-gram 重合度高,但读起来生硬别扭。因此 BLEU 适合做模型迭代时的快速筛选,最终上线仍需人工抽检。
为何常见:BLEU 是机器翻译论文里最常出现的数据指标,容易让初学者把它当成“唯一真理”,忽视其基于词面匹配的局限性。
误区翻译的核心是“翻得准”,语言模型顶多在最后调整一下词序,起不到决定性作用。学 SMT 时主要精力应放在翻译模型上?
正解语言模型在 SMT 中不仅决定译文是否通顺,还在解码选择时直接影响最终结果。同一个源语言短语可能对应多个目标语言候选,翻译模型给它们打了相似的分数,这时语言模型的“通顺度偏好”就决定了哪条译文胜出。更关键的是,语言模型可以用海量单语语料训练,数据量通常远超平行语料,对译文质量的贡献很大。
为何常见:初学者容易把“翻译模型”理解为唯一核心,忽视语言模型在候选筛选和流畅度上的决定作用。此外单语语料的统计价值常被低估。
面试题
Q1. 统计机器翻译的核心思想是什么?
- A.用规则语法逐词替换
- B.从平行语料中统计学习翻译概率← 正确答案
- C.依靠人工词典精确翻译
- D.用神经网络端到端训练
答案:B。SMT 的核心是从大量平行语料中统计词与词、短语与短语的翻译概率,用数据驱动的方式替代人工规则。A 和 C 是传统基于规则的方法,D 是神经机器翻译的思路,均不属于 SMT 的核心思想。
Q2. 噪声信道模型中,翻译任务被建模成什么过程?
- A.从源语言直接生成目标语言
- B.从目标语言反推被噪声干扰的源语言← 正确答案
- C.在双语词典中精确匹配
- D.在单语语料中搜索相似句子
答案:B。噪声信道模型假设源语言句子 S 经过一个噪声信道变成目标语言句子 T,翻译任务是已知 T 反推最可能的 S,即最大化 P(S|T)。这对应贝叶斯公式中的后验概率。
Q3. 平行语料在 SMT 中主要指什么?
- A.单语种的大量文本集合
- B.中英文混合的随机文本
- C.互为翻译的双语句子对集合← 正确答案
- D.带标注的语法树库
答案:C。平行语料是“互为翻译”的双语句对,例如中文“我喜欢苹果”与英文"I like apples"组成一对。A 是单语语料,B 是混合文本而非对齐句对,D 是句法树库,都偏离了平行语料的定义。
Q4. EM 算法在词对齐中的作用是什么?
- A.直接计算出最佳对齐路径
- B.迭代估计词对齐概率并逐步收敛← 正确答案
- C.通过贪心搜索寻找局部最优
- D.用人工规则确定词对齐关系
答案:B。EM 算法通过“期望-最大化”两阶段交替迭代:先按当前概率估计对齐的期望频次,再根据频次更新概率,循环至收敛。它不直接计算对齐路径,也不依赖人工规则。
Q5. 短语翻译模型主要包含哪些概率成分?
- A.短语翻译概率← 正确答案
- B.调序概率← 正确答案
- C.词性标注概率
- D.语言模型概率← 正确答案
答案:ABD。短语翻译模型中,翻译概率 P(t|s) 衡量短语互译可能性,调序概率处理短语顺序调整,语言模型概率 P(S) 评估整句通顺度。词性标注概率不属于 SMT 标准模型组件。
Q6. N-gram 语言模型的假设是什么?
- A.句子中所有词相互独立
- B.一个词只依赖前面 n-1 个词← 正确答案
- C.一个词依赖整个句子的历史
- D.词与词之间按语法树连接
答案:B。N-gram 模型的核心假设是马尔可夫性:第 n 个词的出现只与前面紧邻的 n-1 个词有关。A 是 unigram 的极端简化,C 是无限长依赖,D 是句法模型假设,均非 N-gram 的典型设定。
Q7. 柱搜索解码器中“剪枝”的作用是什么?
- A.减少搜索空间,提高解码速度← 正确答案
- B.丢弃得分过低的翻译假设← 正确答案
- C.保留所有可能翻译候选
- D.防止搜索空间指数爆炸← 正确答案
答案:ABD。柱搜索每步只保留得分最高的 K 个假设(柱宽),丢弃其余低分假设,从而把指数级搜索空间压缩到可控范围,加速解码。C 与剪枝思想相反,若保留全部候选则退化为穷举搜索。
Q8. BLEU 指标的“长度惩罚”主要解决什么问题?
- A.机器译文过长时的冗余问题
- B.机器译文过短时的“偷懒”问题← 正确答案
- C.参考译文长度不一致的问题
- D.语料中句对数量不足的问题
答案:B。BLEU 的 BP(brevity penalty)在机器译文短于参考译文时降低分数,防止系统通过只翻译部分内容来获得虚高的 n-gram 精确率。译文过长则由精确率自然惩罚。
Q9. 链式法则中,计算整句概率 P(w1,……,wm) 需要什么操作?
- A.对每个词的独立概率求和
- B.对条件概率序列做连乘← 正确答案
- C.对相邻词对的频率取平均
- D.对词的逆文档频率加权求和
答案:B。依据概率的链式法则,整句概率表示为 P(w1)×P(w2|w1)×……×P(wm|w1……wm-1) 的连乘。N-gram 则进一步简化条件为最近 n-1 个词。A 是独立假设,C 是频率统计方式,D 是信息检索概念。
Q10. 从平行语料中抽取合法短语对需要满足什么约束?
- A.短语内部所有词的对齐不越出该短语范围← 正确答案
- B.短语至少包含两个词
- C.短语对必须与某个对齐句对一致← 正确答案
- D.短语内部不能有空洞← 正确答案
答案:ACD。抽取短语对要求词对齐“不越界”(即短语内每个词的对齐位置都在对应短语范围内)、短语对在某个对齐句对中出现过、且内部连续无空洞。单词语也可以构成短语对,所以 B 不对。