matlab实现plsa主题模型

164 阅读2分钟

前言

本文已参与「新人创作礼」活动,一起开启掘金创作之路.关于主题模型大家可能对LDA主题模型比较熟悉,其实LDA主题模型是在plsa模型的基础之上发展而来的,LDA主题模型是在plsa主题模型的基础之上加了一个贝叶斯框架。

代码

具体的matlab代码如下所示:

function [phi,theta] = Plsa(K,N,M,n,T)
%此模型为plsa主题模型
%   K为主题数目
%   N为文档中次数
%   M为文档数
%   n为词频矩阵,n的元素为词的频率
%   T为迭代次数
phi=Markov3(K,N);
phi_1=zeros(K,N);
theta=Markov3(M,K);
theta_1=zeros(M,K);
for t=1:T
    for k=1:K
        for j=1:N
            phi_1(k,j)=sum((phi(k,j)*n(:,j).*phi(k,:))./(phi(:,j)'*theta')); 
        end
    end
    for i=1:M
        for k=1:K
            theta_1(i,k)=sum((theta(i,k)*n(i,:).*phi(k,:))/sum(n(i,:))./(theta(i,:)*phi));
        end
    end
phi=phi_1;
theta=theta_1;

end其中Mar kov3是我自己定义的函数包,生成每行元素和为1的矩阵。

plsa模型简介

自然语言和文本处理是人工智能和机器学习方面的一个重大的挑战。在这个领域中的任何巨大进步都会对信息检索,信息过滤,智能接口,语言识别,自然语言处理,机器学习产生重大的影响。机器学习的主要难点在于“被阐述”的词法和“真正要表达”的语义的区别。产生这个问题的原因主要是:1.一个单词可能有多个意思和多个用法。2.同义词和近义词,而且根据不同的语境或其他因素,不同的单词也有可能表示相同的意思。

**LSA**是处理这类问题的著名技术。其主要思想就是映射高维向量到潜在语义空间,使其降维。LSA的目标就是要寻找到能够很好解决实体间词法和语义关系的数据映射。正是由于这些特性,使得LSA成为相当有价值并被广泛应用的分析工具。PLSA是以统计学的角度来看待LSA,相比于标准的LSA,他的概率学变种有着更巨大的影响