“纸上得来终觉浅,绝知此事要躬行”,在继续翻译《HMM学习最佳范例》之前,这里先补充几个不同程序语言实现的HMM版本,主要参考了维基百科。读者有兴趣的话可以研究一下代码,这样对于HMM的学习会深刻很多!

C语言版:
1、 HTK(Hidden Markov Model Toolkit):
  HTK是英国剑桥大学开发的一套基于C语言的隐马尔科夫模型工具箱,主要应用于语音识别、语音合成的研究,也被用在其他领域,如字符识别和DNA排序等。HTK是重量级的HMM版本。
  HTK主页:http://htk.eng.cam.ac.uk/
2、 GHMM Library:
  The General Hidden Markov Model library (GHMM) is a freely available LGPL-ed C library implementing efficient data structures and algorithms for basic and extended HMMs.
  GHMM主页:http://www.ghmm.org/
3、 UMDHMM(Hidden Markov Model Toolkit):
  Hidden Markov Model (HMM) Software: Implementation of Forward-Backward, Viterbi, and Baum-Welch algorithms.
  这款属于轻量级的HMM版本。
  UMDHMM主页:http://www.kanungo.com/software/software.html

Java版:
4、 Jahmm Java Library (general-purpose Java library):
  Jahmm (pronounced "jam"), is a Java implementation of Hidden Markov Model (HMM) related algorithms. It's been designed to be easy to use (e.g. simple things are simple to program) and general purpose.
  Jahmm主页:http://code.google.com/p/jahmm/

Malab版:
5、 Hidden Markov Model (HMM) Toolbox for Matlab:
  This toolbox supports inference and learning for HMMs with discrete outputs (dhmm's), Gaussian outputs (ghmm's), or mixtures of Gaussians output (mhmm's).
  Matlab-HMM主页:http://www.cs.ubc.ca/~murphyk/Software/HMM/hmm.html

Common Lisp版:
6、CL-HMM Library (HMM Library for Common Lisp):
  Simple Hidden Markov Model library for ANSI Common Lisp. Main structures and basic algorithms implemented. Performance speed comparable to C code. It's licensed under LGPL.
  CL-HMM主页:http://www.ashrentum.net/jmcejuela/programs/cl-hmm/

Haskell版:
7、The hmm package (A Haskell library for working with Hidden Markov Models):
  A simple library for working with Hidden Markov Models. Should be usable even by people who are not familiar with HMMs. Includes implementations of Viterbi's algorithm and the forward algorithm.
  Haskell-HMM主页:http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hmm
  注:Haskell是一种纯函数式编程语言,它的命名源自美国数学家Haskell Brooks Curry,他在数学逻辑方面上的工作使得函数式编程语言有了广泛的基础。

  是否还有C++版、Perl版或者Python版呢?欢迎补充!

注:原创文章,转载请注明出处“我爱自然语言处理”:www.52nlp.cn

本文链接地址:https://www.52nlp.cn/several-different-programming-language-version-of-hmm

作者 52nlp

《几种不同程序语言的HMM版本》有38条评论
  1. 请问有人编译了Dekang Lin的C++版的吗 我弄了但是isinf这个函数不存在 不知有人知道吗

    [回复]

    52nlp 回复:

    我没有编译过,查了一下,不知你是否是在windows下进行的编译?如果是的话,可能需要在Linux下利用gcc/g++了,下面这个似乎遇到了相似的问题:
    http://yourlei.blog.sohu.com/69878075.html

    [回复]

    水林 回复:

    谢谢。刚接触到这些,通过博主的文章学到了很多,努力学习中!

    [回复]

  2. 文章如何转载啊?

    [回复]

    52nlp 回复:

    转载都不会吗?ctrl+a, ctrl+c, 不过保留出处。

    [回复]

    ciwei020621 回复:

    大哥,我要的是转载,不是复制,谢谢!

    [回复]

    52nlp 回复:

    其实我仅是举个例子,不过真不知道你要的是怎么样的转载,呵呵。

    52nlp 回复:

    很多人转载都不告我的~

  3. 您好,感谢您分享的这些资料,不知您知道哪个的适用于连续HMM 的代码比较好吗?

    [回复]

    52nlp 回复:

    不太清楚,抱歉。

    [回复]

  4. UMDHMM 调试通过,但不适用于连续HMM。关于连续HMM里用到的混合高斯模型能不能讲一下。

    [回复]

    52nlp 回复:

    这一块儿不是很熟悉,抱歉。

    [回复]

  5. 谁在使用连续HMM或者第一个HTK程序,加我QQ609518232,大家互相交流下连续HMM。

    [回复]

  6. 博主你好,我下载了matlab版的HMM toolbox,但是运行的时候报错了。不知道是什么情况?
    未定义与 'double' 类型的输入参数相对应的函数 'gmm'。
    出错 mixgauss_init (line 30)
    mix = gmm(d, M, cov_type);

    [回复]

    52nlp 回复:

    抱歉,没用用过Matlab版本

    [回复]

    匆匆 回复:

    我也是初学,因为做的科研里面要用到这个算法……不管怎么样还是非常感谢博主的贡献~

    [回复]

    匆匆 回复:

    今天又试了一下,是我没按照指导来做…………应该要先把全部四个文件夹都添加到matlab的路径中,已测试可运行。

    Cassandra 回复:

    您好,我在使用MATLAB工具包中HMMs with mixture of Gaussians outputs部分时候,总是报错,说没有定义cov_type,您遇到过这个情况么?

    马泽 回复:

    您好,我刚开始学习HMM,能不能留个联系方式交流一下。

    [回复]

  7. 您好,请问二阶以上的马尔可夫模型可以用已有的工具箱实现吗?

    [回复]

    52nlp 回复:

    抱歉,不清楚

    [回复]

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注