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平台,能实现数据的订阅、发布、存储等