词性标注问题
就是给一个句子中的每个单词注明词性。比如这句话:“Jackson sang at stage”,注明每个单词的词性后是这样的:“Jackson(名词)sang(动词)at(介词)stage(名词).”
(名、动、介、名)就是一个标注序列,还有许多其他的标注序列,例如(名、动、动、名),只不过对于上面的句子,前一个标注更靠谱,后一个不怎么好,这个好与不好的评价如何衡量呢?答:就是用一系列特征函数对这些标注序列进行评分。
比如,第二个序列中,两个动词相邻在大多数句子中都是不常出现的,所以可以定义一个特征函数:当相邻单词均为动词时就输出负值,这个负值最终会算入某标注序列的最终评分中。
特征函数的定义
对于某个特征函数 f j ( s , i , l i , l i − 1 ) f_j(s,i,l_i,l_{i-1}) fj(s,i,li,li−1)
输入:
- s s s:被标注的句子
- i i i:被标注句子的第 i i i个单词
- l i l_i li:标注序列的第 i i i个标注
- l i − 1 l_{i-1} li−1:第 i − 1 i-1 i−1个标注
输出:0或1,0表示标注序列不符合这个特征,1表示符合
这里的特征函数只考虑当前词语和前一个词语的标注,进行评判,这样建立的CRF也称线性链CRF,是最简单的一种CRF
分数与概率
对于某个句子 s s s,存在很多可能的标注序列 l l l,要形成一个条件随机场,就定义一组特征函数 f j f_j fj,对每个标注序列进行评分,得分最高的就是句子 s s s的最终标注结果。
对于句子 s s s,标注序列 l l l的分数为 s c o r e ( l ∣ s ) = ∑ j = 1 m ∑ i = 1 n λ j f j ( s , i , l i , l i − 1 ) score(l|s)=\sum_{j=1}^m\sum_{i=1}^n\lambda_jf_j(s,i,l_i,l_{i-1}) score(l∣s)=∑j=1m∑i=1nλjfj(s,i,li,li−1)
其中
λ
j
\lambda_j
λj为相应特征函数
f
j
f_j
fj的权重,对这个分数进行指数化和标准化:
p
(
l
∣
s
)
=
e
x
p
[
s
c
o
r
e
(
l
∣
s
)
]
∑
l
′
e
x
p
[
s
c
o
r
e
(
l
′
∣
s
)
]
p(l|s)=\frac{exp[score(l|s)]}{\sum_{l'}exp[score(l'|s)]}
p(l∣s)=∑l′exp[score(l′∣s)]exp[score(l∣s)]
特征函数定义的几个例子
f 1 ( s , i , l i , l i − 1 ) f_1(s,i,l_i,l_{i-1}) f1(s,i,li,li−1):当 l i l_i li是副词且第 i i i个单词以 l y ly ly结尾时,输出1,否则输出0,其权重应当为正,且权重越大,越倾向于采用那些将以 l y ly ly结尾的单词标注为副词的标注序列
f 2 ( s , i , l i , l i − 1 ) f_2(s,i,l_i,l_{i-1}) f2(s,i,li,li−1):当 i = 1 i=1 i=1, l i l_i li为动词且 s s s以 ? ? ?结尾时,输出1,否则0,权重应为正数,且越大越倾向于采用将问句的首次标为动词的序列
f 3 ( s , i , l i , l i − 1 ) f_3(s,i,l_i,l_{i-1}) f3(s,i,li,li−1):当 l i − 1 l_{i-1} li−1为介词, l i l_i li为名词时,输出1,否则0,权重应为正数,且越大越说明我们认为介词后应当为名词
f 4 ( s , i , l i , l i − 1 ) f_4(s,i,l_i,l_{i-1}) f4(s,i,li,li−1):当 l i − 1 , l i l_{i-1},l_i li−1,li均为介词时,输出1,否则0,权重应为负数,且绝对值越大越倾向于不认可介词后仍为介词的标注序列
与其他几种模型的比较
1、与逻辑回归
实际上,CRF是逻辑回归的序列化版本,逻辑回归是用于分类的对数线性模型,条件随机场是用于序列化标注的对数线性模型。
2、与HMM
HMM也可解决词性标注问题,它是一种生成模型,已知句子
s
s
s,生成对其词性的标注
l
l
l,计算生成此标注的概率:
p
(
l
,
s
)
=
p
(
l
1
)
∏
i
p
(
l
i
∣
l
i
−
1
)
p
(
w
i
∣
l
i
)
p(l,s)=p(l_1)\prod_ip(l_i|l_{i-1})p(w_i|l_i)
p(l,s)=p(l1)i∏p(li∣li−1)p(wi∣li)
其中
p
(
l
i
∣
l
i
−
1
)
p(l_i|l_{i-1})
p(li∣li−1)是转移概率,例如
l
i
−
1
l_{i-1}
li−1为形容词,
l
i
l_i
li为名词,此时的
p
p
p表示形容词后是名词的概率;
p
(
w
i
∣
l
i
)
p(w_i|l_i)
p(wi∣li)是发射概率,例如
l
i
l_i
li是动词,
w
i
w_i
wi是单词"run",此时的
p
p
p表示在是动词的状态下,是单词"run"的概率
CRF比HMM强大,可解决更多问题。实际上,对上面HMM模型取对数,可得:
l
o
g
p
(
l
,
s
)
=
l
o
g
p
(
l
1
)
+
∑
i
l
o
g
p
(
l
i
∣
l
i
−
1
)
+
∑
i
l
o
g
p
(
w
i
∣
l
i
)
log\ p(l,s)=log\ p(l_1)+\sum_ilog\ p(l_i|l_{i-1})+\sum_ilog\ p(w_i|l_i)
log p(l,s)=log p(l1)+i∑log p(li∣li−1)+i∑log p(wi∣li)
可见它是CRF的一种特殊形式,对于每一个转移概率,可以定义特征函数
f
x
,
y
(
s
,
i
,
l
i
,
l
i
−
1
)
f_{x,y}(s,i,l_i,l_{i-1})
fx,y(s,i,li,li−1),当
l
i
=
y
,
l
i
−
1
=
x
l_i=y,l_{i-1}=x
li=y,li−1=x时为1,其权重为
w
x
,
y
=
l
o
g
p
(
l
i
=
y
∣
l
i
−
1
=
x
)
w_{x,y}=log\ p(l_i=y|l_{i-1}=x)
wx,y=log p(li=y∣li−1=x),对于发射概率也可类似定义
所以可以说每一个HMM模型都等价于某个CRF,CRF可定义的特征函数类型更多,能表达的模型也就更丰富。HMM模型的局部性在于:当前的单词只依赖于当前的标签,当前的标签只依赖于前一个标签。而CRF却可以着眼于整个句子 s s s定义具有全局性的特征函数,如特征函数 f 2 f_2 f2
将对数HMM模型看做CRF时,特征函数的权重由于是log函数形式的概率,所以都是小于等于0的,而且概率还要满足相应的限制,但CRF可以使用任意的权重,无限制