1、第十七章 潜在语义分析 潜在语义分析 潜在语义分析((latent semantic analysis, LSA)是一种无监督学习方法,主要 用于文本的话题分析 通过矩阵分解发现文本与单词之间的基于话题的语义关系 文本信息处理中,传统的方法以单词向量表示文本的语义内容,以单词向量空间的 度量表示文本之间的语义相似度。 潜在语义分析旨在解决这种方法不能准确表示语义的问题,试图从大量的文本数据 中发现潜在的话题,以话题向量表示文本的语义内容,以话题向量空间的度量更准 确地表示文本之间的语义相似度。这也是话题分析(topic modeling)的基本想法。 潜在语义分析 潜在语义分析使用的是非概率的
2、话题分析模型。 具体地,将文本集合表示为单词-文本矩阵,对单词-文本矩阵进行奇异值分解,从 而得到话题向量空间,以及文 在话题向量空间的表示。 奇异值分解特点是分解的矩阵正交 非负矩阵分解(non-negative matrix factorization, NMF)是另一种矩阵的因子 分解方法,其特点是分解的矩阵非负 非负矩阵分解也可以用于话题分析 单词向量空间 文本信息处理,比如文本信息检索、文本数据挖掘的一个核心问题是对文本的语义 内容进行表示,并进行文本之间的语义相似度计算。 最简单的方法是利用向量空间模型(vector space model, VSM),也就是单词向量 空间模型(w
3、ord vector space model)。 向量空间模型的基本想法是,给定一个文本,用一个向量表示该文本的“语义” 向量的每一维对应一个单词,其数值为该单词在该文本中出现的频数或权值 基 本假设是文本中所有单词的出现情况表示了文本的语义内容 文本集合中的每个文本都表示为一个向量,存在于一个向量空间 向量空间的度量,如内积或标准化内积表示文本之间的“语义相似度”。 单词向量空间 给定一个含有n个文本的集合 ,以及在所有文本 中出现的m个单词的集合 。 将单词在文本中出现的 数据用一个单词-文本矩阵(word- document matrix)表示,记作X 单词向量空间 这是一个 m x n
4、 矩阵,元素 xij 表示单词 wi 在文本.dj 内中出 现的频数或权值。 由于单 词的种类很多,而每个文本中出现单词的种类通常较少, 所以单词-文本矩阵是一个稀疏矩阵。 单词向量空间 权值通常用单词频率-逆文本频率(term frequency-inverse document frequency, TF-IDF)表示,其定义是 tfij:单词 wi 出现在文本 dj 中的频数 :是文本 dj 中出现的所有单词的频 数之和 dfi:含有单词 wi 的文本数 df: 是文本集合D的全部文本数 单词向量空间 直观上,一个 单词在一个文本中出现的频数越高,这个单词在 这个文本中的重要度就越高 一
5、个单 词在整个文本集合中出现的文本数越少,这个单词就越 能表示其所在文本的特点,重要度就越高 一个单词在一个文本的TF-IDF是两种重要度的积,表示综合重要 度 单词向量空间 单词向量空间模型直接使用单词-文本矩阵的信息。单词-文本矩 阵的第j列向量 xj 表示文本 dj xij :单词 wi 在文本 dj 的权值 权值越大,该单词在该文本中的重要度就越高 单词向量空间 两个单词向量的内积或标准化内积(余弦)表示对应的文本之间 的语义相似度 因此,文本 di 与 dj 之间的相似度为 直观上,在两个文本中共同出现的单词越多,其语义内容就越相 近,对应的单词向量同不为零的维度就越多,内积就越大(
6、单词 向量元素的值都是非负的),表示两个文本在语义内容上越相似 单词向量空间 单词向量空间模型 模型简单 计算效率高 有局限性,内积相似度未必能够准确表达两个文本的语义相似度 一词多义性(polysemy) 多词一义性(synonymy) 例 单词向量空间模型中,文本 d1 与 d2 相似度并不高,尽管两个文本的内容相似, 这是因为同义词“airplane”与“aircraft” 被当作了两个独立的单词,单词向量空间模型 不考虑单 的同义性,在此情况下无法进行 准确的相似度计算。 例 文本 d3 与 d4 有一定的相似度,尽管两个 文本的内容并不相似,这是因为单词 “apple”具有多义,可以
7、表示 “apple computer”和“fruit, 单词向量空间模型不考虑单词的多义性, 在此情况下也无法进行准确的相似度计算。 话题向量空间 两个文本的语义相似度可以体现在两者的话题相似度上 一个文本一般含有若干个话题。 如果两个文本的话题相似,那么两者的语 义应该也相似 话题可以由若干个语义相关的单词表示,同义词(如“airplane”与 “aircraft)可以表示同一个话题,而多义词(如“apple)可以表示不 同的话题。 这样,基于话题的模型就可以解决上述基于单 词的模型存在的问题。 话题向量空间 设想定义一种话题向量空间模型(topic vector space model)
8、给定一个文本,用话题空间的一个向量表示该文本,该向量的每 一分量对应一个话题,其数值为该话题在该文本中出现的权值 用两个向量的内积或标准化内积表示对应的两个文本的语义相似 度 注:单词向量空间模型与话题向量空间模型可以互为补充,现实 中,两者可以同时使用。 话题向量空间 给定一个文本集合 和一个相应的单词集合 。可以获得其单词-文本矩阵X,X构成原始的 单词向量空间,每一列是一个文本 在单词向量空间中的表示 矩阵X也可以写作 话题向量空间 假设所有文本共含有k个话题。假设每个话题由一个定义在单词集合W 上的m维向量表示,称为话题向量,即 til:单词 wi 在话题 tl 的权值,权值越大,该单
9、词在该话题中的重 要度就越高 k个话题向量张成一个话题向量空间(topic vector space),维数为k 话题向量空间T是单词向量空间X的一个子空间 话题向量空间 话题向量空间T也可以表示为一个矩阵,称为单词-话题矩阵 (word-topic matrix),记作 矩阵T也可写作 文本在话题向量空间的表示 现在考虑文本集合D的文本 dj,在单词向量空间中由一个向量 xj 表示,将 xj 投影到话题向量空间T中,得到在话题向量空间的一 个向量yj, yj 是一个k维向量, 其表达式为 ylj:文本 dj 在话题 tl 的权值, 权值越大,该话题在该文本中 的 重要度就越高 文本在话题向量
10、空间的表示 矩阵Y表示话题在文本中出现的情况,称为话题-文本矩阵 (topic-document matrix) ,记作 矩阵Y可一个写作 从单词向量空间到话题向量空间的线性变 换 这样一来,在单词向量空间的文本向量 xj 可以通过它在话题空 间中的向量 yj 近似表示,具体地由k个话题向量以 yj 为系数的 线性组合近似表示 所以,单词-文本矩阵X可以近似的表示为单词-话题矩阵T与话题 一文本矩阵Y的乘积形式。这就是潜在语义分析。 从单词向量空间到话题向量空间的线性变 换 直观上,潜在语义分析是将文本在单词向量空间的表示通过线性 变换转换为在话 题向量空间中的表示 从单词向量空间到话题向量空
11、间的线性变 换 从单词向量空间到话题向量空间的线性变 换 在原始的单词向量空间中,两个文本 di 与 dj 的相似度可以由 对应的向量的内积 表示,即xi xj。 经过潜在语义分析之后,在话题向量空间中,两个文本 di 与 dj 的相似度可以由对应的向量的内积即 yi yj 表示。 要进行潜在语义分析,需要同时决定两部分的内容,一是话题向 量空间T,二是文本在话题空间的表示Y, 使两者的乘积是原始 矩阵数据的近似,而这一结果完全从话题-文本矩阵的信息中获 得 潜在语义分析算法 潜在语义分析利用矩阵奇异值分解 潜在语义对单词-文本矩阵进行奇异值分解, 将其左矩阵作为话 题向量空间,将其对角矩阵与
12、右矩阵的乘积作为文本在话题向量 空间的表示。 矩阵奇异值分解算法 (1)单词-文本矩阵 给定文本集合 和单词集合 。潜在 语 义分析首先将这些数据表成一个单词-文本矩阵 矩阵奇异值分解算法 (2)截断奇异值分解 潜在语义分析根据确定的话题个数k对单词-文本矩阵X进行截断 奇异值分解 矩阵奇异值分解算法 (3)话题向量空间 在单词一文本矩阵X的截断奇异值分解式中,矩阵Uk的每一个列向 量 表示一个话题,称为话题向量。由这k个话题向量张成 一个子空间 称为话题向量空间 矩阵奇异值分解算法 (4) 文本的话题空间表示 有了话题向量空间,接着考虑文本在话题空间的表示 其中 矩阵奇异值分解算法 由式(1
13、7.14)知, 矩阵X的第j列向量 xj 满足 是矩阵 第j列向量 式(17.15)是文本 dj 的近似表达式, 由 k个话题向量 ul 的线性组合构成 矩阵奇异值分解算法 矩阵 的每一个列向量 是一个文本在话题向量空间的表示 综上,可以通过对单词一文本矩阵的奇异值分解进行潜在语义分 析 得到话题空间Uk,以及文本在话题空间的 表示 例 假设有9个文本,11个单词,单词一文本矩 阵x为11 x 9矩阵, 矩阵的元素是单词在文本中出现的频数,表示如下: 进行潜在语义分析。 例 实施对矩阵的截断奇异值分解,假设话题的个数是3,截断奇异 值分解结果为 例 左矩阵U3个列向量(左奇异向量)。第1列向量
14、 u1 的值均为正, 第2列向量 u2 和第3列向量 u3 的值有正有负。 中间的对角矩阵 的元素是3个由 大到小的奇异值(正值)。 右矩阵是 ,其转置矩阵V3也有3个列向量(右奇异向 量)。 第1列向量 v1 的值也都为正,第2列向量 v2 和第3列向量 v3 的 值有正有负。 例 现在,将 与 相乘,整体变成两个矩阵乘积的形式 例 矩阵U3有3个列向量,表示3个话题,矩阵U3表示话题向量空间。 矩阵 有9个列向量,表示9个文本,矩阵 是文本集合 在话题向量空间的表示。 非负矩阵分解算法 非负矩阵分解也可以用于话题分析。 对单词一文本矩阵进行非负矩阵分解,将其左矩阵作为话题向量 空间,将其右
15、矩阵作为文本在话题向量空间的表示。 注意通常单词-文本矩阵是非负的。 非负矩阵分解 给定一个非负矩阵X0,找到两个非负矩阵W0和H 0,使得 即将非负矩阵X分解为两个非负矩阵W和H的乘积的形式,称为非 负矩阵分解。 因为WH与X完全相等很难实现,所以只要求WH与X近似相等。 非负矩阵分解 假设非负矩阵X是 m x n 矩阵,非负矩阵W和H分别为 m x k 矩 阵和 k x n 矩阵。 假设kmin(m, n),即W和H小于原矩阵X,所以非负矩阵分解是对 原数据的压缩。 非负矩阵分解 由 知,矩阵X的第j列向量 xj 满足 矩阵X的第j列 xj 可以由矩阵W的k个列 wl 的线性组合逼近,线性
16、组 合的系数是矩阵H的第j列hj的元素。 非负矩阵分解旨在用较少的基向量、系数向量来表示较大的数据矩阵。 潜在语义分析模型 给定一个 m x n 非负的单词-文本矩阵X0 假设文本集合共包含k个话题, 对X进行非负矩阵分解。即求非 负的 m x k 矩阵W0和 k x n 矩阵H0,使得 令 为话题向量空间, 表示文本 集合的k个 话题,令 为文本在话题向量空间的表示, 表示 文本集合的n个文本 非负矩阵分解的形式化 非负矩阵分解可以形式化为最优化问题求解。首先定义损失函数 或代价函数。 第一种损失函数是平方损失。设两个非负矩阵 ,和 ,平方损失函数定义为 其下界是0,当且仅当A=B时达到下界
17、。 非负矩阵分解的形式化 另一种损失函数是散度(divergence)。设两个非负矩阵 和 散度损失函数定义为 其下界也是0,当且仅当A= B时达到下界。A和B不对称。 当 时 散度损失函数退化为Kuliback-Leiber散度或相对嫡,这时A和B 是概率分布。 非负矩阵分解的形式化 目标函数 关于W和H的最小化,满足约束条件W, H0, 即 或者,目标函数 关于W和H的最小化,满足约束条件 W, H0,即 算法 算法 算法 最优化目标函数是 ,为了方便将目标函数乘以1/2,其 最优解与原问 题相同,记作 应用梯度下降法求解。首先求目标函数的梯度 同样可得 算法 然后求得梯度下降法的更新规则 式中 是步长。选取 即得乘法更新规则 非负矩阵分解的迭代算法