BiLSTM_CNN_CRF分词程序—运行讲解

在线演示:http://118.25.42.251:7777/fenci?type=mine&text=南京市长莅临指导,大家热烈欢迎。公交车中将禁止吃东西!

一、源程序下载

bilstm_cnn_crf 分词

以上文件夹中,我们只需要保留.py文件即可(为防止我的权重文件和你的语料、模型不匹配,只保留py文件即可)。

二、模块安装

python3.5

pip install keras==2.0.6

keras_contrib==2.0.8 【pip install git+https://www.github.com/keras-team/keras-contrib.git】

pip install gensim

如有其它模块缺失,可自行百度安装。

三、训练语料格式及存储

py文件的当前路径,新建corpus文件夹,该文件夹作为语料存储根路径。

corpus下,我们按文件夹存放子语料,比如我的子语料如下:

语料

其中,conll_little是conll2012语料的一个领域(我后面又上传了conll2012全部领域,建议先使用conll_little将模型调试成功,再使用conll2012_all加入corpus中训练),law_100是法律文书语料;

子语料(例如law_100)下,按文件存放相关子文件:

其中,每个文件中内容为如下格式(例如 4.txt),空格将词隔开:

语料格式

四、词向量训练

python embedding_model.py   // word2vec的相关参数可调控,我设的100维词向量。

程序运行完,将会得到两个词向量文件(.m和.txt文件),如下:

其中,.m文件是给程序(模型)使用的,.txt是为了可视化,我们自己看的。

五、测试文件



py文件的当前路径下,新建test_documents文件夹,作为测试文件的根路径。

test_documents文件夹下,我放置了一个test_1的文件夹,test_1文件夹下存放需要分词的文件(33.txt和88.txt)。

33.txt中文本格式如下,为待分词文本。



以上是测试文本的介绍,这部分自由度较高,可以等模型训练好后自行安排。

六、模型训练

我们在 bilstm_cnn_crf.py中,将 is_train设为1(训练),将 nb_epoch设为10。

(网络的一些参数可以自行定位到程序中修改,如batch_size、nb_epoch、optimizer等)

python bisltm_cnn_crf.py   //  如不出错,如下图,则训练初步成功

训练时间跟语料多少、迭代次数有关。

七、性能评测

按文件分词为上述函数,其中第一个路径是待分词文本(test_1)、第二个路径是分词后文本(test_1_mine,该文件夹会自动生成,保存分词结果)

socre.py 程序可以通过输入两个文件名,计算(P、R、F和ERR)

如下,比较预测的33.txt和标准文件中33.txt,得到该文件的一些分词性能指标。

python score.py

prf

八、使用我的权值文件

以上执行完,你将会生成你的权值文件,模型性能的好坏取决于训练语料的多少。

在my_weights文件夹下,有我预训练的权值文件(conll2012+law_100),性能不一定最优,仅供参考。

1. 删除py文件当前位置的其它权值文件,只保留py文件和文件夹(conll2012_test_gold是conll测试文件的gold文件)

将my_weights下的3个文件copy到py文件当前位置。

将bilstm_cnn_crf.py中is_train设为0

修改fenci_by_file函数的两个路径,对conll2012_test_raw进行分词

其中,test_documents/conll2012_test_raw/bc_conll_testing.utf8文件部分如下:

python bilstm_cnn_crf.py  

运行结束后,test_documents下将出现conll2012_test_mine文件夹,其下6个文件对应于test_documents/conll2012_test_raw下6个文件的分词结果。

其中,test_documents/conll2012_test_mine/bc_conll_testing.utf8部分如下:

为了验证分词模型性能,我们比较test_documents/conll2012_test_mine下的6个测试结果文件和conll2012_test_gold下的6个黄金结果文件。

修改score.py中文件的路径

分别测试conll2012的6个领域测试集的分词性能,结果如下(结果还将就,说明模型work):

bc领域:

bc

bn领域:

bn

mz领域:

mz

nw领域:

nw

tc领域:

tc

wb领域:

wb

以上6个领域的测试性能F值均能达到0.91以上,说明模型训练还算成功。

此外,为进一步提高性能,需要进行一些参数的调整(如学习率、优化器等),或增加训练次数(本文不做探究,仅提供一个Demo)。

此外,以上是将6个不同领域的训练语料一起训练、最后再测试,可能存在领域适应性问题,分开训练、分开测试或许结果更优。

九、一些问题

1. 本文训练时将文件按几个常见的标点隔开(,。;),模型的输入长度maxlen以训练集中句子的最大长度决定。测试时句子按标点(,。!;?)隔开,之所以多加了几个标点,是为了尽量将句子切分的较短,不然测试时句子长度大于maxlen,将会被截断,信息丢失。这里我感觉处理的不够好,如果遇到奇怪的文本(例如没有标点,句子又很长),信息将会只保留maxlen长度。

2. 测试时,读入一个测试文件,本程序将按行进行分词,将行line输送给word_seg_by_sentences函数,该函数再将line按标点切分,组合成句子集的向量表示,输送给模型进行预测(分词),最后再拼接还原成分词后的line。这里运行效率较低,可以将一个文档的所有文本按标点切分,组合成向量,输送给模型预测。

3. 程序写的冗余、杂乱! 讲解写了一晚上,效率太低,心累,还望点赞支持~~~。

......

以上问题由于时间问题,不做修复。如有其它问题,可告知,共同思考。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容