N-gram 详解
文章目录
- 一、什么是N-gram?
- 二、N-gram的种类
- 三、优缺点
- PS:补充
一、什么是N-gram?
在自然语言处理中,n-gram是一种重要的文本表示方法。n-gram是指给定文本中连续的n个项目,这些项目可以是声音、单词、字符或者像素等。n-gram模型常常用于语言模型,以预测接下来的一个项目(比如一个单词)。
二、N-gram的种类
根据项目个数的不同,n-gram模型可以被分为不同的种类:
-
当 n = 1 n=1 n=1时,称为unigram。比如对于句子 “I love dogs”,unigram就是 “I”, “love”, “dogs”
P ( w i ) = C ( w i ) M P(w_i)=\frac{C(w_i)}{M} P(wi)=MC(wi)M M M: 语料库中的单词总数
e.g.: C ( b a r k s ) M \frac{C(barks)}{M} MC(barks)
-
当 n = 2 n=2 n=2时,称为bigram。对于同样的句子,bigram就是 “I love”, “love dogs”
P ( w i ∣ w i − 1 ) = C ( w i − 1 , w i ) C ( w i − 1... ) P(w_i|w_{i-1})=\frac{C(w_{i-1},w_{i})}{C(w_{i-1 ...})} P(wi∣wi−1)=C(wi−1...)C(wi−1,wi)C ( w i − 1 . . . ) C(w_{i-1}...) C(wi−1...): 是指以 w i − 1 w_{i-1} wi−1 作为第一个词的所有二元词组的总数。在计算二元词组的概率时,我们需要考虑的是 w i − 1 w_{i-1} wi−1 作为第一个词出现的次数,而不仅仅是 w i − 1 w_{i-1} wi−1这个词在整个语料库中出现的次数。
-
当 n = 3 n=3 n=3时,称为trigram。如 “I love dogs” 的trigram为 “I love dogs”。
-
以此类推,你可以得到更高的n-gram模型。
P ( w i ∣ w i − n + 1 , . . . , w i − 1 ) = C ( w i − n + 1 , . . . , w i ) C ( w i − n + 1 , . . . , w i − 1 ) P(w_i|w_{i-n+1},...,w_{i-1})=\frac{C(w_{i-n+1},...,w_i)}{C(w_{i-n+1},...,w_{i-1})} P(wi∣wi−n+1,...,wi−1)=C(wi−n+1,...,wi−1)C(wi−n+1,...,wi)
三、优缺点
优点
它考虑了词与词之间的顺序信息,从而能更好地捕捉到语义信息。
缺点
模型的数据稀疏性问题(随着n的增大,会出现许多从未在训练数据中出现过的n-gram),以及它无法捕捉到更长距离的依赖关系(超过n的范围)。
因此,在实际应用中,n-gram模型通常会与其他模型如词袋模型(Bag of Words)、TF-IDF等结合使用,以获得更好的效果。
PS:补充
处理 未见过的n-gram(unseen n-grams)时的一些平滑技术。
Laplacian (Add-one) 平滑:
-
Unigram:
对于单个词的概率计算,使用加一平滑的方法公式为:
P a d d 1 ( w i ) = C ( w i ) + 1 M + ∣ V ∣ P_{add1}(w_i)=\frac{C(w_i)+1}{M+|V|} Padd1(wi)=M+∣V∣C(wi)+1这里, C ( w i ) C(w_i) C(wi)表示词 w i w_i wi在语料库中出现的次数, M M M是语料库中所有词的总数, ∣ V ∣ |V| ∣V∣是词汇表的大小,也就是不同词的总数。加一平滑通过在每个词的计数中加1来避免某些词的概率为零的情况。
-
Bigram:
对于两个连续词的概率计算,使用加一平滑的方法公式为:P a d d 1 ( w i ∣ w i − 1 ) = C ( w i − 1 , w i ) + 1 C ( w i − 1 ) + ∣ V ∣ P_{add1}(w_i|w_{i-1})=\frac{C(w_{i-1},w_i)+1}{C(w_{i-1})+|V|} Padd1(wi∣wi−1)=C(wi−1)+∣V∣C(wi−1,wi)+1
这里, C ( w i − 1 , w i ) C(w_{i-1}, w_i) C(wi−1,wi)表示词对 ( w i − 1 , w i ) (w_{i-1}, w_i) (wi−1,wi)在语料库中出现的次数, C ( w i − 1 ) C(w_{i-1}) C(wi−1)表示词 w i − 1 w_{i-1} wi−1出现的总次数。通过在词对的计数中加1,避免了某些词对组合的概率为零。
其他平滑方法:
-
Absolute discounting(绝对折扣法):通过从每个非零计数中减去一个常数来重新分配概率质量。
-
Kneser-Ney:一种更复杂的平滑方法,特别适用于处理低频n-gram,考虑了n-gram的出现背景。
这些平滑技术的目的是确保模型能够合理地处理未见过的n-gram,从而提高语言模型在新数据上的表现。
如果觉得这篇文章有用,就给个赞👍和收藏⭐️吧!也欢迎在评论区分享你的看法!