概述
如何增量训练MeCab。
一、准备词典和分词后的语料。
词典的格式在第一次初始训练的时候已经讲过,是csv格式,以逗号隔开。形式如:
1123项,0,0,0,0,0,0
义演,0,0,0,0,0,0
佳酿,0,0,0,0,0,0
沿街,0,0,0,0,0,0
老理,0,0,0,0,0,0
三四十岁,0,0,0,0,0,0
解波,0,0,0,0,0,0
统建,0,0,0,0,0,0
蓓蕾,0,0,0,0,0,0
李佑生,0,0,0,0,0,0
按照相似的格式准备,我们要添加的词典,如:
期货,0,0,0,0,0,0
衍生品,0,0,0,0,0,0
上证指数,0,0,0,0,0,0
深发展,0,0,0,0,0,0
等等。语料的最终格式与词典相似,只是每行的行首是词,然后tab键或者空格隔开,后面是七个字段被逗号隔开。
例如:
大数据 n,n,BME,3,大数据,da_shu_ju,大數據
挖掘 v,vn,BE,2,挖掘,wa_jue,挖掘
工程师 n,n,BME,3,工程师,gong_cheng_shi,工程師
EOS
美团 n,nt,BE,2,美团,mei_tuan,美團
招聘 v,vn,BE,2,招聘,zhao_pin,招聘
机器 n,n,BE,2,机器,ji_qi,機器
学习 v,vn,BE,2,学习,xue_xi,學習
技术 n,n,BE,2,技术,ji_zhu,技術
专家 n,n,BE,2,专家,zhuan_jia,專家
EOS
如果该系统只有分词功能,后面的所有字段都是0。原始语料的每一段话在处理后的语料中由EOS隔开。
二、将准备好的字典,更新进原来的二进制字典中。
把上面准备的字典csv和训练语料train,拷贝进模型目录model_v0.1中。
执行下面命令/usr/local/libexec/mecab/mecab-dict-index -f utf8 -t utf8 -d model_v0.1 -o model_v0.1,该命令把model_v0.1目录下的csv格式文件读取然后转换更新二进制相关的文件。
三、利用新语料训练模型。
/usr/local/libexec/mecab/mecab-cost-train -M model_v0.1/model.def -d model_v0.1 model_v0.1/train new_model
-M指定原有模型的相关参数,new_model是新生成的模型文件名。训练时间跟语料大小相关。
四、新建一个目录用于新的模型和词典数据发布。
mkdir model_v0.2
/usr/local/libexec/mecab/mecab-dict-gen -d model_v0.1 -o model_v0.2 -m new_model
-d指定依赖的模型目录,-o新模型和数据的输出目录,-m new_model指定模型参数。在model_v0.2目录下多了几个文件:
model.def feature.def dicrc等等。
五、新建目录,用于发布的二进制词典和模型。
mkdir mecab_chinese_data_binary_v0.3
/usr/local/libexec/mecab/mecab-dict-index -f utf8 -t utf8 -d model_v0.2 -o model_binary_v0.2
mecab-dict-index命令在model_binary_v0.2下生成了5个二进制文件char.bin,matrix.bin,model.bin,sys.dic, unk.dic。但是还缺少一个dicrc才可使用,从model_v0.2下拷贝一个即可。
最后
以上就是踏实白开水为你收集整理的用MeCab打造自己的分词器(三)的全部内容,希望文章能够帮你解决用MeCab打造自己的分词器(三)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复