词义消歧,句子、篇章语义理解基础,必须解决。语言都有大量多种含义词汇。词义消歧,可通过机器学习方法解决。词义消歧有监督机器学习分类算法,判断词义所属分类。词义消歧无监督机器学习聚类算法,把词义聚成多类,每一类一种含义。
有监督词义消歧方法。基于互信息词义消歧方法,两种语言对照,基于大量中英文对照语料库训练模型可词义消歧。来源信息论,一个随机变量中包含另一个随机变量信息量(英文信息中包含中文信息信息量),假设两个随机变量X、Y的概率分别是p(x), p(y),联合分布概率是p(x,y),互信息计算公式,I(X; Y) = ∑∑p(x,y)log(p(x,y)/(p(x)p(y)))。互信息,一个随机变量由已知另一个随机变量减少不确定性(理解中文时由于已知英文含义让中文理解更确定),不确定性,熵,I(X; Y) = H(X) - H(X|Y)。对语料不断迭代训练,I(X; Y)不断减小,算法终止条件I(X; Y)不再减小。基于互信息词义消歧方法对机器翻译系统效果最好。缺点,双语语料有限,多种语言能识别出歧义情况也有限的(如中英文同一个词都有歧义)。
基于贝叶斯分类器消歧方法。条件概率,上下文语境,任何多义词含义都跟上下文语境相关。假设语境(context)记c,语义(semantic)记s,多义词(word)记w,多义词w在语境c下有语义s概率,p(s|c),p(s|c) = p(c|s)p(s)/p(c)。p(s|c)中s取某一个语义最大概率,p(c)既定,只考虑分子最大值,s估计=max(p(c|s)p(s))。语境c在自然语言处理中必须通过词表达,由多个v(词)组成,max(p(s)∏p(v|s))。
p(s)表达多义词w某个语义s概率,统计大量语料最大似然估计,p(s) = N(s)/N(w)。p(v|s)多义词w某个语义s条件词v概率,p(v|s) = N(v, s)/N(s)。训练出p(s)和p(v|s),一个多义词w消歧计算(p(c|s)p(s))最大概率。
无监督词义消歧方法。完全无监督词义消歧不可能,没有标注无法定义词义,可通过无监督方法做词义辨识。无监督词义辨识,一种贝叶斯分类器,参数估计不是基于有标注训练语料,是先随机初始化参数p(v|s),根据EM算法重新估计概率值,对w每一个上下文c计算p(c|s),得到真实数据似然值,重新估计p(v|s),重新计算似然值,不断迭代不断更新模型参数,最终得到分类模型,可对词分类,有歧义词在不同语境会被分到不同类别。基于单语言上下文向量。向量相似性,两个向量间夹角余弦值比较相似性,cos(a,b) = ∑ab/sqrt(∑a^2∑b^2)。
浅层语义标注,行之有效语言分析方法,基于语义角色浅层分析方法可描述句子语义角色间关系。语义角色,谓词,施事者,受事者,事情发生时间,数量。语义角色标注分析角色信息,计算机提取重要结构化信息,来理解语言含义。
语义角色标注依赖句法分析结果,句法分析包括短语结构分析、浅层句法分析、依存关系分析,语义角色标注分基于短语结构树语义角色标注方法、基于浅层句法分析结果语义角色标注方法、基于依存句法分析结果语义角色标注方法。过程,句法分析->候选论元剪除->论元识别->论元标注->语义角色标注结果。论元剪除,在较多候选项中去掉肯定不是论元部分。论元识别,二值分类,是论元和不是论元。论元标注,多值分类。
基于短语结构树语义角色标注方法。短语结构树表达结构关系,语义角色标注过程依赖结构关系设计复杂策略,策略内容随语言结构复杂而复杂化。分析论元剪除的策略,语义角色以谓词中心,短语结构树以谓词节点中心,先平行分析,和受事者不同一层,如果当前节点兄弟节点和当前节点不是句法结构并列关系,作候选论元。论元识别,二值分类,基于标注语料库做机器学习,机器学习二值分类方法固定,谓词本身、短语结构树路径、短语类型、论元在谓词位置、谓词语态、论元中心词、从属类别、论元第一个词和最后一个词、组合特征。论元标注,机器学习多值分类器。
基于依存句法分析结果和基于语块语义角色标注方法。论元剪除过程,基于句法结构不同。基于依存句法分析结果语义角色标注方法基于依存句法直接提取出谓词-论元关系。剪除策略,以谓词作当前节点,当前节点所有子节点都是候选论元,将当前节点父节点作当前节点重复以上过程直至到根节点。基于依存句法分析结果语义角色标注方法论元识别算法特征设计,多了有关父子节点特征。
融合方式,加权求和、插值。
语义角色标注当前不是非常有效,依赖句法分析准确性、领域适应能力差。新方法,利用双语平行语料弥补准确性问题,成本提高许多。
信息检索无论是谷歌还是百度都离不开TF-IDF算法,简单有效但缺乏语义特征。
TF-IDF。TF(term frequency),一个词在一个文档中出现频率。IDF(inverse document frequency),一个词出现在多少个文档中。同一个词在短文档出现次数和在长文档中出现次数一样多,对于短文档价值更大。一个出现概率很低的词一旦出现在文档中,价值大于其他普遍出现词。在信息检索领域向量模型做相似度计算非常有效,曾是google发家必杀技。聊天机器人软肋,只考虑独立词,没有任何语义信息。
隐含语义索引模型。TF-IDF模型,所有词构成一个高维语义空间,每个文档这个空间被映射为一个点,维数一般比较高且每个词作一维割裂词与词之间关系。把词和文档同等对待,构造一个维数不高语义空间,每个词和每个文档被映射到这个空间一个点。数学,考察文档概率,词概率,联合概率。设计一个假想隐含类包括在文档和词之间,选择一个文档概率p(d),找到一个隐含类概率p(z|d),生成一个词w概率p(w|z)。根据观测数据估计p(d, w)联合概率,z是一个隐含变量,表达一种语义特征。利用p(d, w)估计p(d)、p(z|d)和p(w|z),根据p(d)、p(z|d)和p(w|z)求更精确p(w, d),词与文档之间相关度。设计优化目标函数对数似然函数,L=∑∑n(d, w) log P(d, w)。p(d, w) = p(d) × p(w|d),p(w|d) = ∑p(w|z)p(z|d),p(z|d) = p(z)p(d|z)/∑p(z)p(d|z),p(d, w) =p(d)×∑p(w|z) p(z)p(d|z)/∑p(z)p(d|z)=∑p(z)×p(w|z)×p(d|z)。
EM算法,按照最大似然原理,先随便拍一个分布参数,根据分布归类到某一部分,根据归类重新统计数目,按照最大似然估计分布参数,再重新归类、调参、估计,最终得出最优解。每一个训练数据做归类,p(z|d,w),先拍一个p(z)、p(d|z)、p(w|z),p(z|d,w)=p(z)p(d|z)p(w|z)/∑p(z)p(d|z)p(w|z),分子是一个z,分母是所有z和。p(z|d,w)最大似然估计的概率估计(E过程),对每一个训练样本做归类,根据归类好数据统计出n(d,w),根据公式p(z) = 1/R ∑n(d,w)p(z|d,w)更新参数。p(d|z)=∑n(d,w)p(z|d,w) / ∑n(d,w)p(z|d,w),分子是一个d和,分母是所有d和,计算p(d|z)最大似然估计。p(w|z)=∑n(d,w)p(z|d,w) / ∑n(d,w)p(z|d,w),分子一个w和,分母是所有w和,计算p(w|z)的最大似然估计。重新计算p(z|d,w),p(z|d,w)=p(z)p(d|z)p(w|z)/∑p(z)p(d|z)p(w|z)。不断重复上面EM过程使对数似然函数最大,L=∑∑n(d, w) log P(d, w)。 通过以上迭代得出最终p(w, d),词与文档之间相关度,利用相关度做检索。
词词之间相关度,p(w, d)乘以转置,p(w,w) = p(w,d)×trans(p(w,d))。用户查询query关键词构成词向量Wq, 文档d表示成词向量Wd,query和文档d相关度,R(query, d) = Wq×p(w,w)×Wd。把所有文档算出来相关度从大到小排序就是搜索排序结果。
隐含语义索引模型,相比TF-IDF,加进语义信息、考虑词词关系,根据语义做信息检索,更适合研发聊天机器人做语料训练和分析,TF-IDF更适合完全基于独立词信息检索,更适合纯文本搜索引擎。
参考资料:
《Python 自然语言处理》
http://www.shareditor.com/blogshow?blogId=88
http://www.shareditor.com/blogshow?blogId=89
http://www.shareditor.com/blogshow?blogId=90
欢迎推荐上海机器学习工作机会,我的微信:qingxingfengzi