语义分析就是采用各种方法对文本数据进行挖掘,理解其深层次的概念。语义分析最常用的就是主题模型,而主题模型包括p LSA、LDA、NMF等,这也是目前最常用的主题模型。LDA主题模型发展迅速,有越来越多的变形,效率也在不断地提高。另一种主流的方法就是Google开发的Word2Vec方法,这种方法可以挖掘词与词之间的关系,也可以将词向量作为特征应用到其他的机器学习任务中。下面主要介绍LDA主题模型和Word2Vec两个模型。
1)LDA主题模型
LDA(latent dirichlet allocation)是一种典型的词袋模型,即它认为一篇文档是由一组词构成的一个集合,词与词之间没有顺序及先后的关系。一篇文档可以包含多个主题,文档中每一个词都由其中的一个主题生成。它是一种主题模型,可以将文档集中每篇文档的主题按照概率分布的形式给出;它同时是一种无监督学习算法,在训练时不需要手工标注的训练集,需要的仅仅是文档集以及指定主题的数量k即可;此外,LDA的另一个优点则是,对于每一个主题均可找出一些词语来描述它。LDA可以被认为是一种聚类算法:
①主题对应聚类中心,文档对应数据集中的例子。
②主题和文档在特征空间中都存在,且特征向量是词频向量。
③LDA不是用传统的距离来衡量一个类簇,它使用的是基于文本文档生成的统计模型的函数。
当我们看到一篇文章后,往往喜欢推测这篇文章是如何生成的,我们可能会认为作者先确定这篇文章的几个主题,然后围绕这几个主题遣词造句,表达成文。LDA就是要根据给定的一篇文档,推测其主题分布。因此,正如LDA贝叶斯网络结构中所描述的,在LDA模型中,一篇文档生成的方式如下:
①从狄利克雷分布α中取样生成文档i的主题分布θi。
②从主题的多项式分布θi中取样生成文档i第j个词的主题zi,j。
③从狄利克雷分布β中取样生成主题zi,j的词语分布φzi,j。
④从词语的多项式分布φzi,j 中采样最终生成词语wi,j。
LDA是一种文档生成模型,它认为一篇文章是有多个主题的,而每个主题又对应着不同的词。一篇文章的构造过程,首先是以一定的概率选择某个主题,然后再在这个主题下以一定的概率选出某一个词,这样就生成了这篇文章的第一个词。不断重复这个过程,就生成了整篇文章。当然这里假定词与词之间是没顺序的。LDA的使用是上述文档生成的逆过程,它将根据一篇得到的文章,去寻找这篇文章的主题,以及这些主题对应的词。所以LDA主题模型算法的输出结果是:(www.xing528.com)
①每篇文章的各个词被指定(assign)的主题编号。
②每篇文章的主题概率分布。
③每个主题下的词概率分布。
④程序中词语word的id映射表。
⑤每个主题下中概率排序从高到低top n特征词。
2)Word2Vec和语言模型
自然语言理解的问题要转化为机器学习的问题,第一步肯定是要找一种方法把这些符号数学化。自然语言处理(natural language processing,NLP)中最直观,也是到目前为止最常用的词表示方法是One-hot Representation,这种方法把每个词表示为一个很长的向量。这个向量的维度是词表大小,其中绝大多数元素为0,只有一个维度的值为1,这个维度就代表了当前的词。这种One-hot Representation如果采用稀疏方式存储,会非常简洁,也就是给每个词分配一个数字ID。如果要编程实现的话,用Hash表给每个词分配一个编号就可以了。这么简洁的表示方法配合最大熵、SVM、CRF等算法,就已经很好地完成了NLP领域的各种主流任务。当然,这种表示方法也存在一个重要的问题就是“词汇鸿沟”现象:任意两个词之间都是孤立的。光从这两个向量中看不出两个词是否有关系,哪怕是同义词之间也不能幸免。
词向量一般都是在训练语言模型的同时得到的。这也比较容易理解,要从一段无标注的自然文本中学习得到一些东西,就是统计出词频、词的共现、词的搭配等信息。而要从自然文本中统计并建立一个语言模型,是要求最为精确的一个任务(也不排除以后有人创造出更好更有用的方法)。既然构建语言模型这一任务要求这么高,其中必然也需要对语言进行更精细的统计和分析,同时也会需要更好的模型、更大的数据来支撑。目前最好的词向量都来源于此。词向量的训练有3个最经典的工作,C&W 2008、M&H 2008和Mikolov 2010。在这里就不再详细介绍。
词向量的评价大体上可以分成两种方式,第一种是把词向量融入现有系统中,看对系统性能的提升;第二种是直接从语言学的角度对词向量进行分析,如相似度、语义偏移等。目前词向量的用法最常见的有两种:
①直接用于神经网络模型的输入层。如C&W 的SENNA系统中,将训练好的词向量作为输入,用前馈网络和卷积网络完成词性标注、语义角色标注等一系列任务。再如Socher将词向量作为输入,用递归神经网络完成句法分析、情感分析等多项任务。
②作为辅助特征扩充现有模型。如Turian将词向量作为额外的特征加入接近state of the art的方法中,进一步提高了命名实体识别和短语识别的效果。C&W 的论文中有一些对比实验,实验的结果表明,使用词向量作为初始值替代随机初始值,其效果会有非常显著的提升(如词性标注准确率从96.37%提升到97.20%;命名实体识别F值从81.47%提升到88.67%)。同时,使用更大的语料来训练,效果也会有一些提升。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。