首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

机器学习-话题模型

自然语言处理

自然语言处理(英语:Natural Language Processing,缩写为NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言处理包括多方面和步骤,基本有认知、理解、生成等部分。

自然语言认知和理解是让电脑把输入的语言变成有意思的符号和关系,然后根据目的再处理。让AI理解人类,应用有理解意图,解析语义,识别情绪,搜索推荐

自然语言生成系统则是把计算机数据转化为自然语言。让AL能被人类理解,应用有文本摘要,情感生成,话题展开,情感对话

研究方向:

文本预处理

文本预处理的步骤:

文本提取。对于一些开放语料库,可能有其独特的数据格式,需要我们按照其提示编写代码获取语料。对于一些我们自己获得的语料,我们需要将其转化为纯文本格式。

分词。分词就是我们把整个文档集中的文档划分成一个个的词语,形成我们的语料库。然后使用不同的词来描述不同的文档。

去除停用词。分词完成后,有些词是无意义的,我们称之为停用词,在处理中我们将其去掉。

使用词标签(id)来表示文档。       自然语言处理中,文档的表示不是人们看到的单词的形式,而是用一个个的标签(id)来表示词,然后组成一篇文档。

词袋模型

词袋模型(Bag-of-words model)是个在自然语言处理和信息检索(IR)下被简化的表达模型。此模型下,一段文本(比如一个句子或是一个文档)可以用一个装着这些词的袋子来表示,这种表示方式不考虑文法以及词的顺序。最近词袋模型也被应用在电脑视觉领域。

词袋模型被广泛应用在文件分类,词出现的频率可以用来当作训练分类器的特征。

以下是两个简单的文件:

(1) John likes to watch movies. Mary likes movies too.

(2) John also likes to watch football games.

基于以上两个文件,可以建构出下列清单:

["John","likes","to","watch","movies","also","football","games","Mary","too"]

此处有10个不同的词,使用清单的索引表示长度为10的向量:

(1) [1, 2, 1, 1, 2, 0, 0, 0, 1, 1]

(2) [1, 1, 1, 1, 0, 1, 1, 1, 0, 0]

每个向量的索引内容对应到清单中词出现的次数。

举例来说,第一个向量(文件一)前两个内容索引是1和2,第一个索引内容是"John"对应到清单第一个词并且该值设定为1,因为"John"出现一次。

Q1、为什么要去除重复的词? 没有

Q2、为什么会造成语义丢失?此向量表示法不会保存原始句子中词的顺序。

主题模型

关键词匹配文档检索出现的问题

问题一:同义词问题

我们知道,无论在英语还是汉语中,一个词语或一个单词都存在同义词,比如愉悦和开心,那么通过关键词检索愉悦,就只能找到包含愉悦这两个字的文档,而不能找到包含开心但不包含愉悦的文档。撇开同义词,当我们检索乔布斯,我们可能也想检索到关于iphone的相关信息,但仅通过关键词匹配,不能检索到。

使用LSA模型可以解决。

问题二:一词多义问题

我们知道,无论在英语还是汉语中都存在一词多义问题,比如“苹果”,到底指的是一种水果还是一个手机品牌,除非给定上下文语境否则我们不得而知。这样仅通过关键词匹配,检索到的含义可能不是我们想要的。撇开一词多义,文档中可能存在很多词语属于拼写打字错误(粗心)、误用(语文没学好)、巧合(比如“和服装”,这里的和服不是一个词语,但关键词匹配会检索到),更甚,文档中可能存在大量广告信息,人为植入这些关键词,这些都不是我们想要的。

使用PLSA和LDA模型可以解决。

LSA潜在语义分析模型

潜在语义分析(LSA)是自然语言处理中的一种技术,目的是要找出词(terms)在文档和查询中真正的含义,也就是潜在语义,通过产生与文档和术语相关的一组概念来分析一组文档与它们包含的术语之间的关系。LSA假设意义上接近的单词将出现在相似的文本中(分布式假设)。

每个段落包含单词计数的矩阵(行代表唯一的单词,列代表每个段落)是由一大段文本和奇异值分解(SVD)的数学技术构成的用于减少行数,同时保留列之间的相似性结构。然后通过取任意两行形成的两个矢量(或两个矢量的归一化之间的点积)之间的角度的余弦来比较单词。接近1的值表示非常相似的单词,而接近0的值表示非常不相似的单词。

LSA试图利用文档中隐藏的潜在的概念来进行文档分析与检索,能够达到比直接的关键词匹配获得更好的效果。该方法和传统向量空间模型(vector space model)一样使用向量来表示词(terms)和文档(documents),并通过向量间的关系(如夹角)来判断词及文档间的关系;而不同的是,LSA将词和文档映射到潜在语义空间,从而去除了原始向量空间中的一些“噪音”,提高了信息检索的精确度。

步骤为:

1.分析文档集合,建立Term-Document矩阵。

2. 对Team-Document矩阵进行奇异值分解。

3. 对SVD分解后的矩阵进行降维,也就是奇异值分解一节所提到的低阶近似。

4. 使用降维后的矩阵构建潜在语义空间,或重建Term-Document矩阵。

左奇异向量表示词的一些特性,右奇异向量表示文档的一些特性,中间的奇异值矩阵表示左奇异向量的一行与右奇异向量的一列的重要程序,数字越大越重要。

PLSA概率潜在语义分析

语义分析问题中,存在同义词和一词多义这两个严峻的问题,LSA可以很好的解决同义词问题,却无法妥善处理一词多义问题。

       PLSA则可以同时解决同义词和一词多义两个问题。

       PLSA(Probabilistic Latent Semantic Analysis, 概率潜在语义分析)由LSA发展而来。LSA使用线性代数方法,对document-word矩阵进行SVD分解。PLSA则使用了一个概率图模型,引入了一个隐变量topic(可以认为是文档的主题),然后进行统计推断。

假设 Z 的取值共有 K 个。PLSA模型假设的文档生成过程如下:

以 p(di) 的概率选择一个文档 di

以 p(zk|di) 的概率选择一个主题 zk

以 p(wj|zk) 的概率生成一个单词 wj

根据图模型,我们就得到观测数据的联合分布:

由于P(di)可事先计算求出,而P(ωj|zk)和P(zk|di)未知,所以φ=(P(ωj|zk),P(zk|di))就是我们要估计的参数(值),通俗点说,就是要最大化这个φ 。

最大化目标后,我们得到两个矩阵 λ和θ,"λ" _?k表示参数 p(zk|di),"θ" _??表示参数 p(wj|zk), 用 p[i,j,k] 表示隐藏变量的后验概率 p(zk|di,wj)。

步骤:

经过统计,我们得到docement-word矩阵,行N是文档个数,列M是单词个数,元素是某个单词在某篇文档中出现的次数。在例子中,我们的N是16,M是275.

我们定义两个矩阵 λ和 θ。 λ矩阵是i行k列的矩阵,里面的元素是P(zk|di)的值, θ是k行j列的矩阵,里面的元素是P(wj|zk)的值。其中,i代表文档数,k代表主题数,j代表单词数。分别对这两个矩阵进行初始化和归一化。

定义p[i,j,k]矩阵表示P(zk|di,wj)的值,元素为λik与θkj的乘积。该矩阵主要用于求解另外两个矩阵的最大化,应用中无意义。

使用EM算法对p[i,j,k]矩阵进行最大化处理,设置迭代次数。

最后,从θ矩阵中提取每个主题的词,从λ矩阵中提取文档对应的主题。

3.3 LDA隐含狄利克雷分布

隐含狄利克雷分布(英语:Latent Dirichlet allocation,简称LDA),是一种主题模型,它可以将文档集中每篇文档的主题按照概率分布的形式给出。同时它是一种无监督学习算法,在训练时不需要手工标注的训练集,需要的仅仅是文档集以及指定主题的数量k即可。此外LDA的另一个优点则是,对于每一个主题均可找出一些词语来描述它。

       LDA首先由Blei, David M.、吴恩达和Jordan, Michael I于2003年提出,目前在文本挖掘领域包括文本主题识别、文本分类以及文本相似度计算方面都有应用。

LDA是一种典型的词袋模型,即它认为一篇文档是由一组词构成的一个集合,词与词之间没有顺序以及先后的关系。一篇文档可以包含多个主题,文档中每一个词都由其中的一个主题生成。

其中,φ表示词分布,θ表示主题分布,α是主题分布θ的先验分布(即Dirichlet分布)的参数,β是词分布φ的先验分布(即Dirichlet分布)的参数,N表示文档的单词总数,M表示文档的总数。

所以,对于一篇文档d中的每一个单词,LDA根据先验知识确定某篇文档的主题分布θ,然后从该文档所对应的多项分布(主题分布)θ中抽取一个主题z,接着根据先验知识确定当前主题的词语分布φ,然后从主题z所对应的多项分布(词分布)φ中抽取一个单词w。然后将这个过程重复N次,就产生了文档d。

综上,LDA真的只是PLSA的贝叶斯版本,文档生成后,两者都要根据文档去推断其主题分布和词语分布(即两者本质都是为了估计给定文档生成主题,给定主题生成词语的概率),只是用的参数推断方法不同,在pLSA中用极大似然估计的思想去推断两未知的固定参数,而LDA则把这两参数弄成随机变量,且加入dirichlet先验。

所以,PLSA跟LDA的本质区别就在于它们去估计未知参数所采用的思想不同,前者用的是频率派思想,后者用的是贝叶斯派思想

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200916A0ACNZ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券