基於 bi-LSTM和CRF的中文命名實體識別



這里邊主要識別的實體如圖所示,其實也就主要識別人名PER,機構ORG和地點LOC: B表示開始的字節,I表示中間的字節,E表示最后的字節,S表示該實體是單字節
例子: 
 
 
 
實現架構:
1. 讀取數據集,數據集共三個文件,訓練集,交叉測試集和測試集,文件中每一行包含兩個元素,字和標識。每一句話間由一個空格隔開
 
              
2. 處理數據集
    1) 更新數據集中的標簽,如: 單獨的B-LOC→S-LOC,B-LOC,I-LOC→B-LOC,E-LOC,B-LOC,I-LOC,I-LOC→B-LOC, I-LOC, E-LOC
    2) 給每個char和tag分配一個id,得到一個包含所有字的字典dict,以及char_to_id, id_to_char, tag_to_id, id_to_tag, 將其存在map.pkl中
3. 准備訓練集
        將訓練集中的每句話變成4個list,第一個list是字,如[今,天,去,北,京],第二個list是char_to_id [3,5,6,8,9],第三個list是通過jieba分詞得到的分詞信息特征,如[1,3,0,1,3] (1,詞的開始,2,詞的中間,3,詞的結尾,0,單個詞),第四個list是target,如[0,0,0,2,3](非0的元素對應着tag_to_id中的數值)
4. BatchManager 將訓練集划分成若干個batch,每個batch有20個句子,划分時,是現按句子長度從大到小排列
5. 配置model的參數
6. 構建模型
    1)input: 輸入兩個特征,char_to_id的list以及通過jieba得到的分詞特征list
    2)embedding: 預先訓練好了100維詞向量模型,通過查詢將得到每個字的100維向量,加上分詞特征向量,輸出到drouput(0.5)
    3)bi-lstm
    4)project_layer:兩層的Wx+b  邏輯回歸
    5)loss_layer:內嵌了CRF
 
 
 

 





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM