一、語料清洗
1,這篇文章以人民日?qǐng)?bào)1998年01月語料庫(kù)為例子,獲取原始語料庫(kù) 199801.txt :
鏈接:199801.txt
提取碼:k1xi
原始語料庫(kù)內(nèi)容截圖如下:

2,原始語料需要做如下處理
(1)將語料全角字符(SBC)統(tǒng)一轉(zhuǎn)為半角(DBC)
(2)三空格變雙空格
標(biāo)注和標(biāo)注之間的間隔規(guī)定為雙空格,但是會(huì)存在一些三空格
(3)單空格變?yōu)殡p空格
標(biāo)注和標(biāo)注之間的間隔規(guī)定為雙空格,但是會(huì)存在一些單空格
(4)中括號(hào)內(nèi)容合并
例如,'學(xué)生/n ,/w 奔波/v 于/p 兩/m 個(gè)/q 課堂/n 。/w [上海市/ns 房屋/n 土地/n 管理局/n]nt 為/p'
(5)合并人名
例如,"金/nr 正日/nr" 合并為“金正日/nr”
3,步驟2中的數(shù)據(jù)清洗整理程序?yàn)閐ata_clean.py(python3.5.2)按如方式獲取
提取碼:hqlk
input:199801.txt?
output:cleaned_data.txt
cleaned_data.txt 部分截圖如下:

二、構(gòu)建訓(xùn)練和測(cè)試數(shù)據(jù)
1,將cleaned_data.txt按照8:2隨機(jī)分割,作為訓(xùn)練和測(cè)試原始語料,分割程序?yàn)閟egment.py,按如下信息獲取
鏈接:segment.py
提取碼:yf18
input:cleaned_data.txt
output:train_data.txt 和?test_data.txt
2,構(gòu)建訓(xùn)練數(shù)據(jù)集,構(gòu)建程序train_data.py,按如下信息獲取
提取碼:8kym
input:train_data.txt
output:labeled_train_data.txt
3,構(gòu)建訓(xùn)練數(shù)據(jù)集,構(gòu)建程序也是train_data.py
input:test_data.txt
output:labeled_test_data.txt
構(gòu)建好的訓(xùn)練和測(cè)試語料,也可以直接按照如下連接下載:
鏈接:labeled_train_data.txt? ? ? ? ? ?提取碼:bxsw
鏈接:labeled_test_data.txt? ? ? ? ? ? 提取碼:njhh
部分labeled_test_data.txt截圖如下:

4,標(biāo)注體系說明
采用“BMEWO”標(biāo)簽體系生成訓(xùn)練數(shù)據(jù),具體解釋如下
'B':Begin
'M':Middle
'E':End
'W':代表單個(gè)實(shí)體
'O':Other
識(shí)別實(shí)體類型和語料詞性對(duì)應(yīng)關(guān)系:
時(shí)間:TIME, /t
人物:PERSON, /nr
地點(diǎn):LOCATION, /ns
團(tuán)體組織機(jī)關(guān):ORGANIZATION, /nt
三、CRF模型訓(xùn)練
1,回到linux平臺(tái),新建文件夾,命名為NER,將訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)上傳到NER文件夾下,如下所示

訓(xùn)練指令:../crf_learn –[可選參數(shù)] template train.data model [可選參數(shù)]
這里模板文件template_file直接借用CRF++自帶例子中的./CRF++-0.58/example/seg/template
例如 ../CRF++-0.58/crf_learn -f 2 -c 3.0 /root/CRF++/CRF++-0.58/example/seg/template labeled_train_data.txt model -t

"../CRF++-0.58/crf_learn" 為../CRF++-0.58/crf_learn路徑
"?-f 2 -c 3.0" 為模型計(jì)算參數(shù)
"/root/CRF++/CRF++-0.58/example/seg/template" 為template路徑
"labeled_train_data.txt" 為訓(xùn)練樣本數(shù)據(jù)
"-t"為輸出參數(shù)設(shè)置
2,訓(xùn)練過程

3,訓(xùn)練結(jié)束后模型文件

4,測(cè)試過程
測(cè)試指令:../crf_test -[可選參數(shù)] -m model test.data?
例如:?../CRF++-0.58/crf_test -m model labeled_test_data.txt >> testdata.txt

testdata.txt部分截圖如下:

5,使用conlleval.pl程序測(cè)評(píng)
測(cè)評(píng)指令:perl conlleval.pl <testdata.txt
需要安裝perl環(huán)境并下載conlleval.pl,由于網(wǎng)上諸多下載鏈接均已失效,這里放棄使用如上評(píng)測(cè)指令,在下篇文章中講解如何寫測(cè)評(píng)的py文件。