Loading...

介绍

N-Gram是一种基于统计语言模型的算法,思想是将文本里的内容按照字节进行大小为N的滑动窗口操作,形成了长度为N的字节片段序列。
每一个字节片段称为gram,对所有gram进行频度统计,过阈值,形成gram列表

假设:第n次的出现只与前N-1个词相关,与其他词不相关。

举例
Bi-gram:{(I,love),(love,you)}
Tri-gram:{(I,love,you)}


举例

词和词频见下表

I want to eat Chinese food lunch
3437 1215 3256 938 213 1506 459

语料库中一些单词的词频,统计出各个单词与其他单词的前后联系的频次,组成一个7*7的二维矩阵,如下图:

I want to eat Chinese food lunch
I 8 1087 0 13 0 0 0
want 3 0 786 0 6 8 6
to 3 0 10 860 3 0 12
eat 0 0 2 0 19 2 52
Chinese 2 0 0 0 0 120 1
food 19 0 17 0 0 0 0
lunch 4 0 0 0 1 0 0

\begin{align*} &P(I \text{ want to eat Chinese food}) \\ &=P(I) \times P(want|I) \times P(to|want) \times P(eat|to) \times P(Chinese|eat) \times P(food|Chinese) \\ &= 0.25 \times \frac{1087}{3437} \times \frac{786}{1215} \times \frac{860}{3256} \times \frac{19}{938} \times \frac{120}{213} \\ &= 0.000154171 \end{align*}


参考链接