HMM,它用来描述一个含有隐含未知参数的马尔可夫过程。其难点是从可观察的参数中确定该过程的隐含参数(后面要讨论到的Viterbi算法)。然后利用这些参数来作进一步的分析,例如模式识别。在中文信息处理方面,它主要用于词性标注,计算机并不知道一句话中某个词的具体词性,需要通过相应的模型和算法来使计算机能够识别出一句话中具体某个词的词性,那么模型就是某个HMM,算法就是在此模型上的Viterbi算法。
我的工作是以北大1998年1月份的语料为基础,求出此HMM,然后在这个HMM的基础之上设计Viterbi算法,实现将一句已经分好词的句子进行词性自动标注。下面就将我的学习成果和大家一起分享,有不对的地方请大家指正
HMM中包含的三个值分别是:初始分布、转移矩阵、发射矩阵。
初始分布就是一个隐藏状态的初始概率分布。就词性标注来说,初始分布表示的是一句话中第一个词是什么词性的概率分布。
转移矩阵:如果有N个隐藏了的状态(词性),那么转移矩阵就是一个N*N的矩阵,它的元素表示的是一种状态转化到另一种状态的概率。
发射矩阵:有时也称为混淆矩阵,它的行表示的是状态(词性),它的列所表示的是(词语),它的元素表示在给定一个词性(n)的情况下,它是(中国)的概率。
维特比算法提供了一种有效的计算方法来分析隐马尔科夫模型的观察序列,并捕获最可能的隐藏状态序列。它利用递归减少计算量,并使用整个序列的上下文来做判断,从而对包含“噪音”的序列也能进行良好的分析。
在使用时,维特比算法对于网格中的每一个单元(cell)都计算一个局部概率,同时包括一个反向指针用来指示最可能的到达该单元的路径。当完成整个计算过程后,首先在终止时刻找到最可能的状态,然后通过反向指针回溯到t=1时刻,这样回溯路径上的状态序列就是最可能的隐藏状态序列了。
下面是我实现的Viterbi算法的核心代码
typedef struct viterBiNode
{
double probity;
int backpointer;
}ViterBiNode;//算法需要用到的结构体
for(int j=0;j<num for i="0;i<N;i++)//行" if vbnode mynode else double mymax="0.0f;" int myloc="-1;" t="0;t<N;t++)//找出前一时刻局部概率和转移概率乘积最大的一个" temp="0.0f;" wordlocation="WordSearch(MyWordArray,tempstr,myWordnumber);">=num-1)//最后一个词语时可以算出结果
{
if(pMax<vbnode pmax="vbNode[i][j].probity;" ppos="i;"><div class="share_buttons" id="sharePanel"></div>
<!--192.168.1.237-->
<div class="article_next_prev">
<li class="prev_article">
<span>上一篇:</span><a href="/bingby/article/details/5833692">隐含马可夫链</a>
</li>
<li class="next_article">
<span>下一篇:</span><a href="/bingby/article/details/6403835">软件测试流程</a>
</li>
</div>
</vbnode></num>
分享到:
相关推荐
Keyword extraction based on TF-IDF of specific corpus. 基于特定语料库的TF-IDF的中文关键词提取
基于三音子模型的语料自动选择算法;基于决策树模型的。
自然语言处理课程的小作业,以新闻语料为基础,用HMM算法实现中文分词。按照每个字为B,E,S,M进行划分。以新闻语料为基础,用HMM算法实现中文分词。按照每个字为B,E,S,M进行划分。
基于大规模语料的新词发现算法,运用在大数据自然语言处理
通过语料库训练,利用python实现基于HMM模型的拼音输入法,以GUI方式使用。包含三个python文件,分别是训练语料得到参数,调用viterbi算法,GUI界面实现结果
针对目前基于白名单过滤技术在海量文本中恶意域名提取的漏报、误报等问题,提出了一种基于上下文语义的恶意域名...利用安全博客文章数据并结合基于随机森林算法的机器分类模型对论文提取的恶意语料的有效性进行了验证。
基于词典和统计的语料库词汇级对齐算法_刘小虎
在构建藏语语料库时要对语音进行音素切分, 采用了两种方法, 即基于单音素HMM模型的自动切分方法和基于三音素HMM模型的自动切分方法。通过实验分析了这两种HMM模型的自动切分结果的准确率程度, 其中单音素、三音素总...
通过以上的序列标注,那么我们可以得到这个HMM模型:状态空间为{B,E,M,S}每个字就是模型中的观测,所以观测空间为语料中的所有中文字两个空间完了,还需要三个
1、该资源内项目代码经过严格调试,下载即用确保可以运行! 2、该资源适合计算机相关专业(如计科、人工智能、大数据、数学、...基于机器学习模型SVM和深度学习模型LSTM的nlp中情感分析实例源码(从打标签语料开始).zip
基于python的旅游景点方面级别情感分析语料库建设与模型实现 python;django;mysql; 旅游景点;情感分析;语料库; 本次就是在旅游方面,通过建立一款关于旅游景点的不同级别分类的情感分析语料库系统,来让用户...
基于python+django的特色饮食情感分析语料库模型建立的实现.zip 运行步骤 需要先安装Python的相关依赖:pymysql,Django,requests,jieba,numpy使用pip install 安装 第一步:创建数据库,数据库名:text_...
宗成庆书里面准确率最高的分词算法,代码有点错误,[c t]分母上的统计量应该是统计前几个字出现的字数而不是自身的个数,修改就可以进行分词,细节看里面的标注,参照给出的语料可以使用
基于python旅游景点方面级别情感分析语料库与模型...本次的开发是利用了Python技术来搭建B/S结构的网站,通过简单的操作功能能够实现最终的语料库模型的完整搭建和使用。 关键词:旅游景点;情感分析;语料库;Python
语料库管理系统的开发与实现.doc 语料库管理系统的开发与实现.doc 语料库管理系统的开发与实现.doc
基于python特色饮食情感分析语料库模型建立
构建了一个基于海量语料的网络热点新词识别框架,整合了所提出的基于逐层剪枝算法的重复模式提取,基于统计学习模型的新词检测及基于组合特征的新词词性猜测等3个重要算法,用以提高新词识别的处理能力和识别效果。...
附件为HMM隐马尔科夫模型——学习问题,MATLAB源码程序,仅供参考。
利用HMM模型标注文本切分结果的词性消除歧义,通过Viterbi算法计算某种分词结果所对应的可能性最大的词性序列。根据定制的名称识别规则,借助机构前缀词库、后缀词库获得机构名称左右边界,通过自动机算法识别语料中...