文章目录
week8课程内容
Word Sense Disambiguation (词义消歧)
词义消歧是指:给定一个上下文中的单词,以及这个单词所有可能的sense,找出在这个上下文里,该单词最合适的sense。
这项任务在机器翻译、语音合成等方面都有应用。
1. WSD的两类工作:
(1) Lexical Sample task词汇采样:有一小部分预选好的目标词,和每个单词的sense的集合,使用有监督学习为每一个单词训练一个分类器。
(2) All-words task:涉及文本中的所有词汇,且每个词汇提供一个词义列表。由于数据稀疏性,无法得到特定单词的分类器。
2. WSD的几种方法:
(1)Supervised Machine Learning 有监督机器学习
(2)Thesaurus/Dictionary Methods 基于辞典的方法
(3)Semi-Supervised Learning 半监督学习
3. Supervised Machine Learning 有监督机器学习
使用带标签的单词语料库,训练一个分类器,用来给未知文本中的单词分配合适的词义。
核心点:
- WSD Tags:一个tag表示一个词义,一个单词有多个tag
- Get a corpus:获得训练数据集。例如:对于 Lexical Sample task ,开源的有 Line-hard-serve corpus 数据集,里面对 line/hard/serve 每个单词都有4000个标注好的词义示例。
- Extract feature vectors 得到单词的特征向量:Warren Weaver提出“如果我们一个单词一个单词的去读一个文章,那么我们无法知道单词的上下文含义是什么,如果我们用一个2N大小的窗口去扫读文章,当N足够大时,我们可以准确地确定每个单词的上下文含义”。所谓单词的特征向量,就是体现该单词周围单词情况的向量。
两种特征表示:
(1) Collocational (搭配) features:例如:
(2) bag-of words (词袋) features:与搭配特征不同,词袋特征不考虑附近单词的具体位置顺序,只考虑窗口内单词出现的频数。
给定一个vocabulary,然后统计在指定窗口大小里出现的次数,得到一个长度为V的向量。
- Classifier分类器:
输入:一个单词,单词的特征(上下文信息),单词的词义集合
输出:一个预测的词义
分类器的选择可以有很多,比如朴素贝叶斯分类器、逻辑回归、神经网络、svm、k临近…下面介绍朴素贝叶斯分类器。
4. The Naive Bayes Classifier 朴素贝叶斯分类器
对于上下文d与词义c,根据贝叶斯公式有:
P
(
c
∣
d
)
=
P
(
d
∣
c
)
P
(
c
)
P
(
d
)
P(c|d)=\frac{P(d|c)P(c)}{P(d)}
P(c∣d)=P(d)P(d∣c)P(c)
我们要根据d预测最可能的c,即:
c
m
a
p
=
a
r
g
m
a
x
c
P
(
c
∣
d
)
=
a
r
g
m
a
x
c
P
(
d
∣
c
)
P
(
c
)
=
a
r
g
m
a
x
c
P
(
x
1
,
.
.
.
x
n
∣
c
)
P
(
c
)
c_{map}=argmax_{c}P(c|d)=argmax_{c}P(d|c)P(c)\\=argmax_cP(x_1,...x_n|c)P(c)
cmap=argmaxcP(c∣d)=argmaxcP(d∣c)P(c)=argmaxcP(x1,...xn∣c)P(c)
假设条件独立:
c
m
a
p
=
a
r
g
m
a
x
c
P
(
x
1
∣
c
)
⋅
P
(
x
2
∣
c
)
⋅
.
.
.
⋅
P
(
x
n
∣
c
)
p
(
c
)
c_{map}=argmax_cP(x_1|c)\cdot P(x_2|c)\cdot...\cdot P(x_n|c)p(c)
cmap=argmaxcP(x1∣c)⋅P(x2∣c)⋅...⋅P(xn∣c)p(c)
然而,这样使大量条件概率连乘,会使结果非常小。所以取对数运算:
c
N
B
=
a
r
g
m
a
x
c
[
log
P
(
c
)
+
∑
i
=
1
n
log
P
(
x
i
∣
c
)
]
c_{NB}=argmax_c[\log P(c)+\sum_{i=1}^n\log P(x_i|c)]
cNB=argmaxc[logP(c)+i=1∑nlogP(xi∣c)]
其中各项概率均可以统计得到 (进行了加一平滑处理):
P
(
c
)
=
N
c
N
t
o
t
a
l
P
(
x
i
∣
c
)
=
c
o
u
n
t
(
x
i
,
c
)
+
1
∑
i
c
o
u
n
t
(
x
i
,
c
)
+
∣
V
∣
P(c)=\frac{N_c}{N_{total}}\quad P(x_i|c)=\frac{count(x_i,c)+1}{\sum_{i} count(x_i,c)+|V|}
P(c)=NtotalNcP(xi∣c)=∑icount(xi,c)+∣V∣count(xi,c)+1
对于未知单词(在测试集出现但训练集没有),我们直接忽略,从测试集里移出它们。
5. 例子:使用朴素贝叶斯分类器进行情感分析
- 计算 P( c ):
P ( + ) = 2 / 5 p ( − ) = 3 / 5 P(+)=2/5\quad p(-)=3/5 P(+)=2/5p(−)=3/5 - 去掉未知词 with
- 计算P(x_i|c):
P ( p r e d i c b l e ∣ + ) = 0 + 1 9 + 20 P ( p r e d i c b l e ∣ − ) = 1 + 1 11 + 20 P(predicble|+)=\frac{0+1}{9+20}\quad P(predicble|-)=\frac{1+1}{11+20} P(predicble∣+)=9+200+1P(predicble∣−)=11+201+1
其他不算了。注意:这里的|V|是不计重复单词的。 - 分别计算 P ( + ) P ( S ∣ + ) P(+)P(S|+) P(+)P(S∣+) 和 P ( − ) P ( S ∣ − ) P(-)P(S|-) P(−)P(S∣−)
- 比较两个值,以较大值为分类结果。
6.Thesaurus/Dictionary Methods 基于辞典的方法
一种简单粗暴但不太有效的方法,是直接取辞典中单词的第一个词义作为该单词的词义。因为辞典的词义是按照出现频率排序的。这种方法叫做Most Frequent Sense。
下面主要介绍 Lesk 算法。
算法思想是,对于给定的一个单词和它所在的上下文,我们在辞典中找到该单词的所有注释,然后将各个注释一一与上下文对比得到它们重合的单词数目,然后选择重合单词最多的注释作为该单词的词义。
7. Semi-Supervised Learning 半监督学习
有监督学习和基于辞典的方法都有一个问题:需要有大量标注好的训练集(或辞典)
了解一下 Yarowsky 算法即可。