意图识别 <= 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序列。
因