潜在语义分析 LSA 是什么?用矩阵分解发现词语背后的主题
潜在语义分析(Latent Semantic Analysis,LSA)是一种从大量文本中发现词语和文档之间潜在语义关系的方法。它在信息检索领域也被称为潜在语义索引(LSI)。它由 Scott Deerwester、Susan Dumais、George Furnas、Thomas Landauer 等人在 20 世纪 80 年代末提出,并于 1990 年发表了有影响力的论文。它的核心技术是对词语-文档矩阵进行奇异值分解。
它要解决的问题
传统的关键词检索只能找到包含查询词的文档,这带来了两个问题。同义词问题:不同的词可以表达相同的意思。用户搜索“汽车”,那些只用了“轿车”“车辆”的相关文档就会被漏掉。多义词问题:同一个词可以有不同的意思。用户搜索“苹果”,想找的是水果,结果却出现了大量关于手机和电脑的文档。潜在语义分析的想法是:词语表面上的不同背后,隐藏着一些更深层的“概念”或“主题”,如果能把词语和文档都映射到这些概念上去比较,就能更好地捕捉它们的真实含义。
它是怎么做的
第一步,构建词语-文档矩阵:每一行代表一个词,每一列代表一篇文档,矩阵中的每个元素表示这个词在这篇文档中的重要程度,通常使用 TF-IDF 等加权方式。这个矩阵往往非常大,而且非常稀疏,大部分元素都是零。
第二步,进行奇异值分解:把这个矩阵分解成三个矩阵的乘积。分解得到的奇异值反映了各个潜在维度的重要程度。
第三步,降维:只保留最大的若干个奇异值,比如一两百个,丢掉其余较小的部分。这相当于把原来几万维的词语空间压缩到了一个只有一两百维的“潜在语义空间”中。在这个空间里,每个维度大致对应一个潜在的概念,每个词和每篇文档都可以表示为这个空间中的一个向量。
降维的过程把那些经常出现在相似上下文中的词“合并”到了相近的位置。比如“汽车”和“轿车”经常和“驾驶”“发动机”“油耗”这些词一起出现在文档中,虽然它们很少同时出现在同一篇文档里,但在潜在语义空间中会靠得很近。这样,搜索“汽车”时,只用了“轿车”的文档也能被找到。
它的意义和局限
潜在语义分析是最早把“用低维向量表示词语语义”的思想付诸实践的方法之一,Landauer 等人还用它来研究人类如何习得词汇,它在模拟人类的词汇测验中取得了接近学生的成绩。它被用于信息检索、文档聚类、文本分类,以及自动评阅作文等领域。
但它也有局限:它基于线性代数而不是概率模型,得到的维度有时难以解释,可能出现负值;奇异值分解的计算量很大,新增文档时也不方便更新;而且它只考虑词语是否出现在同一篇文档中,忽略了词语的顺序。后来,Thomas Hofmann 在 1999 年提出了概率潜在语义分析(pLSA),David Blei、吴恩达和 Michael Jordan 在 2003 年提出了潜在狄利克雷分配(LDA)主题模型。2013 年出现的 Word2Vec 等词向量方法以及后来的大语言模型,进一步发展了用向量表示语义的思想,但潜在语义分析作为它们的先驱,在文本表示的发展史上占有重要的地位。