HanLP — HMM隐马尔可夫模型 -- 语料库

简介: HanLP — HMM隐马尔可夫模型 -- 语料库

隐马尔可可夫模型(Hidden Markov Model,HMM)是统计模型,用于描述一个含有隐含未知参数的马尔可夫过程。

HMM由初始概率分布、状态转移概率分布和观测概率分布确定。

BMES => B:词语开始、M:词语中间、E:词语结束、S:单独成词

并非所有中文任务都需要分词

语料库

  • 每行是一篇“文章”
  • 每篇文章用空格分开
  • 语料库的准确性,严重影响分词结果
  • 理论上,语料库越大越好

每个字都有一个标识(隐藏状态),可以根据语料库得到所有标识

中文分词就是为了得到状态

B M M E S B E S

根据已知状态进行分词,即在"E"和"S"后面输出空格即可

将已分好的词 得到 每个字的状态

https://www.bilibili.com/video/BV1aP4y147gA?p=3

data/train_data.txt

人为将可分词的按空格间隔开

“ 人们 常 说 生活 是 一 部 教科书 , 而 血 与 火 的 战争 更 是 不可多得 的 教科书 , 她 确实 是 名副其实 的 ‘ 我 的 大学 ’ 。
“ 心 静 渐 知 春 似 海 , 花 深 每 觉 影 生 香 。
“ 吃 屎 的 东西 , 连 一 捆 麦 也 铡 不 动 呀 ?
他 “ 严格要求 自己 , 从 一个 科举 出身 的 进士 成为 一个 伟大 的 民主主义 者 , 进而 成为 一 位 杰出 的 党外 共产主义 战士 , 献身 于 崇高 的 共产主义 事业 。
“ 征 而 未 用 的 耕地 和 有 收益 的 土地 , 不准 荒芜 。
from tqdm import tqdm 
 
def make_label(text_str):  # 从单词到label的转换, 如: 今天 ----> BE  麻辣肥牛: ---> BMME  的 ---> S
    text_len = len(text_str)
    if text_len == 1:
        return "S"
    return "B" + "M" * (text_len - 2) + "E"  # 除了开头是 B, 结尾是 E,中间都是M
def text_to_state(train_file, state_file):
    """ 将原始的语料库转换为 对应的状态文件 """
    all_data = open(train_file, "r", encoding="utf-8").read().split("\n")  # 打开文件并按行切分到  all_data 中 , all_data  是一个list
    with open(state_file, "w", encoding="utf-8") as f:  # 代开写入的文件
        for d_index, data in tqdm(enumerate(all_data)):  # 逐行 遍历 , tqdm 是进度条提示 , data 是一篇文章, 有可能为空
            if data:  # 如果 data 不为空
                state_ = ""
                for w in data.split(" "):  # 当前 文章按照空格切分, w是文章中的一个词语
                    if w:  # 如果 w 不为空
                        state_ = state_ + make_label(w) + " "  # 制作单个词语的label
                if d_index != len(all_data) - 1:  # 最后一行不要加 "\n" 其他行都加 "\n"
                    state_ = state_.strip() + "\n"  # 每一行都去掉 最后的空格
                f.write(state_)
if __name__ == "__main__":
    text_to_state("data/train_data.txt", "data/train_state.txt")

https://gitee.com/VipSoft/VipPython/tree/master/hmm_viterbi

目录
相关文章
|
28天前
|
算法
HanLP — HMM隐马尔可夫模型 -- 训练
HanLP — HMM隐马尔可夫模型 -- 训练
22 0
HanLP — HMM隐马尔可夫模型 -- 训练
|
28天前
HanLP — HMM隐马尔可夫模型 -- 训练--归一化,计算概率
HanLP — HMM隐马尔可夫模型 -- 训练--归一化,计算概率
38 0
|
2月前
|
自然语言处理 算法 语音技术
隐马尔可夫模型(HMM)
隐马尔可夫模型(HMM)
|
4月前
|
自然语言处理
N-Gram模型是什么?
N-Gram模型是什么?
|
4月前
|
自然语言处理 算法 数据挖掘
R语言中的隐马尔可夫HMM模型实例
R语言中的隐马尔可夫HMM模型实例
|
机器学习/深度学习 自然语言处理 算法
文本分类算法TextCNN
文本分类算法TextCNN
|
自然语言处理 算法 索引
【自然语言处理】hmm隐马尔可夫模型进行中文分词 代码
【自然语言处理】hmm隐马尔可夫模型进行中文分词 代码
204 0
|
机器学习/深度学习 算法 语音技术
隐马尔科夫模型HMM
本文介绍常见的机器学习模型隐马尔科夫模型HMM。 HMM也是generative model。 我是因为看到一篇论文需要用HMM来优化,所以速成。日后如有新的理解将会持续更新,可以收藏关注本文以待。
隐马尔科夫模型HMM
|
机器学习/深度学习 算法
DL之CNN:利用CNN算法实现对句子分类+进行情感分析(预测句子情感)
DL之CNN:利用CNN算法实现对句子分类+进行情感分析(预测句子情感)
DL之CNN:利用CNN算法实现对句子分类+进行情感分析(预测句子情感)
|
机器学习/深度学习 自然语言处理 数据库
基于GRU和am-softmax的句子相似度模型 | 附代码实现
在我搜索到的资料中,深度学习做句子相似度模型,就只有两种做法:一是输入一对句子,然后输出一个 0/1 标签代表相似程度,也就是视为一个二分类问题。
3296 0