本周我们分享了文本挖掘中的一个重要工具 LDA(Latent Diriclet Allocation),这是一个出色的无监督学习的文本挖掘模型。
今天,我们沿着文本分析这一方向继续展开。我们首先回到一个最基础的问题,那就是文本分析的基础模型都有哪些,这些最早的模型对后面的发展都有哪些贡献和启发?
带着这些问题,我们一起来看一个叫“隐语义分析”(Latent Semantic Indexing)的技术。
隐语义分析的背景
为什么需要隐语义分析呢?隐语义分析到底发挥了怎样的历史性作用呢?
对于数据挖掘而言,文本数据算是大规模数据中,研究人员最早接触到的一类数据了。长久以来,大家都有一种直观的想法,那就是在这些看似没有头绪的文字中,究竟有没有隐含着某些规律呢?我们到底能不能从文字中提取出一些更加有用的结构性的内容呢?
对于文本分析,有一类是基于“显式”的标签来进行的。也就是说,我们可以把文本分析当作是监督学习的任务来看待。这一类文本分析的一大特点,往往是针对某一种任务建立分类器,然后对不同类别的文本进行鉴别,从而达到更加深入理解文本的目的。比如,我们需要理解不同情感的文字的时候,通常情况下,我们需要有一个数据集,能够告诉我们哪些文档是“正面情绪”的,哪些是“负面情绪”的。
然而,并不是所有的文本分析任务都是建立在有数据标签的基础之上。实际上,对于绝大多数文本数据而言,我们事先是并没有标签信息的。那么,在没有标签信息的场景下,如何对文本提取关键信息就成为了研究人员长期面对的一个关键挑战。
如果我们用今天的眼光来看,隐语义分析的核心其实就是用无监督的方法从文本中提取特性,而这些特性可能会对原文本的深层关系有着更好的解释。
其实,从 20 世纪 80 年代发展出来的隐语义分析,一直到今天利用深度学习技术来对文本的内涵进行分析,其实质都是一样的,都是看如何能够用无监督的方法提取文本特性,一个重要的区别当然是在提取办法的差异上。
隐语义分析
对隐语义分析的一个简单直白的解释就是:利用矩阵分解的概念对“词 - 文档矩阵”(Term-Document Matrix)进行分解。
在前面介绍推荐系统的时候,我们已经看到了矩阵分解可以认为是最直接的一种针对矩阵数据的分析方式。
那么,为什么我们需要对矩阵进行分解呢?