hmm机器学习.rar

• 伟大的人啊
了解作者
• matlab
开发工具
• 5KB
文件大小
• rar
文件格式
• 0
收藏次数
• 1 积分
下载积分
• 8
下载次数
• 2017-09-29 14:59
上传日期
HMM(隐马尔科夫模型)是自然语言处理中的一个基本模型，用途比较广泛，如汉语分词、词性标注及语音识别等，在NLP中占有很重要的地位
hmm机器学习.rar
• hmm
• rdiv.m
273B
• hmmdemo.m
912B
• geyser
4.3KB
• hmm.m
2.8KB
• rsum.m
117B
• Contents.m
535B
• rprod.m
184B
• hmm_cl.m
1.4KB

% function [Mu,Cov,P,Pi,LL]=hmm(X,T,K,cyc,tol); % % Gaussian Observation Hidden Markov Model % % X - N x p data matrix % T - length of each sequence (N must evenly divide by T, default T=N) % K - number of states (default 2) % cyc - maximum number of cycles of Baum-Welch (default 100) % tol - termination tolerance (prop change in likelihood) (default 0.0001) % % Mu - mean vectors % Cov - output covariance matrix (full, tied across states) % P - state transition matrix % Pi - priors % LL - log likelihood curve % % Iterates until a proportional change < tol in the log likelihood % or cyc steps of Baum-Welch function [Mu,Cov,P,Pi,LL]=hmm(X,T,K,cyc,tol) p=length(X(1,:)); N=length(X(:,1)); if nargin<5 tol=0.0001; end; if nargin<4 cyc=100; end; if nargin<3 K=2; end; if nargin<2 T=N; end; if (rem(N,T)~=0) disp('Error: Data matrix length must be multiple of sequence length T'); return; end; N=N/T; Cov=diag(diag(cov(X))); Mu=randn(K,p)*sqrtm(Cov)+ones(K,1)*mean(X); Pi=rand(1,K); Pi=Pi/sum(Pi); P=rand(K); P=rdiv(P,rsum(P)); LL=[]; lik=0; alpha=zeros(T,K); beta=zeros(T,K); gamma=zeros(T,K); B=zeros(T,K); k1=(2*pi)^(-p/2); for cycle=1:cyc %%%% FORWARD-BACKWARD Gamma=[]; Gammasum=zeros(1,K); Scale=zeros(T,1); Xi=zeros(T-1,K*K); for n=1:N iCov=inv(Cov); k2=k1/sqrt(det(Cov)); for i=1:T for l=1:K d=Mu(l,:)-X((n-1)*T+i,:); B(i,l)=k2*exp(-0.5*d*iCov*d'); end; end; scale=zeros(T,1); alpha(1,:)=Pi.*B(1,:); scale(1)=sum(alpha(1,:)); alpha(1,:)=alpha(1,:)/scale(1); for i=2:T alpha(i,:)=(alpha(i-1,:)*P).*B(i,:); scale(i)=sum(alpha(i,:)); alpha(i,:)=alpha(i,:)/scale(i); end; beta(T,:)=ones(1,K)/scale(T); for i=T-1:-1:1 beta(i,:)=(beta(i+1,:).*B(i+1,:))*(P')/scale(i); end; gamma=(alpha.*beta); gamma=rdiv(gamma,rsum(gamma)); gammasum=sum(gamma); xi=zeros(T-1,K*K); for i=1:T-1 t=P.*( alpha(i,:)' * (beta(i+1,:).*B(i+1,:))); xi(i,:)=t(:)'/sum(t(:)); end; Scale=Scale+log(scale); Gamma=[Gamma; gamma]; Gammasum=Gammasum+gammasum; Xi=Xi+xi; end; %%%% M STEP % outputs Mu=zeros(K,p); Mu=Gamma'*X; Mu=rdiv(Mu,Gammasum'); % transition matrix sxi=rsum(Xi')'; sxi=reshape(sxi,K,K); P=rdiv(sxi,rsum(sxi)); % priors Pi=zeros(1,K); for i=1:N Pi=Pi+Gamma((i-1)*T+1,:); end Pi=Pi/N; % covariance Cov=zeros(p,p); for l=1:K d=(X-ones(T*N,1)*Mu(l,:)); Cov=Cov+rprod(d,Gamma(:,l))'*d; end; Cov=Cov/(sum(Gammasum)); oldlik=lik; lik=sum(Scale); LL=[LL lik]; fprintf('cycle %i log likelihood = %f ',cycle,lik); if (cycle<=2) likbase=lik; elseif (lik<oldlik) fprintf('violation'); elseif ((lik-likbase)<(1 + tol)*(oldlik-likbase)|~finite(lik)) fprintf('\n'); break; end; fprintf('\n'); end

相关推荐
• HMM.rar
北京大学汉语语言学研究中心下载资料（基于HMM词性标记方法）
• HMM-master.zip
python实验中文词性标注,包括预处理，实验数据为新闻语料。
• HMM.zip
隐马尔科夫模型用于术语提取，实验方案比较可行
• hmm_ppt.zip
隐马尔可夫模型教学ppt （哈工大、浙大）
• HMM.zip
这是关于隐马尔可夫模型的一些介绍，想学习这方面内容的可以看看
• 结巴分词（支持词性标注）
- [ ] 基于 =HMM= 模型，采用 =Viterbi= (维特比)算法实现未登录词识别 * 性能评估 - 测试机配置 #+BEGIN_SRC screen Processor 2 Intel(R) Pentium(R) CPU G620 @ 2.60GHz Memory：8GB 分词测试时机器开了...
• HMM中文分词
基于HMM的中文分词代码，虽然基于字标注的中文分词借鉴了词性标注的思想，但是在实践中，多数paper中的方法似乎局限于最大熵模型和条件随机场的应用，所以我常常疑惑字标注中文分词方法为什么不采用别的模型和方法呢...
• HMM学习范例教程(全集)
HMM算法的一个大的总结,说的深入浅出,看完之后,对学习HMM有很大用处!!!(转自我爱自然语言)
• 中文分词与词性标注
成熟的中文分词系统，输入的训练文件比较特别。HMM技术。
• SIM800C_MQTT.rar
使用SIM800C模块，使用MQTT协议，连接中国移动onenet平台，能实现数据的订阅、发布、存储等