用CRF做命名實(shí)體識(shí)別(一)

摘要

本文主要講述了關(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)練及測試

流程**

image.png

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++包的使用說明
下載工具包之后,打開文件夾

image.png

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ì)看到很多對你有幫助的文章

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

相關(guān)閱讀更多精彩內(nèi)容

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