以前我们都是听说的Latent Semantic Analysis,也就是所谓的“潜在语义分析”,一个很好的学习网站是:
LSA
。最近在看一个论文的时候,偶然看到了Explicit Semantic Analysis。于是去查了一下这个算法,发现很多地方都在用,而且在计算语义相关性上面用的很多。我不知道是否是我的理解有问题,但是我看了论文之后,突然发现这个算法怎么就是一个“信息检索”的过程。论文题目是《Computing Semantic Relatedness using Wikipedia-based Explicit Semantic Analysis》,作者是Gab。
摘要
这是一个新的方法,它是将文本的意思在一个高维的空间中表示,而这个概念空间就是wiki。wiki上面的每个文章看成一个概念,那么采用机器学习的方法就能够将任何文本显式的表示成wiki概念的带有权值的向量。后面的诸如相关性的计算就可以基于向量空间了。
三个方面的贡献:
- 1,用自然概念的方式来表示自然语言文本的语义
- 2,词和长文本片段用一个统一的方式表示
- 3,ESA计算效果更好
ESA
灵感来自于想将文本用大量的背景知识来表示。将文本用预先定义好的自然概念来表示,这些概念是经过加权的而且易于理解。一个很重要的优点就是利用了大量的百科中人自己编辑的知识。使用机器学习的方法来建立一个“语义解释器”,它能够将自然语言的文本片段影射到一个加权的wiki概念向量。这样的语义分析之所以称为“explicit”,我们操作的概念是用户能够理解的。
每个wiki概念用一个TFIDF概念表示,值表示一个词和这个概念的相关程度。为了加快速度,建立一个倒排索引。”语义解释器“是一个”centroid-based“分类器,也就是给定一个文本片段,需要将所有的wiki概念根据他们与片段的相关性进行排序。给定一个文档片段,首先也需要表示成一个TFIDF向量。然后查找这个向量,根据倒排找到相关的概念集合。然后通过一个将文本向量和第j个概念的向量进行点积的过程求得一个相关值。这样每个文本片段就可以用一个长度为N的向量表示,每个元素的值就表示和该文本片段的相关性。
这个过程让我想起了信息检索的过程,也就是检索相关文档的过程,至少我看第一遍的时候是这样感觉的。只不过这里换成这个名字可能是因为检索出来的不再是文档,而是易于理解的概念了。