本項目模型BiLSTM+CRF參考論文:http://www.aclweb.org/anthology/N16-1030 ,IDCNN+CRF參考論文:https://arxiv.org/abs/1702.02098
安裝好bazel代碼構建工具,安裝好tensorflow(目前本項目需要tf 1.0.0alpha版本以上)
切換到本項目代碼目錄,運行./configure
編譯後台服務
bazel build //kcws/cc:seg_backend_api
關注待字閨中公眾號回复kcws 獲取語料下載地址:

解壓語料到一個目錄
切換到代碼目錄,運行:
python kcws/train/process_anno_file.py <語料目錄> pre_chars_for_w2v.txt
bazel build third_party/word2vec:word2vec
先得到初步詞表
./bazel-bin/third_party/word2vec/word2vec -train pre_chars_for_w2v.txt -save-vocab pre_vocab.txt -min-count 3
處理低頻詞 python kcws/train/replace_unk.py pre_vocab.txt pre_chars_for_w2v.txt chars_for_w2v.txt
訓練word2vec
./bazel-bin/third_party/word2vec/word2vec -train chars_for_w2v.txt -output vec.txt -size 50 -sample 1e-4 -negative 5 -hs 1 -binary 0 -iter 5
構建訓練語料工具
bazel build kcws/train:generate_training
生成語料
./bazel-bin/kcws/train/generate_training vec.txt <語料目錄> all.txt
得到train.txt , test.txt文件
python kcws/train/filter_sentence.py all.txt
python kcws/train/train_cws.py --word2vec_path vec.txt --train_data_path <絕對路徑到train.txt> --test_data_path test.txt --max_sentence_len 80 --learning_rate 0.001 (默認使用IDCNN模型,可設置參數”--use_idcnn False“來切換BiLSTM模型)
bazel build kcws/cc:dump_vocab
./bazel-bin/kcws/cc/dump_vocab vec.txt kcws/models/basic_vocab.txt
python tools/freeze_graph.py --input_graph logs/graph.pbtxt --input_checkpoint logs/model.ckpt --output_node_names "transitions,Reshape_7" --output_graph kcws/models/seg_model.pbtxt
詞性標註模型下載(臨時方案,後續文檔給出詞性標註模型訓練,導出等)
從https://pan.baidu.com/s/1bYmABk 下載pos_model.pbtxt到kcws/models/目錄下
運行web service
./bazel-bin/kcws/cc/seg_backend_api --model_path=kcws/models/seg_model.pbtxt(絕對路徑到seg_model.pbtxt>) --vocab_path=kcws/models/basic_vocab.txt --max_sentence_len=80
https://github.com/koth/kcws/blob/master/pos_train.md
目前支持自定義詞典是在解碼階段,參考具體使用方式請參考kcws/cc/test_seg.cc 字典為文本格式,每一行格式如下:
<自定義詞條>t<權重>
比如:
藍瘦香菇 4
權重為一個正整數,一般4以上,越大越重要
http://45.32.100.248:9090/
附: 使用相同模型訓練的公司名識別demo:
http://45.32.100.248:18080