感觉算法有点问题,稍后更新新的代码
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主题模型matlab代码
最新推荐文章于 2023-03-29 15:13:01 发布