论文笔记-Explicit Semantic Analysis

paper:
- Computing Semantic Relatedness using Wikipedia-based Explicit Semantic Analysi, IJCAI2008
- Wikipedia-based Semantic Interpretation for Natural Language Processing

Motivation

对于自然语言的语义表示,需要的大量的 common sense 和 world knowledge. 前人的研究使用统计的方法,例如 WordNet,仅仅只利用了有限的词典知识(lexicographic knowledge),并不能有效的利用语言本身背后的背景知识( background knowledge)。

作者提出了 Explicit Semantic Analysis (ESA),能够对文本或单词进行可解释性的细粒度的语义表示。

Our method represents meaning in a high-dimensional space of concepts derived from Wikipedia, the largest encyclopedia in existence. We explicitly represent the meaning of any text in terms of Wikipedia-based concepts.
显示的使用 wiki 中的概念(concepts)来表示任意长度的 text.

作者通过文本分类和计算自然语言的文本片段之间的相似度来验证 ESA 的有效性。由于语义表示使用的是 natural concepts,ESA 模型的可解释性非常强。

传统的方法:

  1. 词袋模型: 将 text 看作是 unordered bags of words, 每一个单词看作是一维特征。但是这并不能解决 NLP 中的两个主要问题: 一词多义和同义词(polysemy and synonymy)。

  2. 隐语义分析:Latent Semantic Analysis (LSA)

LSA is a purely statistical technique, which leverages word co-occurrence information from a large unlabeled corpus of text. LSA does not use any explicit human-organized knowledge; rather, it “learns” its representation by applying Singular Value Decomposition (SVD) to the words-by-documents co-occurrence matrix. LSA is essentially a dimensionality reduction technique that identifies a number of most prominent dimensions in the data, which are assumed to correspond to “latent concepts”. Meanings of words and documents are then represented in the space defined by these concepts.
LSA 是一种纯粹的统计技术,它利用来自大量未标记文本语料库的单词共现信息。 LSA不使用任何明确的人类组织知识; 相反,它通过将奇异值分解(SVD)应用于逐个文档的共现矩阵来“学习”其表示。 LSA本质上是一种降维技术,它识别数据中的许多最突出的维度,假设它们对应于“潜在概念”。 然后,在这些概念定义的空间中表示单词和文档的含义。

  1. 词汇数据库,WordNet.

However, lexical resources offer little information about the different word senses, thus making word sense disambiguation nearly impossible to achieve.Another drawback of such approaches is that creation of lexical resources requires lexicographic expertise as well as a lot of time and effort, and consequently such resources cover only a small fragment of the language lexicon. Specifically, such resources contain few proper names, neologisms, slang, and domain-specific technical terms. Furthermore, these resources have strong lexical orientation in that they predominantly contain information about individual words, but little world knowledge in general.
词汇资源几乎没有提供关于不同词义的信息,因此几乎不可能实现词义消歧。这种方法的另一个缺点是词汇资源的创建需要词典专业知识以及大量的时间和精力,因此 资源只涵盖语言词典的一小部分。 具体而言,此类资源包含很少的专有名称,新词,俚语和特定于域的技术术语。 此外,这些资源具有强烈的词汇取向,因为它们主要包含关于单个单词的信息,但总体上缺乏世界知识。

concept 定义

Observe that an encyclopedia consists of a large collection of articles, each of which provides a comprehensive exposition focused on a single topic. Thus, we view an encyclopedia as a collection of concepts (corresponding to articles), each accompanied with a large body of text (the article contents).
维基百科中每一个词条对应一个 concept.

example:

对于文本:"Bernanke takes charge" 通过算法我们可以找到维基百科中相关的 concept:
Ben Bernanke, Federal Reserve, Chairman of the Federal Reserve, Alan Greenspan (Bernanke’s predecessor), Monetarism (an economic theory of money supply and central banking), inflation and deflation.

对于文本:"Apple patents a Tablet Mac"
相关的 concept: Apple Computer 2 , Mac OS (the Macintosh operating system) Laptop (the general name for portable computers, of which Tablet Mac is a specific example), Aqua (the GUI of Mac OS X), iPod (another prominent product by Apple), and Apple Newton (the name of Apple’s early personal digital assistant).

ESA 对一个 texts 的表示是 wiki 中所有的 concept 的 weighted combination,这里为了展示方便,只列举了最相关的一些 concept.

ESA(explicit semantic analysis)

通过 wiki 得到一个 basic concepts: \(C_1, C_2,..., C_n\), 其中 \(C_k\) 都是来源于 wiki. 表示一个通用的 n 维语义空间。

然后将任意长度的文本 t 表示成与上述向量长度相同的 权重向量 \(w_1, w_2,..., w_n\) 分别表示 t 与 \(C_k\) 之间的相关程度。

接下来两个步骤就是:
1. the set of basic concepts
2. the algorithm that maps text fragments into interpretation vectors

如何构建 concept 集合

1.using Wikipedia as a Repository of Basic Concepts

维基百科词条中的内容也很关键,用来计算 concept 与输入文本中单词的相似度。

2.building a semantic interpreter 根据 wiki 得到基本的 concept,以及对应的文档, \(d_1,..,d_n\). 构建一个 sparse 表格 T, 其中,列表示 concept,行表示文档中的单词对应的 TDIDF 值。也就是计算文档中的单词与所有文档 \(\bigcup_{i=1..n}d_i\) 的频率关系。

\[T[i,j]=tf(t_i, d_j)\cdot log\dfrac{n}{df_i}\]

其中,Term Frequency - Inverse Document Frequency:

TF 表示在文档 \(d_j\) 中,单词 \(t_i\) 出现的频率。 \[tf(t_i, d_j)=\begin{cases} 1 + log\ count(t_i, d_j), &\text{if count(t_i, d_j) > 0} \\ 0, &\text{otherwise} \end{cases}\]

IDF 表示逆文档频率。反应一个词在不同的文档中出现的频率越大,那么它的 IDF 值应该低,比如介词“to”。而反过来如果一个词在比较少的文本中出现,那么它的 IDF 值应该高。

\[IDF=log\dfrac{n}{df_i}\]

\(df_i=|\{d_k:t_i\in d_k\}|\) 表示出现该单词的文档个数,n 表示总的文档个数。

正则化,cosine normalization:
\[T[i,j]\leftarrow \dfrac{T[i,j]}{\sqrt{\sum_{l=1}^r T[i,j]^2}}\]

r 表示单词的总量。也就是除以所有单词对应的向量二范数之和平方。

得到 table T 之后,一个单词的向量 \(t_i\) 表示就是第 i 行。一个文本片段 \(<t_1,..,t_k>\) 的向量表示是文本中所有单词的质心。

如何将文本片段映射成向量表示