专栏首页数据饕餮NLP专题:LSA浅层语义分析

NLP专题:LSA浅层语义分析

在Wiki上看到的LSA的详细介绍,感觉挺好的,遂翻译过来,有翻译不对之处还望指教。

原文地址:http://en.wikipedia.org/wiki/Latent_semantic_analysis

前言

浅层语义分析(LSA)是一种自然语言处理中用到的方法,其通过“矢量语义空间”来提取文档与词中的“概念”,进而分析文档与词之间的关系。LSA的基本假设是,如果两个词多次出现在同一文档中,则这两个词在语义上具有相似性。LSA使用大量的文本上构建一个矩阵,这个矩阵的一行代表一个词,一列代表一个文档,矩阵元素代表该词在该文档中出现的次数,然后再此矩阵上使用奇异值分解(SVD)来保留列信息的情况下减少矩阵行数,之后每两个词语的相似性则可以通过其行向量的cos值(或者归一化之后使用向量点乘)来进行标示,此值越接近于1则说明两个词语越相似,越接近于0则说明越不相似。

LSA最早在1988年由 Scott Deerwester, Susan Dumais, George Furnas, Richard Harshman, Thomas Landauer, Karen Lochbaum and Lynn Streeter提出,在某些情况下,LSA又被称作潜在语义索引(LSI)。

概述

词-文档矩阵(Occurences Matrix)

LSA 使用词-文档矩阵来描述一个词语是否在一篇文档中。词-文档矩阵式一个稀疏矩阵,其行代表词语其列代表文档。一般情况下,词-文档矩阵的元素是该词在文档中的出现次数,也可以是是该词语的tf-idf(term frequency–inverse document frequency)。

词-文档矩阵和传统的语义模型相比并没有实质上的区别,只是因为传统的语义模型并不是使用“矩阵”这种数学语言来进行描述。

降维

在构建好词-文档矩阵之后,LSA将对该矩阵进行降维,来找到词-文档矩阵的一个低阶近似。降维的原因有以下几点:

  • 原始的词-文档矩阵太大导致计算机无法处理,从此角度来看,降维后的新矩阵式原有矩阵的一个近似。
  • 原始的词-文档矩阵中有噪音,从此角度来看,降维后的新矩阵式原矩阵的一个去噪矩阵。
  • 原始的词-文档矩阵过于稀疏。原始的词-文档矩阵精确的反映了每个词是否“出现”于某篇文档的情况,然而我们往往对某篇文档“相关”的所有词更感兴趣,因此我们需要发掘一个词的各种同义词的情况。

降维的结果是不同的词或因为其语义的相关性导致合并,如:

{(car), (truck), (flower)} --> {(1.3452 * car + 0.2828 * truck), (flower)}

将维可以解决一部分同义词的问题,也能解决一部分二义性问题。具体来说,原始词-文档矩阵经过降维处理后,原有词向量对应的二义部分会加到和其语义相似的词上,而剩余部分则减少对应的二义分量。

推导

假设X是词-文档矩阵,其元素(i,j)代表词语i在文档j中的出现次数,则X矩阵看上去是如下的样子:

可以看到,每一行代表一个词的向量,该向量描述了该词和所有文档的关系。

相似的,一列代表一个文档向量,该向量描述了该文档与所有词的关系。

词向量

的点乘可以表示这两个单词在文档集合中的相似性。矩阵

包含所有词向量点乘的结果,元素(i,p)和元素(p,i)具有相同的值,代表词p和词i的相似度。类似的,矩阵

包含所有文档向量点乘的结果,也就包含了所有文档那个的相似度。

现在假设存在矩阵

的一个分解,即矩阵

可分解成正交矩阵U和V,和对角矩阵

的乘积。

这种分解叫做奇异值分解(SVD),即:

因此,词与文本的相关性矩阵可以表示为:

因为

是对角矩阵,因此

肯定是由

的特征向量组成的矩阵,同理

特征向量组成的矩阵。这些特征向量对应的特征值即为

中的元素。综上所述,这个分解看起来是如下的样子:

被称作是奇异值,而

则叫做左奇异向量和右奇异向量。通过矩阵分解可以看出,原始矩阵中的

只与U矩阵的第i行有关,我们则称第i行为

。同理,原始矩阵中的

只与

中的第j列有关,我们称这一列为

并非特征值,但是其由矩阵所有的特征值所决定。

当我们选择k个最大的奇异值,和它们对应的U与V中的向量相乘,则能得到一个X矩阵的k阶近似,此时该矩阵和X矩阵相比有着最小误差(即残差矩阵的Frobenius范数)。但更有意义的是这么做可以将词向量和文档向量映射到语义空间。向量

与含有k个奇异值的矩阵相乘,实质是从高维空间到低维空间的一个变换,可以理解为是一个高维空间到低维空间的近似。同理,向量

也存在这样一个从高维空间到低维空间的变化。这种变换用公式总结出来就是这个样子:

有了这个变换,则可以做以下事情:

  • 判断文档

在低维空间的相似度。比较向量

与向量

(比如使用余弦夹角)即可得出。

  • 通过比较

可以判断词

和词

的相似度。

  • 有了相似度则可以对文本和文档进行聚类。
  • 给定一个查询字符串,算其在语义空间内和已有文档的相似性。

要比较查询字符串与已有文档的相似性,需要把文档和查询字符串都映射到语义空间,对于原始文档,由以下公式可以进行映射:

其中对角矩阵

的逆矩阵可以通过求其中非零元素的倒数来简单的得到。

同理,对于查询字符串,得到其对应词的向量后,根据公式

将其映射到语义空间,再与文档进行比较。

应用

低维的语义空间可以用于以下几个方面:

  • 在低维语义空间可对文档进行比较,进而可用于文档聚类和文档分类。
  • 在翻译好的文档上进行训练,可以发现不同语言的相似文档,可用于跨语言检索。
  • 发现词与词之间的关系,可用于同义词、歧义词检测。.
  • 通过查询映射到语义空间,可进行信息检索。
  • 从语义的角度发现词语的相关性,可用于“选择题回答模型”(multi choice qustions answering model)。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • NLP中的词向量对比:word2vec/glove/fastText/elmo/GPT/bert

    一、文本表示和各词向量间的对比 1、文本表示哪些方法? 2、怎么从语言模型理解词向量?怎么理解分布式假设? 3、传统的词向量有什么问题?怎么解决?各种词向量的...

    zenRRan
  • NLP中文面试学习资料:面向算法面试,理论代码俱全,登上GitHub趋势榜

    这里有一份NLP面试大全,全中文教学,囊括机器学习及NLP算法面试中常考的知识点,还有算法实战代码,实乃算法工程师求职路上,必备良品。

    代码医生工作室
  • 线性代数在数据科学中的十大强大应用(二)

    本篇主要介绍自然语言处理(NLP)中的线性代数与计算机视觉(CV)中的线性代数。涵盖主成分分析(PCA)与奇异值分解(SVD)背后的线性代数知识。相信这也是各位...

    石晓文
  • 线性代数在数据科学中的十大强大应用(二)

    【磐创AI导读】:本篇为机器学习与数据科学背后的线性代数知识系列的第二篇,查看上篇:线性代数在数据科学中的十个强大应用(一)。本篇主要介绍自然语言处理(NLP...

    磐创AI
  • NLP 点滴 :文本相似度 (中)

    在自然语言处理过程中,经常会涉及到如何度量两个文本之间的相似性,我们都知道文本是一种高维的语义空间,如何对其进行抽象分解,从而能够站在数学角度去量化其相似性。

    肖力涛
  • 主题建模技术介绍-机器学习模型的自然语言处理方法

    主题模型(topic model)是以非监督学习的方式对文集的隐含语义结构(latent semantic structure)进行聚类(clustering)...

    程序你好
  • 教你在Python中实现潜在语义分析(附代码)

    你有没有去过那种运营良好的图书馆?我总是对图书馆馆员通过书名、内容或其他主题保持一切井井有条的方式印象深刻。但是如果你给他们数千本书,要求他们根据书的种类整理出...

    数据派THU
  • 基于自然语言处理(语义/情感)的香水推荐

    自然语言处理(NLP)在推荐系统和信息检索中有许多有趣的应用。作为一名香水爱好者和数据科学家,利基香水社区使用的不寻常且高度描述性的语言启发我使用NLP创建一个...

    AiTechYun
  • 用 LDA 和 LSA 两种方法来降维和做 Topic 建模

    图片链接: https://pixabay.com/en/golden-gate-bridge-women-back-1030999/

    AI研习社

扫码关注云+社区

领取腾讯云代金券