如何使用CRF++工具?——以NER為例

一、語料清洗

1,這篇文章以人民日?qǐng)?bào)1998年01月語料庫(kù)為例子,獲取原始語料庫(kù) 199801.txt :

鏈接:199801.txt

提取碼:k1xi

原始語料庫(kù)內(nèi)容截圖如下:

199801.txt?

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)按如方式獲取

鏈接:data_clean.py

提取碼:hqlk

input:199801.txt?

output:cleaned_data.txt

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,按如下信息獲取

鏈接: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截圖如下:

部分訓(xùn)練數(shù)據(jù)截圖

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文件夾下,如下所示

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)練過程

訓(xùn)練過程部分截圖

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

model和model.txt

4,測(cè)試過程

測(cè)試指令:../crf_test -[可選參數(shù)] -m model test.data?

例如:?../CRF++-0.58/crf_test -m model labeled_test_data.txt >> testdata.txt

測(cè)試數(shù)據(jù)所在目錄

testdata.txt部分截圖如下:


測(cè)試結(jié)果

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文件。

以上展示了使用 CRF++時(shí) 數(shù)據(jù)清洗——構(gòu)建訓(xùn)練語料——模板文件——訓(xùn)練——測(cè)試——精度測(cè)評(píng)全過程。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容