gitbook/AI技术内参/docs/6274.md

46 lines
4.8 KiB
Markdown
Raw Permalink Normal View History

2022-09-03 22:05:03 +08:00
# 101 | 基础文本分析模型之二:概率隐语义分析
在上一篇的分享里我们展开了文本分析这个方向讨论了“隐语义分析”Latent Semantic Indexing这个模型。隐语义分析的核心是基于矩阵分解的代数方法。这种方法的好处自然是能够直接利用代数计算方法对文本进行分析而短板则是无法很好地解释结果。而“解释性”是很多概率模型的一大优势因此自然就有很多研究者想到是否能够把概率的语言移植到隐语义分析上。
今天,我们就来分享“**概率隐语义分析**”Probabilistic Latent Semantic Indexing的一些基本内容。概率隐语义分析有时候又被简称为 **PLSA**Probability Latent Semantic Analysis
## 隐语义分析核心思想
上周我们介绍过隐语义分析的核心思想,首先来简要回顾一下。
隐语义分析的核心其实就是用无监督的方法从文本中提取特性,而这些特性可能会对原来文本的深层关系有着更好的解释。
简单来说,隐语义分析就是利用了“矩阵分解”的概念,从而对“词-文档矩阵”Term-Document Matrix进行分解。
## 概率隐语义分析
既然概率隐语义分析是利用概率的语言,那么我们就来看看概率隐语义分析是如何对文档进行建模的。
首先,**PLSA是对文档和里面单词的联合分布进行建模**。这个文档和单词的联合分布其实就是类似隐语义分析中的那个文档和单词的矩阵。只不过在PLSA里我们不是直接对数据进行建模而是认为数据是从某个分布中产生的结果。那么对于这个联合分布该如何建模呢
一种方法就是对这个联合分布**直接进行建模**,但是这往往会遇到数据不足的情况,或者无法找到一个合适的已知参数的分布来直接描述我们需要建模的这个联合分布。另外一种经常使用的方法就是**简化这个联合分布**,从而找到我们可以建模的形式。
那么,如何简化联合分布呢?一种方法就是**把一个联合分布进行分解**。
**一种分解分布的方法就是假定一些隐含的变量,然后数据又是从这些隐含变量中产生而来**。在我们现在的情况里我们从文档和单词的联合分布入手可以做出这样的假设这个文档和单词的联合分布是我们首先从文档出发产生了当前所需要的主题比如金融、运动等然后再从主题出发产生相应的单词。很明显这里的主题是我们并不知道的隐含变量是需要我们从数据中估计出来的。这就是PLSA模型的基本假设。
PLSA还有一个**等价的模型描述**也是对文档单词联合分布的另外一种分解那就是我们首先假设有一个主题的先验概率然后根据这个主题的分布产生了一个文档同时也产生了这个文档里面的所有单词。这种假设观点非常类似我们之前在介绍高级的主题模型时谈到的“下游方法”Down-Stream。这里文档变量和单词变量都成为了隐变量也就是主题变量的下游变量。
通过一定的代数变形,我们可以得到这两种方法其实就是等价的。
如果我们按照第一种分解方法来认识文档单词分布有一种更加通俗的解释我们其实是给每一个单词都联系了一个未知的主题变量这个主题变量是从一个文档级别的主题分布得来的实际上这是一个多项分布Multinomial Distribution然后根据这个主题变量我们又从相应的一个语言模型中抽取出了当前的单词这又是另外的一个多项分布。如果从这个角度来看待这个模型你会发现**PLSA其实和LDA非常相似**。
**实际上从模型的根本特征上来说PLSA和LDA都是对文档单词分布的一种分解或者叫作产生解释**。只不过LDA针对刚才我们所说的两个多项分布一个是每个文档的主题分布另外一个是K个语言模型都外加了先验分布使得整个模型更加符合贝叶斯统计的观点。然而**在建模的核心思想上PLSA和LDA是一样的**。
关于如何学习PLSA这样的隐变量模型我将会在后面的分享中和你详细讨论。
## 总结
今天我为你介绍了基于概率模型的隐语义模型的相关知识。
一起来回顾下要点第一我们简要回顾了隐语义模型的重要性第二我们讨论了基于概率语言的隐语义模型的核心思想以及PLSA和LDA的联系和区别。
最后给你留一个思考题PLSA的建模流程有没有什么局限性
欢迎你给我留言,和我一起讨论。