NLP-词义消歧
NLP|词义消歧
一. 概述
1.句法结构和语义:
语义是区别于句法的一种语言要素。一个句子可能他的句法结构是正确的,但是,这个句子从语义上是错误的(这一点我们可以通过举个例子来形象的理解:老虎飞出了银河系),所以语义分析是有必要的。
2.语义计算的任务和难点:
自然语言句子中存在大量的歧义:多义、隐喻等
同一句子对于不同人来说可能有不同理解
理论、方法、模型尚不成熟
3.词义消歧(词义标注):确定具体语境中多一次的确切意义,简记为:WSD。
义项:词典中一个词的某个具体表示(含义)。
该任务需要提前在构建词典时,明确“判断一个词是多义词“,”表示一个多义词的不同意思“,”明确一个多义词每个意义的区分标准”的方法,然后建立模型,对出现在具体语境中的多义词,为他选择一个合适的义项。
二. 词义消歧的几个简单方法:
1.基于词典释义的WSD方法:
1). 词典构建:
词典有语言学家对词语知识进行归纳总结,内记录了多义词各个义项的描述和 对应的使用方法。
2). 方法:
已知:
[1]:多义词w的若干义项\((S_1,...S_m)\)
[2]:w每个义项\(S_i\)在词典中的释义$D_i = \({\)a_1,a_2,...$}
[3]:多义词的具体上下文C对应的词汇,即上下文特征词: (\(W_1,W_2,...\))
[4]:每个特征词的释义\(E_{ji}\)(特征词\(W_j\)的第i条义项对应的释义)对应的词汇{\(b_{i1},b_{i2},...\)}
判别方法:
对每个义项\(S_i\)计算Score(\(S_i\)) = \(D_i \bigcap (\bigcup_{W_j \in C} E_{W_j})\),取最大值对应\(S_i\)为多义词的义项。
也即当前义项释义的词汇,和所有特征词的所有义项释义词汇之集,取交集。最终选择交集中含词汇最多的那个义项。
3). 评价:
准确率在50%~70%,由于词典释义的概括性,这种方法用于实际预料中效果并不理想。
2.基于义类词典的WSD方法:
1). 基本思想:一个多义词在义类词典中可能分属不同义类,在具体语境中确定了一个多义词的义类,就刻画了他的一个义项。
例如:crane,一指吊车,属“工具/机械”义类,一指鹤,属动物义类。确定义类,就确定了他的义项。
2). 步骤:
[1]:义类词典选择:Roget词典,对其中1041个类所有的词,收集包含这些词的上下文C(长度为前后100个词),作为训练数据。
[2]:对C进行统计,找出能够有效标注每个一类的特征词,计算各个特征词的权值:\(Weight(w) = \log(\frac{P(w|Cate)}{P(w)})\),P(w|C)表示w出现在Cate(category)中的概率,P(w)表示w出现在训练预料库中的总概率
[3]:判断在某个具体语境中出现的多义词所属的义类:
· 如果在该多一次上下文中只能找到一个义类的特征词,则该多一次术语该义类。
· 上下文中包含若干特征词,且对应着不同义类,根据Bayes法则,求这些特征词的不同一类的权值之和,那个一类的权值和最大,选哪个。
3). 评价:
训练预料库无需标注、义项分别对应着不同一类的多义词区分效果好。
对那些不依赖主题的多义词效果差。
3.基于Bayes的WSD方法:
1). 基本思想:计算多义词W出现在给定上下文语境C=\((w_1,w_2,..,w_n)\),并为各个义项\(S_i\)计算概率\(P(s_i|C)\),最大概率对应义项纪委该多义词义项标注。
2). 多义词W义项:\(s_1,s_2,...\),上下文语境C=\((w_1,w_2,..,w_n)\),则:
\[ P(s_i|C) = \frac{P(C|s_i)P(s_i)}{P(C)} \]
\[ s' = \underset{s_i}{argmax} P(s_i|C) = \underset{s_i}{argmax}\frac{P(C|s_i)P(s_i)}{P(C)} = \underset{s_i}{argmax}P(C|s_i)P(s_i) \]
\[ P(s_i) = \frac{count(s_i)}{count(w)} \]
\[ P(C|s_i)=P(\{ w_j |w_j \in C \} | s_i) = \prod_{w_j \in C}\frac{count(w_j,s_i)}{count(s_i)} \]
注:count(a),训练语料中出现a的次数;count(a,b),训练语料中出现ab的次数。