链接:https://pan.baidu.com/s/1uBjLC61xm4tQ9raDa_M1wQ  提取码:f7l1

推荐:https://blog.csdn.net/longgb123/article/details/78154295

import sys
sys.path.append('保存文件的路径') #设置路径
# 下面三个文件在上面

from prob_emit import P as p_emit
from prob_start import P as p_start
from prob_trans import P as p_trans obs = '今天我来到北京清华大学' #观察值
states = 'BMES' V = [{}]
path = {} prev_states = {
'B': 'ES', # t时刻:t-1时刻
'M': 'BM',
'E': 'BM',
'S': 'SE'
} # 初始化 第一个字符作为 'BMES' 的概率
for y in states:
V[0][y] = p_start[y] + p_emit[y][obs[0]]
path[y] = y #概率: 输出概率(独立性概率:第k个字符状态为y的概率) + 转换概率(y0 --> y ) + 上一个字符状态为y0的概率(当前状态与上一个字符的状态有关) for k in range(1, len(obs)):
t0 = {} # 储存概率
path0 = {} # 储存路径 for y in states:
em_p = p_emit[y][obs[k]] # 输出概率 表示 第 k 个字符状态为 y 时 的输出概率 (prob, s0) = max((em_p+p_trans[y0][y]+V[-1][y0], y0) for y0 in prev_states[y]) # 动态规划
#上面的prob s0 就是在下面的每个循环中取tmp_prob tmp_s0 中取得最大值
# for y0 in prev_states[y]: # prev_state[y] 表示 t时刻 状态为 y 时的 t-1时刻可能出现的状态
# tmp_prob = em_p + p_trans[y0][y] + V[-1][y0]
# tmp_s0 = y0 t0[y] = prob
path0[y] = path[s0] + y path = path0
V.append(t0)
path
(prob, s0) = max((V[-1][y], y) for y in 'ES') s2 = []
for i, char in enumerate(obs):
sign = path[s0][i]
if(sign == 'B'):
begin = i
elif sign == 'E':
s2.append(obs[begin: i+1])
elif sign == 'S':
s2.append(obs[i])
else :
pass
s2

HMM实现中文分词的更多相关文章

  1. 自制基于HMM的中文分词器

    不像英文那样单词之间有空格作为天然的分界线, 中文词语之间没有明显界限.必须采用一些方法将中文语句划分为单词序列才能进一步处理, 这一划分步骤即是所谓的中文分词. 主流中文分词方法包括基于规则的分词, ...

  2. 转:从头开始编写基于隐含马尔可夫模型HMM的中文分词器

    http://blog.csdn.net/guixunlong/article/details/8925990 从头开始编写基于隐含马尔可夫模型HMM的中文分词器之一 - 资源篇 首先感谢52nlp的 ...

  3. 【中文分词】隐马尔可夫模型HMM

    Nianwen Xue在<Chinese Word Segmentation as Character Tagging>中将中文分词视作为序列标注问题(sequence labeling ...

  4. 自制基于HMM的python中文分词器

    不像英文那样单词之间有空格作为天然的分界线, 中文词语之间没有明显界限.必须采用一些方法将中文语句划分为单词序列才能进一步处理, 这一划分步骤即是所谓的中文分词. 主流中文分词方法包括基于规则的分词, ...

  5. HMM(隐马尔科夫)用于中文分词

    隐马尔可夫模型(Hidden Markov Model,HMM)是用来描述一个含有隐含未知参数的马尔可夫过程. 本文阅读了2篇blog,理解其中的意思,附上自己的代码,共同学习. 一.理解隐马尔科夫 ...

  6. 【中文分词】二阶隐马尔可夫模型2-HMM

    在前一篇中介绍了用HMM做中文分词,对于未登录词(out-of-vocabulary, OOV)有良好的识别效果,但是缺点也十分明显--对于词典中的(in-vocabulary, IV)词却未能很好地 ...

  7. ANSJ中文分词使用方法

    一.前言 之前做solr索引的时候就使用了ANSJ进行中文分词,用着挺好,然而当时没有写博客记录的习惯.最近又尝试了好几种JAVA下的中文分词库,个人感觉还是ANSJ好用,在这里简单总结之. 二.什么 ...

  8. R语言︱文本挖掘之中文分词包——Rwordseg包(原理、功能、详解)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:与前面的RsowballC分词不同的 ...

  9. Python中文分词 jieba

    三种分词模式与一个参数 以下代码主要来自于jieba的github,你可以在github下载该源码 import jieba seg_list = jieba.cut("我来到北京清华大学& ...

随机推荐

  1. 6.5 scp:远程文件复制

    scp命令 用于在不同的主机之间复制文件,它采用SSH协议来保证复制的安全性.scp命令每次都是全量完整复制,因此效率不高,适合第一次复制时使用,增量复制建议使用rsync命令替代.     scp ...

  2. 9.13-15 runlevel & init & service

    runlevel:输出当前运行级别 runlevel命令用于输出当前Linux系统的运行级别. -quiet 不输出结果,用于通过返回值判断的场合 [root@cs6 ~]# runlevel N 3 ...

  3. docker存储驱动

    http://www.sohu.com/a/101016494_116235 https://success.docker.com/article/compatibility-matrix Red H ...

  4. svg 飞线,源码

    <html> <head> <meta charset="utf-8" /> <meta name="viewport" ...

  5. SystemVerilog 激励发生器

    simulator(激励发生器) 主要来的职责是模拟与DUT相邻设计的接口协议,只需要关注如何模拟接口信号,时期能够以真实的接口协议来发送激励给DUT. simolator不应该违反协议,但是不约束于 ...

  6. python字典转bytes类型字典

    python字典转bytes类型字典import base64 import json 1. a={"Vod":{"userData":"{}&quo ...

  7. rman备份出现ORA-19625

    [oracle@hear adump]$ rman target / Recovery Manager: Release 11.2.0.4.0 - Production on Mon Jun 17 0 ...

  8. 201871030129-魏琦 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客链接 班级博客 这个作业要求链接 作业链接 我的课程学习目标 (1)掌握Github协作开发程序的操作方法:(2)理解并掌握代码风格规范.代码设计规范.代码复审.结对编程概念: ...

  9. 微信架构 & 支付架构(上)

    微信架构 & 支付架构(上) 一. 微信和支付宝对比 这两者现在已经占领了移动支付的90%市场,支付形式也都大抵相同,只是在实现细节上略微不同.这里之所以要专门对比,是因为有些接口的不同在后边 ...

  10. 编写HSA内核

    编写HSA内核 介绍 HSA提供类似于OpenCL的执行模型.指令由一组硬件线程并行执行.在某种程度上,这类似于 单指令多数据(SIMD)模型,但具有这样的便利:细粒度调度对于程序员而言是隐藏的,而不 ...