文章目录
week2课程内容
一、Morphology(形态学):单词怎样构成
1.概念:
(1)Morphology 研究单词是如何由 语素(morphemes) 构成的
(2)morphemes 分为两类:词干 stems,词缀 affixes
更广义上的分类:
a) 屈折 inflactional:后缀不改词性,如 walk、walking
b) 派生 derivational:后缀改变词性,如 clue、clueless
(3)steming(词干还原):
常用在信息检索中,效果是:搜 cat,匹配到 cat 和 cats 。具体用在信息检索时,要同时对检索词和被检索对象作 stemming,然后进行匹配。实现 stemming 操作的工具称为 stemmer.
2.一种 stemmer: Porter stemmer
基于一系列写好的规则进行后缀拆分。例如,computerization ,先根据规则ization->ize,变成 computerize,再根据规则 ize-> ϵ \epsilon ϵ ,变成computer。
二、Edit distance(编辑距离):度量单词间的‘距离’
1.Edit distance定义:
在仅使用 a.insertion插入 b.deletion删除 c.substitution替代 这三种操作的情况下,从一个字符串到另一个字符串所需的最少操作数。
如果想要求 edit distance,要先找两个字符串的对齐(alignment) ,如下为例:
Edit distance 的一个应用:评价机器翻译的结果。
2.如何求得最小 Edit distance:
(1)搜索树:
缺点是搜索空间太大,不好用。
(2)动态规划求解(Dynamic programming)
首先定义 D(i,j) 如下:
求解算法如下:这里 levenshtein 的含义是,替代操作的代价记为2,删与增均为1
该算法的时间复杂度与空间复杂度均为:O(mn)
三、Language model(语言模型)
1.定义:
我们想要得到,一句话的单词序列为
w
1
,
w
2
.
.
.
w
n
w_1,w_2...w_n
w1,w2...wn 的概率
P
(
w
1
,
w
2
.
.
.
w
n
)
=
p
(
ω
)
P(w_1,w_2...w_n)=p(\omega)
P(w1,w2...wn)=p(ω) ,或者是已知前n-1个词,预测第n个词,求
P
(
w
n
∣
w
1
,
w
2
.
.
.
w
n
−
1
)
P(w_n|w_1,w_2...w_{n-1})
P(wn∣w1,w2...wn−1).
用来求
p
(
ω
)
p(\omega)
p(ω) 或者
P
(
w
n
∣
w
1
,
w
2
.
.
.
w
n
−
1
)
P(w_n|w_1,w_2...w_{n-1})
P(wn∣w1,w2...wn−1)的模型, 就叫语言模型
2.求解的理论依据:chain rule链式法则
Markov Assumption 马尔科夫假设:每个单词的出现只与他前面N个单词有关,即:
P
(
w
n
∣
w
1
n
−
1
)
≈
P
(
w
n
∣
w
n
−
N
+
1
n
−
1
)
P(w_n|w^{n-1}_1)\approx P(w_n|w^{n-1}_{n-N+1})
P(wn∣w1n−1)≈P(wn∣wn−N+1n−1)
一元语法N=1:
P
(
w
n
∣
w
1
n
−
1
)
≈
P
(
w
n
)
P(w_n|w^{n-1}_1)\approx P(w_n)
P(wn∣w1n−1)≈P(wn) ,代表与任何其他单词无关
二元语法N=2:
P
(
w
n
∣
w
1
n
−
1
)
≈
P
(
w
n
∣
w
n
−
1
)
P(w_n|w^{n-1}_1)\approx P(w_n|w_{n-1})
P(wn∣w1n−1)≈P(wn∣wn−1) 代表只与前一个单词有关
三元语法N=3:…
3.训练模型
在训练集上依照 N-gram 训练模型时,我们会创造一个 token:<UNK>,用来作为测试集中的集外词(OOV,out of vocabulary)的概率。
4.模型评测
(1)Extrinsic evaluation (外在评测)
在测试集上使用训练好的模型,计算单词出错率 WER(word error rate).
缺点是:太耗时
(2)Intrinsic evaluation (内在评测)
perplexity (困惑度):
p
p
(
w
)
=
p
(
w
1
w
2
.
.
.
w
n
)
−
1
n
=
1
p
(
w
1
.
.
.
w
n
)
n
=
∏
i
=
1
n
1
p
(
w
i
∣
w
1
.
.
.
w
i
−
1
)
n
{pp(w)}=p(w_1w_2...w_n)^{-\frac{1}{n}}=\sqrt[n]{\frac{1}{p(w_1...w_n)}}= \sqrt[n]{\prod_{i=1}^{n}\frac{1}{p(w_i|w_1...w_{i-1})}}
pp(w)=p(w1w2...wn)−n1=np(w1...wn)1=ni=1∏np(wi∣w1...wi−1)1
它主要是根据每个词来估计一句话出现的概率,PP(S)越小,p(wi)则越大,一句我们期望的sentence出现的概率就越高。
5.语言模型存在的问题
(1)Overfitting
N-gram 模型只在与训练集相似的测试集上表现很好。
(2)zeros or not?
对于在训练集中从未出现过的单词序列,是否就应该将对应的概率视为0呢?显然这样是不符合实际的,因为实际上任何单词序列都可能在语言交流中出现,哪怕是错误的表达!
因此引入一些平滑(smoothing)方法:
a) Laplace smoothing :为所有单词序列的计数加上一
原先计数为0的,现在变成1,从而出现概率虽然很小,但至少不是0.
b) Good-Turing:GT平滑 :用只出现一次的频率代表未出现的频率
例子:
抓到的只有一条的鱼共有三种,频率为3/18,那么下一次钓到新品种的鱼的概率就认为是3/18.
更进一步的,我们列出一个表:
出现次数 C C C | 出现C次的鱼的种类数 N N N |
---|---|
0 | 2 |
1 | 3 |
2 | 1 |
3 | 1 |
10 | 1 |
本来,有两种鱼出现次数都是
C
0
=
0
C_0=0
C0=0,但经过
C
0
N
0
=
C
1
N
1
C_0N_0=C_1N_1
C0N0=C1N1,求得新的
C
0
∗
=
3
2
C^*_0=\frac{3}{2}
C0∗=23,从而这两种鱼出现的概率为频数除以总数,即
C
0
∗
/
18
C^*_0/18
C0∗/18,乘以2之后正是3/18.
因此,GT平滑为每个type都重新分配了出现频数,计算公式为:
C
X
∗
=
C
X
+
1
N
X
+
1
N
X
C^*_X=\frac{C_{X+1}N_{X+1}}{N_X}
CX∗=NXCX+1NX+1
但是注意,GT平滑并不对OOV词汇使用,因为使用GT需要知道频数为零的单词种类数。
c) backoff and interpolation回退与内插:
backoff:若N-gram下,某个P为0,则对其运用N-1-gram,直到降到P不为0
interpolation:混合加权使用各种多元语法:
(3)N-gram语言模型的优缺点