中文命名實體識別NER詳解

2021-09-27 07:51:28 字數 1570 閱讀 6900

中文命名實體識別是在自然語言處理領域有著具足輕重的地位,因為在很多應用中,我們一定要提取出我們話術中的實體,所以說命名實體識別是非常重要的。一般來說,現在網上有很多ner的開源庫,我們通過呼叫api就可以進行人名、地名、時間、機構名等實體的識別,效果也非常不錯。但是這僅僅是限於某一些領域的命名實體識別,所以我們如果要進行特定領域的命名實體識別,就要另行進行開發。其實我覺得,我們通過匯入詞庫的方法進行命名實體識別效果也挺不錯,做法也很簡單,缺點就是比較機械。這裡我們來一起學習用雙向lstm和crf進行醫學領域的命名實體識別。

首先是我們的訓練資料,當然監督學習需要有標註好的資料,通常來說有很多標記方法。這裡我們用的就是 iob 和 iobes 的標註方法。我們來看看這兩種標記方法到底表示什麼意思:

通過上圖我們就可以知道每一種標註是什麼意思,下面我們具體來看看乙個例子:

這就是iob的標註方法,睡眠欠佳表示症狀,睡 b-sym 表示實體的開始,眠 i-sym、欠 i-sym 和 佳 i-sym表示實體的內部,其他的 o 表示實體的外部。同樣的,這段話用iobes的標註方式可以表示成:

從上圖可知,佳這個字 e-sym 表示實體的結束,這樣的 iobes 標註方式可以更加準確地表示實體的資訊。好了,然後我們說一下 bilstm + crf 的架構,具體的lstm架構可以參考博文lstm架構詳解:

看到這個之後我們對整體的架構有了乙個大致的理解了,從輸入層到詞嵌入然後再進去雙向lstm,然後到 project 層,然後我們細看 project 層,這一層輸出如圖所示:

這裡橫座標是話術的字數,縱座標表示標籤的數量。我們要通過維特比演算法找到一條得分最高的路徑,這裡加上crf的作用其實是對 project 層輸出結果進行限制的,比如 b 後面只能接 e 或者 i,e 後面只能接 o 或者b,i 後面只能接e。這樣可以讓最終輸出的結果更加準確。

整體的架構說完之後,我們再來看看特徵工程,看看我們輸入的時候需要哪些特徵,首先是我們的字id、tagid 和長度特徵,所謂的長度特徵就是 0 表示單個字成詞, 1 表示乙個詞的開始, 2 表示乙個詞的中間,3 表示乙個詞的結尾。比如說 雙側瞳孔 這個詞,長度是4,用長度特徵表示就是 [1 2 2 3]。然後對應的詞向量是經過預訓練過的300維字向量,在look-up層,我們可以通過這個進行embedding,內容如下圖所示:

然後字向量嵌入之後就可以進入神經網路進行訓練了。訓練之後我們可以將模型存入預定好的路徑,後續我們可以進行**操作了,這篇博文主要是講解雙向lstm+crf進行ner的架構,**詳見 github,謝謝。

命名實體識別 NER

什麼是命名實體識別 命名實體識別 named entity recognition,ner 就是從一段自然語言文字中找出相關實體,並標註出其位置以及型別。是資訊提取,問答系統,句法分析,機器翻譯等應用領域的重要基礎工具,在自然語言處理技術走向實用化的過程中占有重要地位.包含行業,領域專有名詞,如人名...

命名實體識別 NER

一 任務 named entity recognition,簡稱ner。主要用於提取時間 地點 人物 組織機構名。二 應用 知識圖譜 情感分析 機器翻譯 對話問答系統都有應用。比如,需要利用命名實體識別技術自動識別使用者的查詢,然後將查詢中的實體鏈結到知識圖譜對應的結點上,其識別的準確率將會直接影響...

電子病歷命名實體識別NER

醫生給的標籤格式 將命名實體和標籤當成jieba分詞中的分詞和詞性,更新到jieba詞典中,然後對病歷文件進行分詞,按照bio標註每個字,每句話結束用空格分開。按照1 2 12的比例將病歷資料儲存到dev test train三個檔案中 1 將資料轉換成bioes標註,增加了es,因為標註資訊變多了...