一些重要的基础概念
1、语言模型
计算一个句子是句子的概率的模型。
可以简单理解为,计算一段文本在语法和语义上是通顺且含义符合常理的句子的概率。
举个简单的栗子,如:
句子 | 概率 | 详细 |
---|---|---|
作者君天下第一帅! | 1.0 | 语句通顺,符合常理 |
作者的文章我看不懂。 | 0.2 | 语句通顺,但语义不大符合常理 |
作者真飞是文采扬。 | 0.0001 | 语法不通顺 |
再比如:
输入ziranyuyanchuli
可能对应的句子 | 概率 |
---|---|
孜然雨燕处理 | 0.04 |
自然语言处理 | 0.9 |
语言模型分类
(1)基于专家语法规则的语言模型
专家企图总结出一套通用的语法规则,比如主谓宾、定状补,对此我们只能说:笑skr人。
(开个玩笑,这几乎是任何通往真知的道路上必经的过程,对在这一领域付出、探索、试错的学者们致以崇高的敬意)
(2)统计语言模型
p(s)=p(w1w2…wn)=p(w1)p(w2|w1)p(w3|w1w2)…p(wn|w1…wn)
句子是句子的概率=句子里所有字/词出现的概率相乘=w1出现的概率*w1出现下w2出现的概率…
用语料的频率代替概率:(频率学派+条件概率)
p
(
w
i
)
=
c
o
u
n
t
(
w
i
)
N
,
p
(
w
i
∣
w
i
−
1
)
=
p
(
w
i
,
w
i
−
1
)
p
(
w
i
−
1
)
=
c
o
u
n
t
(
w
i
,
w
i
−
1
)
c
o
u
n
t
(
w
i
−
1
)
p(w_i)=\frac{count(w_i)}{N},p(w_i|w_{i-1})=\frac{p(w_i,w_{i-1})}{p(w_{i-1})}=\frac{count(w_i,w_{i-1})}{count(w_{i-1})}
p(wi)=Ncount(wi),p(wi∣wi−1)=p(wi−1)p(wi,wi−1)=count(wi−1)count(wi,wi−1)
假如一些词没有出现在背景语料库里或者形容词超级多且长的时候(即短语太长),我们给到这个句子是句子的概率为0,这显然也不合适。
2、平滑操作
鉴于上述情况,我们加入平滑处理,就是给没有出现过的词或者词组一个较小概率。
拉普拉斯平滑就是最简单的平滑操作,又称加一操作,即每个词在原来出现的次数基础上加1。
这个时候,因为总概率为1,所以出现次数多的词概率会减小,出现次数少的词概率会增大。
而如果处理不是词,是词组的时候,数据太多会导致参数(这里的参数就是概率)空间太大、数据严重稀疏。导致“作者很帅”和“作者很西瓜”的概率相同;且参数太多难以计算和存储,这显然也不合理。
3、马尔科夫假设
鉴于上述情况,我们提出马尔科夫假设:一个词出现概率仅依赖之前的1或n个词。
这就解决了参数空间过大、数据严重稀疏的问题。
满足n个词的马尔科夫假设的模型,我们又称为n-gram模型。具体n取几,取决于你要求的精度、你的算力、存储空间。
4、语言模型评价指标
对不同任务,我们有不同评价指标,此处只例举一二,不做具体介绍。
(1)PPL(困惑度)——最常见的评价指标
(2) ROUGE——常用机器翻译和文章摘要评价指标
(3)BLEU——常用机器翻译评价指标