n-gram 模型和许多统计模型一样,依赖于训练语料库。 这种依赖性的影响之一是概率值往往编码了特定训练语料中的一些具体事实。另一种影响是随着 N 值的增加,n-gram 模型对训练语料的建模能力会变得越来越强。
我们可以使用上一节提到的采样方法来可视化这两个现象! 为了更直观地理解高阶 n-gram 的建模能力,图 3.4 展示了从基于莎士比亚作品训练出的 unigram、bigram、trigram 和 4-gram 模型中随机生成的一些句子。
1-gram
– To him swallowed confess hear both. Which. Of save on trail for are ay device and rote life have
– Hill he late speaks; or! a more to leg less first you enter2-gram
– Why dost stand forth thy canopy, forsooth; he is this palpable hit the King Henry. Live king. Follow.
– What means, sir. I confess she? then all sorts, he is trim, captain.3-gram
– Fly, and will rid me these news of price. Therefore the sadness of parting, as they say, ’tis done.
– This shall forbid it should be branded, if renown made it empty.4-gram
– King Henry. What! I will go seek the traitor Gloucester. Exeunt some of the watch. A great banquet serv’d in;
– It cannot be but so.
图 3.4:从莎士比亚作品中计算出的四种 n-gram 模型中随机生成的八个句子。 所有字符都被转换为小写,标点符号被视为词语处理。 输出结果手工修正了首字母大写,以提升可读性。
上下文越长,生成的句子就越连贯。 Unigram 生成的句子中,词语之间没有明显的逻辑联系,也没有句末标点。 Bigram 句子在词语之间开始出现局部的连贯性(尤其是在将标点视为词语的情况下)。 Trigram 句子已经很像莎士比亚的语言风格了。 而 4-gram 句子甚至看起来“太像”莎士比亚了。 例如句子 “It cannot be but so” 就直接出自《约翰王(King John)》。 这其实是因为,尽管我们不愿意贬低莎士比亚的作品,但从语料库的角度来看,他的作品总量并不算大(词数 N = 884,647,词汇量 V = 29,066),而且我们的 n-gram 概率矩阵非常稀疏。 仅 bigram 就有 $V^2 = 844,000,000$ 种可能,而 4-gram 的组合更是多达 $V^4 = 7 × 10^{17}$ 种。因此,一旦生成器选定了前三词组合 “It cannot be”,对于第四个词来说,4-gram 模型只能从七个可能的选项中选择(but, I, that, thus, this, 以及句号)。
为了理解模型对训练集的依赖程度,我们可以看看另一个完全不同语料库训练出的语言模型:《华尔街日报(Wall Street Journal, WSJ)》。 莎士比亚作品和 WSJ 都是英文文本,我们可能预期两种语料训练出的 n-gram 会有一些重叠。 图 3.5 展示了基于 WSJ 语料库中 4000 万个词训练出的 unigram、bigram 和 trigram 模型生成的句子。
1 gram
Months the my and issue of year foreign new exchange’s september were recession exchange new endorsed a acquire to six executives2 gram
Last December through the way to preserve the Hudson corporation N. B. E. C. Taylor would seem to complete the major central planners one point five percent of U. S. E. has already old M. X. corporation of living on information such as more frequently fishing to keep her3 gram
They also point to ninety nine point six billion dollars from two hundred four oh six three percent of the rates of interest stores as Mexico and Brazil on market conditions
图 3.5:从《华尔街日报》4000 万个词中计算出的三个 n-gram 模型随机生成的三句话。 所有字符均转换为小写,标点符号被视为词语处理。 输出结果也手工修正了首字母大写,以提升可读性。
请将这些例子与图 3.4 中生成的“伪莎士比亚”句子进行比较。 虽然两者都建模了“类似英语的句子”,但生成的句子之间没有任何重叠,甚至连小短语的重合都很少。 如果训练集和测试集之间的差异像莎士比亚作品与《华尔街日报》那样大,那么统计模型在预测方面几乎毫无用处。
那么,构建 n-gram 模型时,应该如何应对这个问题呢? 其中一步是确保使用一个与所要完成任务具有相似体裁(genre)的训练语料库。 例如,要构建一个用于翻译法律文件的语言模型,就需要使用法律文件作为训练语料。 要构建一个用于问答系统的语言模型,就需要使用问题语料进行训练。
同样重要的是,要获取适当方言(dialect)或变体(variety)的训练数据,特别是在处理社交媒体帖子或口语转录文本时。 例如,一些推文中可能使用了非裔美国人英语(African American English,简称 AAE)的特征——这是非裔美国人社区中使用的多种语言变体的统称(King,2020)。 这些变体可能包括像 finna 这样的词——一个表示“即将发生”的助动词——这在其他语言变体中并不存在;或者像 den(表示 then)这样的拼写,如下例所示(Blodgett 和 O’Connor,2017):
(3.22) Bored af den my phone finna die!!!
而来自基于英语的尼日利亚皮钦语(Nigerian Pidgin)的推文,在词汇和 n-gram 模式上与美式英语有显著不同(Jurgens 等,2017):
(3.23) @username R u a wizard or wat gan sef: in d mornin - u tweet, afternoon - u tweet, nyt gan u dey tweet. beta get ur IT placement wiv twitter
测试集中是否可能出现我们从未见过的词? 例如,如果“Jurafsky”这个词从未出现在训练集中,但在测试集中出现了,会发生什么? 答案是:虽然某些词可能是未见过的,但我们实际运行的 NLP 算法并不是直接处理“词”,而是处理子词(subword tokens)。通过子词词元化(如第 2 章介绍的 BPE 算法),即使一个词是未知的,也可以用已知的子词序列表示它,必要时甚至可以分解为单个字母的序列。 因此,尽管我们在本章中为了方便起见一直在讨论“词”,但语言模型的词汇实际上是由“词元(token)”组成的,而不是传统意义上的“词”,这样一来,测试集中就永远不会出现完全未见过的词元了。