1. 程式人生 > >用深度學習做命名實體識別(一):文字資料標註

用深度學習做命名實體識別(一):文字資料標註

“ 本文是用深度學習做命名實體識別系列的第一篇,通過本文,你將瞭解如何用brat做文字資料標註。”

一、 什麼是命名實體識別?

 從一句話中識別出人名,地名,組織名,日期時間,這就是命名實體識別的一個例子,而人名,地名等這些被識別的目標就是命名實體。當然命名實體還可以是很多其它有意義的目標,比如產品,公司,專有名詞等等。

 二、 為什麼要做文字資料標註?

瞭解過機器學習的朋友都知道,無論是傳統的機器學習還是深度學習,大多數情況都是在做監督學習,也就是需要大量標註好的資料做為訓練樣本,那麼這裡,如果希望機器能識別出人名,地名,就必須事先給機器看看在一句話中,什麼是人名,什麼是地名,當然只看一句話是遠遠不夠的,一般來說,至少也要上千句話才可以。標註出這些句子中的命名實體的過程,就是我們本次要介紹的——文字資料標註。

 三、怎麼做文字資料標註?

 資料標註,最粗暴的方式,就是直接用txt存放各個句子,然後用一些特殊符號將目標詞括起來,寫上所屬的實體類別,但是這樣做有以下弊端:

  1. txt上標註還是挺不方便的

  2. 白底黑字,很快就會看花眼了

  3. 標註的格式難以統一,因為很容易出錯,比如少個符號

  4. 無法多人協同標註

因此,已經有很多大牛們研發了許多協助標註文字的工具,本文將基於其中一種個人覺得比較好用的工具——brat,來介紹文字標註過程。如果你還沒有了解過brat,可以參考上一篇文章《文字標註工具brat簡介》。

 四、文字資料標註的具體過程

 當成功安裝和配置好了brat,我們就可以進行文字標註了。首先在brat專案的data目錄下新建一個project目錄,然後在該目錄下放入如下檔案:

 其中,annotation.conf是配置檔案,內容如下:

[entities]
# Definition of entities.
# Format is a simple list with one type per line.
時間
地點
人名
組織名
公司名
產品名

visual.conf也是配置檔案,可以配置不同的類別用不同的顏色顯示,找到如下段落,更新內容:

[drawing]
時間 bgColor:yellow
地點 bgColor:blue, fgColor:white
人名 bgColor:deepskyblue
組織名 bgColor:green, fgColor:white
公司名 bgColor:purple, fgColor:white
產品名 bgColor:pink

mayun.txt是我們要標註的原檔案,裡面的內容片段如下(這裡用句號分句處理,是因為不希望每個訓練樣本太長,建議控制在500字元內):

1964年9月10日,馬雲出生在杭州。
幼年的馬雲在人們的眼中是典型的壞孩子:叛逆、倔強、愛打架、逞強、頑皮淘氣。
馬雲的父親雖然是典型的江南人,但脾氣卻很火暴,馬雲從小在父親拳腳下長大。
馬雲是看金庸的武俠小說長大的,行俠仗義、打抱不平的“俠義”情結在少年馬雲的內心深處早已生根、萌芽。

mayun.ann是一個空檔案,使用brat對mayun.txt的標註結果,會記錄在ann檔案中。

此時我們通過瀏覽器訪問brat專案介面,開啟project目錄下的mayun.txt檔案(記得要先登入),看到的介面如下:

 然後我們選擇目標實體,比如“馬雲”,進行實體類別標註,效果如下:

 此時,你可以邀請其他人用他們的帳號登入brat,也開啟這個txt,和你一起標註。標註之後,再看看ann檔案內容,如下:

  T1,T2標識這行是對實體進行的標註;

  • 人名,公司名所在列是實體類別;

  • 第三、四列是標註詞彙在整個txt中的起始和(結束索引+1)

  • 最後一列是就是標註的詞彙列

標註完成後,我們就有了mayun.txt和mayun.ann兩個對應的檔案。關於如何使用這兩個檔案,將在下一篇《用深度學習做命名實體識別(二):模型訓練》中介紹。

 ok,本篇就這麼多內容啦~,感謝閱讀O(∩_∩)O