用CRF做命名實體識別(二)

一. 摘要

本文是對上文用CRF做命名實體識別(一)做一次升級撬槽。多添加了5個特征(分別是詞性此改,詞語邊界,人名侄柔,地名共啃,組織名指示詞),另外還修改了特征模板暂题,最終訓練了11個小時移剪,F(xiàn)1值為0.98。(這里面有錯誤薪者,計算F1值不應該計算全體的纵苛,應該只計算帶有標注實體的詞,不然量這么大言津,肯定F1值就大攻人。最終改了計算F1值的方法,F(xiàn)1值為0.8856)

二. 目錄

  • 整個流程的思路
  • 一些概念解釋
    - 實體指示詞
    - 詞語邊界
    - 為什么要用jieba再次分詞標注詞性
  • 具體流程實現(xiàn)
  • 總結(jié)與展望

三. 正文

1. 整個流程的思路:

  • 根據(jù)人民日報語料庫建立命名實體指示詞庫
  • 構(gòu)建人名悬槽,地名怀吻,組織名指示詞特征
  • 構(gòu)建詞性特征以及詞語邊界特征
  • 將這五個特征合并,形成CRF++的訓練數(shù)據(jù)格式
  • 編寫特征模板
  • 劃分數(shù)據(jù)集為訓練集和測試集
  • 用CRF++訓練模型
  • 測試模型

2. 上面出現(xiàn)的一些概念解釋

2.1 實體指示詞

在中文中初婆,有些詞的出現(xiàn)通常標志著該詞周圍很可能出現(xiàn)相應的命名實體烙博,這樣的詞,我們稱之為命名實體指示詞烟逊。命名實體指示詞是文本中非常有意義的上下文信息,可以有效的幫助識別命名實體铺根。通诚芮可以分為人名指示詞、地名指示詞和組織名指示詞位迂。
比如:溫家寶總理主持了政府工作報告访雪。這句話中“總理”這個詞很大程度上指示著人名實體溫家寶的出現(xiàn) 。

2.2 詞語邊界

一個詞有頭有尾掂林,我們給它進行位置標注臣缀。B代表詞語的頭部,M代表詞語的中間部位泻帮,E代表詞語的尾部精置,W代表一個詞。如下所示:

邁   B
向   E
充   B
滿   M
希   M
望   E
的   W
新   B
世   M
紀   E

2.3 為什么要用jieba再次分詞標注詞性

因為人民日報標注語料是人工標注的锣杂。我們構(gòu)造了詞性這個特征脂倦,測試的時候我們不可能對要測試的語料進行人工標注詞性番宁,這樣工程量太大了,所以我們直接用jieba分詞標注赖阻,這樣訓練和測試都是用的jieba標注的詞性蝶押。


3. 具體流程實現(xiàn)

3.1 根據(jù)人民日報語料庫建立命名實體指示詞庫

1)建立地名指示詞庫

(1)從人民日報標記語料庫中按順序讀取一個詞 ;
(2)如果這個詞是一個標記了的命名實體則轉(zhuǎn)(3)火欧,否則轉(zhuǎn)(1)棋电;
(3)讀取當前詞左邊的 2 個詞和右邊的 2 個詞,組成上下文詞匯集合word_text苇侵,若當前詞左邊或者右邊的詞數(shù)少于 2 個赶盔,則取盡可能多個;
(4)如果當前詞的標記為地名衅檀,則在備選地名指示詞集合 Indication_l 中查找 word_text中的詞招刨,如果找到了区端,則相應詞的頻度加 1惠况;否則究驴,將此詞加入到 Indication_l 集合 中碧囊,該詞頻度設為 1楷力;
(5)如果當前詞是語料中的最后一個詞亚隅,轉(zhuǎn)(6)亮曹,否則轉(zhuǎn)(1)氛什;
(6)統(tǒng)計備選備選地名指示詞集合 Indication_l中所有詞匯在單位語料中出現(xiàn)的頻度 f猿推;
(7)如果頻度 f 小于閾值(我設置的是20) 片习,刪除該詞;
下圖便是地名指示詞

['向/p',
 '同胞/n',
 '和/c',
 '是/v',
 '發(fā)展/vn',
 '歷史/n',
 '年/q',
 '人民/n',
 '建設/v',
 '有/v',
 '特色/n',
 '社會主義/n',
 '恢復/v',
 '對/p',
 '主權(quán)/n',
......]
2)同理建立人名指示詞庫以及組織名指示詞庫

3.2 構(gòu)建人名蹬叭,地名藕咏,組織名指示詞特征

1)構(gòu)建地名指示詞特征
  • A. 讀入數(shù)據(jù)
['邁向/v  充滿/v  希望/n  的/u  新/a  世紀/n  ——/w  一九九八年/t  新年/t  講話/n  (/w  附/v  圖片/n  1/m  張/q  )/w',
 '中共中央/nt  總書記/n  、/w  國家/n  主席/n  江澤民/nr',
 '(/w  一九九七年/t  十二月/t  三十一日/t  )/w',
 '12月/t  31日/t  ,/w  中共中央/nt  總書記/n  秽五、/w  國家/n  主席/n  江澤民/nr  發(fā)表/v  1998年/t  新年/t  講話/n  《/w  邁向/v  充滿/v  希望/n  的/u  新/a  世紀/n  》/w  孽查。/w  (/w  新華社/nt  記者/n  蘭紅光/nr  攝/Vg  )/w',
 '同胞/n  們/k  、/w  朋友/n  們/k  坦喘、/w  女士/n  們/k  盲再、/w  先生/n  們/k  :/w',......]

  • B. 提取上面列表里的地名實體
    • 空列表表示這句話里面沒有我們的地名實體
[[],
 [],
 [],
 [],
 [],
 ['香港特別行政區(qū)/ns', '澳門/ns', '臺灣/ns'],
 ['中國/ns', '中國/ns', '中國/ns', '香港/ns', '香港/ns', '中國/ns'],
 ['中國/ns', '中國/ns'],
......]
  • C. 將列表里的每個元素變成只含有中文的句子
['邁向充滿希望的新世紀——一九九八年新年講話(附圖片1張)',
 '中共中央總書記、國家主席江澤民',
 '(一九九七年十二月三十一日)',
 '12月31日,中共中央總書記瓣铣、國家主席江澤民發(fā)表1998年新年講話《邁向充滿希望的新世紀》答朋。(新華社記者蘭紅光攝)',
 '同胞們、朋友們棠笑、女士們梦碗、先生們:',......]

  • D. 對列表里的每個元素進行jieba分詞標注詞性
['邁向/v  充滿希望/nz  的/uj  新世紀/nz  —/x  —/x  一九九八年/m  新年/t  講話/n  (/x  附圖片/n  1/m  張/nr  )/x',
 '中共中央/nt  總書記/n  、/x  國家/n  主席/n  江澤民/nr',
 '(/x  一九九七年/m  十二月/m  三十一日/m  )/x',
 '12/m  月/m  31/m  日/m  ,/x  中共中央/nt  總書記/n  、/x  國家/n  主席/n  江澤民/nr  發(fā)表/v  1998/m  年/m  新年/t  講話/n  《/x  邁向/v  充滿希望/nz  的/uj  新世紀/nz  》/x  叉弦。/x  (/x  新華社/nt  記者/n  蘭紅光/nr  攝/vg  )/x',
 '同胞們/n  丐一、/x  朋友/n  們/k  、/x  女士們/n  淹冰、/x  先生/n  們/k  :/x',......]

  • E. 去掉列表里面的空格库车,讓它更緊湊
['邁向/v充滿希望/nz的/uj新世紀/nz—/x—/x一九九八年/m新年/t講話/n(/x附圖片/n1/m張/nr)/x',
 '中共中央/nt總書記/n、/x國家/n主席/n江澤民/nr',
 '(/x一九九七年/m十二月/m三十一日/m)/x',
 '12/m月/m31/m日/m,/x中共中央/nt總書記/n樱拴、/x國家/n主席/n江澤民/nr發(fā)表/v1998/m年/m新年/t講話/n《/x邁向/v充滿希望/nz的/uj新世紀/nz》/x柠衍。/x(/x新華社/nt記者/n蘭紅光/nr攝/vg)/x',
 '同胞們/n、/x朋友/n們/k晶乔、/x女士們/n珍坊、/x先生/n們/k:/x',......]

  • F. 讀取我們前面構(gòu)建的地名指示詞表
['向/p',
 '同胞/n',
 '和/c',
 '是/v',
 '發(fā)展/vn',
 '歷史/n',
 '年/q',
 '人民/n',
 '建設/v',
 '有/v',
 '特色/n',
 '社會主義/n',
 '恢復/v',
 '對/p',
 '主權(quán)/n',
......]
  • G. 取出每一句話的地名指示詞
[[[]],
 [[]],
 [[]],
 [[]],
 [[]],
 [[], [], []],
 [['是/v'], ['是/v'], ['是/v'], ['對/p'], ['對/p'], ['是/v']],
 [[], []],
 [['和/c'], ['和/c'], ['與/p'], [], [], [], ['和/c'], ['和/c'], [], ['和/c'], []],
 [['有/v', '建設/vn'], ['有/v', '建設/vn']],
 [[], ['和/c'], ['和/c']],
 [[], ['是/v'], ['是/v'], [], [], ['是/v']],......]
  • H. 美化一下
[[],
 [],
 [],
 [],
 [],
 [],
 ['是/v', '是/v', '是/v', '對/p', '對/p', '是/v'],
 [],
 ['和/c', '和/c', '與/p', '和/c', '和/c', '和/c'],
 ['有/v', '建設/vn', '有/v', '建設/vn'],
 ['和/c', '和/c'],
 ['是/v', '是/v', '是/v'],......]
  • J. 替換取出來的地名指示詞里面的標簽
[[],
 [],
 [],
 [],
 [],
 [],
 ['是/pi', '是/pi', '是/pi', '對/pi', '對/pi', '是/pi'],
 [],
 ['和/pi', '和/pi', '與/pi', '和/pi', '和/pi', '和/pi'],
 ['有/pi', '建設/pi', '有/pi', '建設/pi'],
 ['和/pi', '和/pi'],
 ['是/pi', '是/pi', '是/pi'],......]
  • K. 改變每句話里的實體指示詞的標簽
# 發(fā)現(xiàn)下面的 '與/p' 被改成了 '與/pi'
' ... 通過/p  高層/n  互訪/v  ,/x  中國/ns  與/pi  美國/ns  、/x  俄羅斯/ns  正罢、/x  法國/ns  ... '
  • L. 對上面列表里面的每句話進行切分阵漏,做成列表
[['邁向/v',
  '充滿希望/nz',
  '的/uj',
  '新世紀/nz',
  '—/x',
  '—/x',
  '一九九八年/m',
  '新年/t',
  '講話/n',
  '(/x',
  '附圖片/n',
  '1/m',
  '張/nr',
  ')/x'],
 ['中共中央/nt', '總書記/n', '、/x', '國家/n', '主席/n', '江澤民/nr'],......]
  • M. 寫入外部文件
    • 寫成下面的形式翻具,是地名指示詞就標注為Y履怯,不是就標注為N
未   N
來   N
發(fā)   N
展   N
的   N
目   N
標   N
和   Y
指   N
導   N
方   N
針   N
。   N
中   N
國   N
與   Y
周   N
邊   N
國   N
家   N
和   Y

到這里我們就構(gòu)建好了地名指示詞特征了

2)同理構(gòu)建人名裆泳,組織名指示詞特征

3.3 構(gòu)建詞性特征以及詞語邊界特征

1)構(gòu)建詞性特征
邁   v
向   v
充   nz
滿   nz
希   nz
望   nz
的   uj
新   nz
世   nz
紀   nz
2)構(gòu)建詞語邊界特征
邁   B
向   E
充   B
滿   M
希   M
望   E
的   W
新   B
世   M
紀   E

3.4 將這五個特征合并叹洲,形成CRF++的訓練數(shù)據(jù)格式

從左到右的特征依次為字符,詞性工禾,詞語邊界运提,地名指示詞,組織名指示詞闻葵,人名指示詞民泵,標簽。(最后一列在用CRF做命名實體識別(一)中有討論過槽畔,這里不再贅述)

年   a   B   N   N   N   O
輕   a   E   N   N   N   O
時   n   W   N   N   N   O
,   x   W   N   N   N   O
在   p   W   Y   N   N   O
重   ns  B   N   N   N   B_LOCATION
慶   ns  E   N   N   N   E_LOCATION
山   ns  B   N   N   N   O
城   ns  E   N   N   N   O
,   x   W   N   N   N   O
在   p   W   Y   N   N   O
紅   n   B   N   N   N   B_LOCATION
巖   n   E   N   N   N   M_LOCATION
嘴   n   W   N   N   N   E_LOCATION
山   n   B   N   N   N   O
頭   n   E   N   N   N   O
的   uj  W   N   N   N   O
樓   n   B   N   N   N   O
房   n   E   N   N   N   O
,   x   W   N   N   N   O
我   r   B   N   N   N   O
們   r   E   N   N   N   O
紅   nr  B   N   N   N   B_ORGANIZATION
巖   nr  E   N   N   N   M_ORGANIZATION
歌   n   B   N   N   N   M_ORGANIZATION
詠   n   E   N   N   N   M_ORGANIZATION
團   n   W   N   N   N   E_ORGANIZATION
的   uj  W   N   N   N   O
男   n   B   N   N   N   O
女   n   E   N   N   N   O
青   t   B   N   N   N   O
年   t   E   N   N   N   O

3.5 特征模板

# Unigram
U00:%x[-2,0]
U01:%x[-1,0]
U02:%x[0,0]
U03:%x[1,0]
U04:%x[2,0]
U05:%x[-2,1]
U06:%x[-1,1]
U07:%x[0,1]
U08:%x[1,1]
U09:%x[2,1]
U10:%x[0,0]/%x[0,1]
U11:%x[0,0]/%x[1,0]
U12:%x[0,0]/%x[-1,0]
U13:%x[-1,0]/%x[0,1]
U14:%x[0,0]/%x[1,1]
U15:%x[-1,0]/%x[-1,1]
U16:%x[-1,0]/%x[-2,0]
U17:%x[-2,0]/%x[-2,1]
U18:%x[1,0]/%x[2,0]
U19:%x[-1,1]/%x[1,0]
U20:%x[0,1]/%x[1,0]
U21:%x[-2,1]/%x[-1,1]
U22:%x[0,1]/%x[-2,1]
U23:%x[-1,1]/%x[0,1]
U24:%x[-1,1]/%x[1,1]
U25:%x[0,1]/%x[1,1]
U26:%x[0,1]/%x[2,1]
U27:%x[1,1]/%x[2,1]
U28:%x[-1,2]
U29:%x[-2,2]
U30:%x[-1,2]/%x[-2,2]
U31:%x[0,1]/%x[-1,2]
U32:%x[0,1]/%x[-2,2]
U33:%x[0,1]/%x[1,2]
U34:%x[0,0]/%x[-1,2]
U35:%x[0,0]/%x[-2,2]
U36:%x[0,0]/%x[1,2]
U37:%x[0,1]/%x[-1,2]/%x[-2,2]
U38:%x[-1,2]/%x[0,1]/%x[1,1]
U39:%x[-1,2]/%x[-1,1]/%x[0,1]
U40:%x[-1,2]/%x[0,1]/%x[0,0]
U41:%x[-2,2]/%x[-1,2]/%x[0,1]
U42:%x[-2,3]/%x[-1,3]/%x[1,3]%x[2,3]
U43:%x[-2,4]/%x[-1,4]/%x[1,4]%x[2,4]
U44:%x[-2,5]/%x[-1,5]/%x[1,5]%x[2,5]

# Bigram
B

3.6 劃分數(shù)據(jù)集為訓練集和測試集

  • 這里我是70%為訓練集洪灯,30%為測試集。主要是為了測F1值

3.7 訓練的方法同用CRF做命名實體識別(一)

3.8 測試模型

  • F1值的計算用了sklearn庫竟痰,最終得值是0.8856
  • 從網(wǎng)上下載了一些新聞語料庫,也是要處理成上面的那種格式(CRF++可以訓練數(shù)據(jù)的格式)掏呼,最終效果還可以坏快,主要還是得看jieba分詞標注詞性的效果

四. 總結(jié)與展望

整個流程走完了,最后得出的效果也很不錯憎夷,接下來打算把CRF的原理好好理一遍莽鸿,以及用BI-LSTM-CRF方法做命名實體識別,據(jù)說這是目前的主流處理方法。


以下是我所有文章的目錄祥得,大家如果感興趣兔沃,也可以前往查看
??戳右邊:打開它,也許會看到很多對你有幫助的文章

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末级及,一起剝皮案震驚了整個濱河市乒疏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌饮焦,老刑警劉巖怕吴,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異县踢,居然都是意外死亡转绷,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門硼啤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來议经,“玉大人,你說我怎么就攤上這事谴返∩飞觯” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵亏镰,是天一觀的道長扯旷。 經(jīng)常有香客問我,道長索抓,這世上最難降的妖魔是什么钧忽? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮逼肯,結(jié)果婚禮上耸黑,老公的妹妹穿的比我還像新娘。我一直安慰自己篮幢,他們只是感情好大刊,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著三椿,像睡著了一般缺菌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上搜锰,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天伴郁,我揣著相機與錄音,去河邊找鬼蛋叼。 笑死焊傅,一個胖子當著我的面吹牛剂陡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播狐胎,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼鸭栖,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了握巢?” 一聲冷哼從身側(cè)響起晕鹊,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎镜粤,沒想到半個月后捏题,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡肉渴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年公荧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片同规。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡循狰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出券勺,到底是詐尸還是另有隱情绪钥,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布关炼,位于F島的核電站程腹,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏儒拂。R本人自食惡果不足惜寸潦,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望社痛。 院中可真熱鬧见转,春花似錦、人聲如沸蒜哀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽撵儿。三九已至乘客,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間淀歇,已是汗流浹背寨典。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留房匆,地道東北人。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像浴鸿,于是被迫代替她去往敵國和親井氢。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容