python分词训练_CRF算法学习——自己动手实现Bi-LSTM+CRF分词(python)

意图识别 <= Bi-LSTM+CRF <= 先懂CRF <= 先懂HMM <= 先懂EM

终于到这一步了,这一次要用python写了,使用tensorflow去写。关于tensorflow的使用不是我的重点。

相关代码还是在我的GitHub上。

题外话,idea可以安装一个python插件,然后设置一下python编译器,这样就可以在项目里既能运行java又能运行python了,美滋滋。

Bi-LSTM+CRF分词实现路线图

由于不是很会写python(就会用tensorflow....),所以开始实现的代码比较ugly,然后又仿造着github比较好的项目重写了一版,所以有两个文件夹:uglybilstmcrf和bilstmcrf

思路

1.所有字构建字典,同时所有字变成字嵌入(可以利用gensim预训练字向量,也可以到时候随机生成)

2.得到字嵌入后,用字嵌入特征喂给双向LSTM

3.然后加一个CRF层,最小化CRF极大似然得到的对数极大似然值

4.训练结束以后,得到转移矩阵和Bi-LSTM的参数,直接利用viterbi解码

对着代码讲如何实现

这一部分用的bilstmcrf里面的代码,ugly的看看就好

首先定义一些占位符

word_ids是就是每个字对应的字典的id形成的list

比如“我爱北京天安门”这7个字,可能就会变成[305,249,70,291,58,131,254]这样的id序列。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值