但是最近我发现这个链接对于理解LSA的原理非常有帮助而没有太多的数学。 http://www.puffinwarellc.com/index.php/news-and-articles/articles/33-latent-semantic-analysis-tutorial.html。它构成了我可以进一步发展的良好基础。
目前,我正在寻找对概率潜在语义分析/索引的类似介绍。少数数学和更多解释其背后原理的例子。如果你知道这样的介绍,请告诉我。
可以用它来找出句子之间的相似度吗?它会处理多义词吗?
是否有相同的python实现?
谢谢。
答案 0 :(得分:7)
有一个很好的talk by Thomas Hofmann解释了LSA及其与概率潜在语义分析(PLSA)的关系。谈话有一些数学,但比PLSA论文(甚至其维基百科页面)更容易理解。
PLSA可用于在句子之间获得一些相似性度量,因为两个句子可被视为从潜在类别的概率分布中提取的短文档。您的相似性很大程度上取决于您的训练集。用于训练潜类模型的文档应反映您要比较的文档类型。生成具有两个句子的PLSA模型将不会创建有意义的潜在类。类似地,使用非常相似的上下文语料库进行训练可能会产生对文档中的轻微更改过于敏感的潜在类。此外,由于句子包含相对较少的标记(与文档相比),我不相信您会在句子级别获得PLSA的高质量相似性结果。
PLSA不处理多义词。但是,如果您关注多义词,可以尝试在输入文本上运行Word Sense消歧工具,以正确的方式标记每个单词。在此标记语料库上运行PLSA(或LDA)将在结果文档表示中删除多义词的影响。
正如Sharmila所指出的,Latent Dirichlet分配(LDA)被认为是文档比较的最先进技术,并且优于PLSA,后者倾向于过度拟合训练数据。此外,还有更多工具可以支持LDA并分析您使用LDA获得的结果是否有意义。 (如果您有冒险精神,可以阅读David Mimno's two papers from EMNLP 2011如何评估您从LDA获得的潜在主题的质量。)