统计机器学习方法 for NLP:基于LSA的主题模型

前言

最近在重刷李航老师的《统计机器学习方法》尝试将其与NLP结合,通过具体的NLP应用场景,强化对书中公式的理解,最终形成「统计机器学习方法 for NLP」的系列。这篇将介绍潜在语义分析LSA(绝对给你一次讲明白)并基于LSA完成一个主题模型提取的任务。

潜在语义分析是什么

潜在语义分析(Latent Semantic Analysis, LSA)是一种无监督的机器学习方来,通过分析文本内容来获取文本「隐藏主题」,也就是文章的「表示」,一旦能获取文本的「表示」就可以进行文本之间的相似度的计算,进而实现文本聚类等应用。

单词向量空间模型

在统计机器学习里面获取一个文章的「表示」最基础的方法就是单词向量空间模型。基本的想法是用一个向量来表示文章的语义,向量的每一个维度表示词表中的一个单词,这个维度的数值就表示该单词在文本中出现的频次或者权重(例如tf-idf)。这样通过计算两个向量的相似度(例如余弦相似度)就可以来获得两个文本之间的相似度。这种模型非常简单而且计算效率很高,至今在信息检索等场景广泛应用。

a7acfa1642641a64d54a756230e9bab1.jpeg

但也会存在两个问题:(1) 无法解决一词多义或者多词一义的问题,因为是最简单的「字面匹配」。例如“很开心”和“好快乐” 这两句其实是一个意思,但是没有一个字是一样的,按照上面的方法这两句话的语义相似度就是0 (2) 存储开销较大,因为词表的大小一般是非常大的(例如几万维),所以存一个N*V的矩阵会是很大的开销,这里N表示文章个数,V表示词表大小。(其实现在来看这点不算什么问题)

正是因为最基础的「单词向量空间模型」存在上述的问题,所以潜在语义分析LSA就被提出了。

话题向量空间模型

我们认为一个文本一般包含多个话题,两个文本语义的相似可以等价于两个文本话题的相似。这里的话题就可以用一组相似的单词构成,比如{开心,快乐,高兴}等。所以我们可以构建一个话题向量来对一个文本进行表示,向量的每一个维度表示一个话题,这个维度的数值就表示文本在这个话题上的权重,并且一般话题的个数是远小于词表的个数,存储空间大幅降低。所以通过这种方式就可以解决「单词向量空间模型」遇到了两个问题。

9b719a1f7bcd22c6525fd86b6edbdf2a.jpeg

如上图所示,LSA就是通过将「单词-文本矩阵」(单词向量空间)转化成 「单词-话题矩阵」和 「话题-文本矩阵」(话题向量空间模型)乘积的形式,从而挖掘出文章中潜在的语义。

训练阶段:首先基于单词向量空间模型从训练文本中构建出「单词-文本」矩阵,然后通过矩阵的奇异值分解对「单词-文本矩阵」进行分解,将分解结果的左矩阵作为话题的表示,右矩阵作为文本的表示(在话题维度下)。

预测阶段:给定一个文本,先获取单词向量空间(1*m),然后与空间表示(m*k)相乘,就获得了话题空间向量(1*k),作为这个文本的表示。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nghuyong

您的鼓励是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值