摘要
本文主要講述了關(guān)于人民日報(bào)標(biāo)注語料的預(yù)處理,利用CRF++工具包對模型進(jìn)行訓(xùn)練以及測試
目錄
- 明確我們的標(biāo)注任務(wù)
- 語料和工具
- 數(shù)據(jù)預(yù)處理
1.數(shù)據(jù)說明
2.數(shù)據(jù)預(yù)處理 - 模型訓(xùn)練及測試
1.流程
2.標(biāo)注集
3.特征模板
4.CRF++包的使用說明 - 總結(jié)與展望
正文
1.明確我們的標(biāo)注任務(wù)
這篇文章主要是介紹用CRF模型去提取人民日報(bào)語料的時(shí)間、人物、地點(diǎn)及組織機(jī)構(gòu)名,也就是提取TIME、PERSON、LOCATION、ORGANIZATION四種實(shí)體。訓(xùn)練我們直接使用CRF++工具包。
2.語料和工具
人民日報(bào)1998中文標(biāo)注語料庫
CRF++安裝包
3.數(shù)據(jù)預(yù)處理
3.1 數(shù)據(jù)說明
- 首先打開下載的人民日報(bào)標(biāo)注語料的文件,要轉(zhuǎn)為utf-8格式。我們需要提取的實(shí)體是時(shí)間、人名、地名、組織機(jī)構(gòu)名,根據(jù)語料庫的詞性標(biāo)記說明,對應(yīng)的詞性分別為/t、/nr、/ns、/nt。
3.2 數(shù)據(jù)預(yù)處理
- 語料庫里的姓名標(biāo)注是將姓和名分開標(biāo)注的,因此需要合并姓名
合并姓名前:
'19980101-01-001-002/m中共中央/nt總書記/n、/w國家/n主席/n江/nr澤民/nr'
合并姓名后:
'19980101-01-001-002/m中共中央/nt總書記/n、/w國家/n主席/n江澤民/nr'
- 需要將中括號(hào)里的內(nèi)容合并
合并中括號(hào)前:
'[中國/ns 政府/n]nt 順利/ad 恢復(fù)/v 對/p 香港/ns 行使/v 主權(quán)/n ,/w '
合并中括號(hào)后:
'中國政府nt順利/ad恢復(fù)/v對/p香港/ns行使/v主權(quán)/n,/w'
**4.1- 時(shí)間合并
合并時(shí)間前:
'1999年/t 12月/t 澳門/ns 的/u 回歸/vn 一定/d 能夠/v 順利/ad 實(shí)現(xiàn)/v 。/w'
合并時(shí)間后:
'1999年12月/t澳門/ns的/u回歸/vn一定/d能夠/v順利/ad實(shí)現(xiàn)/v。/w'
- 全角字符統(tǒng)一轉(zhuǎn)為半角字符
- 人民日報(bào)語料有些地方不是兩個(gè)空格的,例如11042行 '副教授/n 嘆/Vg 道/v ,/w 成/v', 中的“嘆/Vg” 和“道/v”之間是單空格,需要變成雙空格。否則代碼運(yùn)行會(huì)報(bào)錯(cuò)
4.模型訓(xùn)練及測試
流程**

4.2 標(biāo)注集
用的是BMEWO做標(biāo)注體系
B代表實(shí)體的首部,M代表實(shí)體的中部,E代表實(shí)體的尾部,W代表單個(gè)的實(shí)體,O代表非實(shí)體
新 O
世 O
紀(jì) O
— O
— O
一 B_TIME
九 M_TIME
九 M_TIME
八 M_TIME
年 E_TIME
新 B_TIME
年 E_TIME
講 O
話 O
( O
附 O
圖 O
片 O
1 O
張 O
) O
中 B_ORGANIZATION
共 M_ORGANIZATION
中 M_ORGANIZATION
央 E_ORGANIZATION
總 O
書 O
記 O
CRF++訓(xùn)練的數(shù)據(jù)格式如上圖所示
4.3 特征模板
特征模板template如下
# Unigram
U00:%x[-2,0]
U01:%x[-1,0]
U02:%x[0,0]
U03:%x[1,0]
U04:%x[2,0]
U05:%x[-2,0]/%x[-1,0]/%x[0,0]
U06:%x[-1,0]/%x[0,0]/%x[1,0]
U07:%x[0,0]/%x[1,0]/%x[2,0]
U08:%x[-1,0]/%x[0,0]
U09:%x[0,0]/%x[1,0]
# Bigram
B
4.4 CRF++包的使用說明
下載工具包之后,打開文件夾

1.在此處新建一個(gè)文件夾chinese
2.我們復(fù)制crf_learn.exe,crf_test.exe和libcrfpp.dll這三個(gè)文件到我們新建的chinese文件夾里面,然后再把之前生成的CRF++數(shù)據(jù)格式的數(shù)據(jù)文件train.data放到chinese里面,再把我們自己定義的特征模板文件放到chinese文件夾里面(一共五個(gè)文件)
3.在chinese里面打開cmd
敲入以下代碼,這便是開始訓(xùn)練模型
crf_learn -a MIRA template train.data model
template就是我們上面定義的特征模板
訓(xùn)練好之后會(huì)產(chǎn)生一個(gè)model文件
4.自己寫幾個(gè)測試文本,并將其轉(zhuǎn)為CRF++的數(shù)據(jù)格式,注意標(biāo)簽要全部一樣,如下圖所示
揚(yáng) B
帆 B
遠(yuǎn) B
東 B
做 B
與 B
中 B
國 B
合 B
作 B
的 B
先 B
行 B
希 B
臘 B
的 B
經(jīng) B
濟(jì) B
結(jié) B
構(gòu) B
較 B
特 B
殊 B
。 B
同樣把這個(gè)測試數(shù)據(jù)的文件test.data放到chinese文件夾里面
5.在chinese里面打開cmd
敲入以下代碼,這便是開始模型預(yù)測
crf_test -m model test.data >> output.txt
打開output.txt文件你就會(huì)看到預(yù)測的結(jié)果
揚(yáng) B O
帆 B O
遠(yuǎn) B O
東 B O
做 B O
與 B O
中 B B_LOCATION
國 B E_LOCATION
合 B O
作 B O
的 B O
先 B O
行 B O
希 B B_LOCATION
臘 B E_LOCATION
的 B O
經(jīng) B O
濟(jì) B O
結(jié) B O
構(gòu) B O
較 B O
特 B O
殊 B O
。 B O
5.總結(jié)與展望
現(xiàn)在僅僅只是粗暴的把這個(gè)流程實(shí)現(xiàn)了一遍,測試的效果并不是很好,有部分的人名沒有識(shí)別出來,還需要再添加特征,以及更改template特征模板,這些還在學(xué)習(xí)。CRF的原理也不是很懂,也需要去完整的學(xué)習(xí)一下。后續(xù)還會(huì)更新
以下是我所有文章的目錄,大家如果感興趣,也可以前往查看
??戳右邊:打開它,也許會(huì)看到很多對你有幫助的文章