1 n-gram

n-gram描述给定文本序列中连续n个项目(字母、音节或单词)的序列。 n-gram模型统计序列的出现频率,捕捉语言中的局部依赖关系。

  • 连续性:务必连续,不跳过任何项目。
  • 上下文依赖:捕捉项目之间的上下文关系。Bigram(二元组)
  • 长度:n值决定模型捕捉上下文的能力。bigram或trigram无法捕捉长距离的依赖,较长的n-gram可以,但会面临数据稀疏问题。
  • 概率计算:一个词序列的概率可以通过各个n-gram的概率相乘来近似计算。

假设我们有以下的句子:

我喜欢自然语言处理。

这个句子可以被分解为以下单词序列:

我,喜欢,自然,语言,处理。

1.1.1 Unigram(一元组)

Unigram是最简单的n-gram,它只考虑单个项目。在这个例子中,unigram就是句子中的每个单独的词:

  • 喜欢
  • 自然
  • 语言
  • 处理 Unigram模型可以用来计算每个词出现的概率,但它不提供任何关于词之间顺序的信息。

1.1.2 Bigram(二元组)

Bigram考虑的是两个连续项目的序列。在这个例子中,bigram如下:

  • (我, 喜欢)
  • (喜欢, 自然)
  • (自然, 语言)
  • (语言, 处理) Bigram模型可以告诉我们一个词后面紧跟着哪个词的概率。例如,如果我们想知道“喜欢”后面跟着“自然”的概率,我们可以参考bigram模型。

1.1.3 Trigram(三元组)

Trigrams考虑的是三个连续项目的序列。在这个例子中,trigram如下:

  • (我, 喜欢, 自然)
  • (喜欢, 自然, 语言)
  • (自然, 语言, 处理) Trigrams提供了更多的上下文信息,比如“我喜欢自然”后面跟着“语言”的概率。

1.1.4 四元组(Fourgram)

四元组考虑的是四个连续项目的序列。在这个例子中,四元组如下:

  • (我, 喜欢, 自然, 语言) 由于我们的句子只有五个词,所以四元组只包含一个序列。四元组提供了更多的上下文信息,但同时也增加了数据稀疏性的风险,因为更长的序列在语料库中出现的次数可能更少。