用CRF作命名實體識別(二)
用CRF作命名實體識別(三)
用BILSTM-CRF作命名實體識別html
博客園的markdown格式可能不太方便看,也歡迎你們去個人簡書裏看markdown
本文主要講述了關於人民日報標註語料的預處理,利用CRF++工具包對模型進行訓練以及測試工具
- 明確咱們的標註任務
- 語料和工具
- 數據預處理
1.數聽說明
2.數據預處理- 模型訓練及測試
1.流程
2.標註集
3.特徵模板
4.CRF++包的使用說明- 總結與展望
這篇文章主要是介紹用CRF模型去提取人民日報語料的時間、人物、地點及組織機構名,也就是提取TIME、PERSON、LOCATION、ORGANIZATION四種實體。訓練咱們直接使用CRF++工具包。學習
人民日報1998中文標註語料庫
CRF++安裝包測試
首先打開下載的人民日報標註語料的文件,要轉爲utf-8格式。咱們須要提取的實體是時間、人名、地名、組織機構名,根據語料庫的詞性標記說明,對應的詞性分別爲/t、/nr、/ns、/nt。code
語料庫裏的姓名標註是將姓和名分開標註的,所以須要合併姓名htm
合併姓名前: '19980101-01-001-002/m中共中央/nt總書記/n、/w國家/n主席/n江/nr某某/nr' 合併姓名後: '19980101-01-001-002/m中共中央/nt總書記/n、/w國家/n主席/n江某某/nr'
須要將中括號裏的內容合併blog
合併中括號前: '[中國/ns 政府/n]nt 順利/ad 恢復/v 對/p 香港/ns 行使/v 主權/n ,/w ' 合併中括號後: '中國政府nt順利/ad恢復/v對/p香港/ns行使/v主權/n,/w'
時間合併utf-8
合併時間前: '1999年/t 12月/t 澳門/ns 的/u 迴歸/vn 必定/d 可以/v 順利/ad 實現/v 。/w' 合併時間後: '1999年12月/t澳門/ns的/u迴歸/vn必定/d可以/v順利/ad實現/v。/w'
全角字符統一轉爲半角字符
人民日報語料有些地方不是兩個空格的,例如11042行 '副教授/n 嘆/Vg 道/v ,/w 成/v', 中的「嘆/Vg」 和「道/v」之間是單空格,須要變成雙空格。不然代碼運行會報錯get
用的是BMEWO作標註體系
B表明實體的首部,M表明實體的中部,E表明實體的尾部,W表明單個的實體,O表明非實體
新 O 世 O 紀 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
# 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
敲入如下代碼,這即是開始訓練模型
crf_learn -a MIRA template train.data model
揚 B 帆 B 遠 B 東 B 作 B 與 B 中 B 國 B 合 B 做 B 的 B 先 B 行 B 希 B 臘 B 的 B 經 B 濟 B 結 B 構 B 較 B 特 B 殊 B 。 B
crf_test -m model test.data >> output.txt
揚 B O 帆 B O 遠 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 經 B O 濟 B O 結 B O 構 B O 較 B O 特 B O 殊 B O 。 B O
如今僅僅只是粗暴的把這個流程實現了一遍,測試的效果並非很好,有部分的人名沒有識別出來,還須要再添加特徵,以及更改template特徵模板,這些還在學習。CRF的原理也不是很懂,也須要去完整的學習一下。後續還會更新
歡迎掃碼關注