Bi-lstm+CRF實現NER(訓練生成詞向量)

尊敬的讀者您好:筆者很高興自己的文章能被閱讀,但原創與編輯均不易,所以轉載請必須註明本文出處並附上本文地址超鏈接以及博主博客地址:https://blog.csdn.net/vensmallzeng。若覺得本文對您有益處還請幫忙點個贊鼓勵一下,筆者在此感謝每一位讀者,如需聯繫筆者,請記下郵箱:[email protected],謝謝合作!

 

 

   

        最近又是準備組會報告、所會報告,又是安排支部發展會、轉正會,因此直到今天才有時間繼續往下談另一版用於實現NER的bi-lstm+CRF程序,該版本中的詞向量不是隨機生成的,而是訓練生成的,且該版本的代碼寫的也甚是規範,所以非常想跟大家分享一下該版本的bi-lstm+CRF。

1、如果需要本文源碼請自行轉向“https://download.csdn.net/download/vensmallzeng/11237257”。

2、該版本主要包括以下幾個部分:

data_path文件夾用於存放訓練數據、測試數據、以及word2id.pkl文件,其中word2id.pkl是對給單詞進行編號,以便查找詞向量;

data_path_save文件夾用於保存訓練好的模型以及參數,其中每一個以數字命名的文件夾代表一次訓練好的模型以及參數;

pics文件夾用於存放圖片以展示模型的效果

3、data.py文件包含一些語料數據預處理的函數如read_corpus、build_vocab、sentence2id、read_dictionary、pad_sequences以及batch_yield等,各函數具體功能見註釋。

 

4、utils.py文件包含一些功能函數如str2bool、get_entity、get_PER_entity、get_LOC_entity、get_ORG_entity以及get_logger,各函數具體功能見註釋。

5、model.py文件主要是用於搭建bi-Lstm+CRF模型。

首先對模型的基本參數進行初始化

建立張量計算圖

添加並導入數據

根據訓練好的詞向量,通過word2id查找得到對應詞向量

搭建bi-lstm+CRF模型

計算損失函數

 優化損失函數,更新模型參數

測試模型函數

調整數據格式以適應於模型輸入

評估模型的訓練效果

6、main.py主要用於調用各種函數,並實現NER功能。

對超參數進行初始化

與隨機生成詞向量的Bi-lstm+CRF不同的是,這裏的詞向量是要訓練生成(可用word2vec生成)且固定不變的。在該版本中既可選擇隨機生成詞向量也可以選擇訓練生成詞向量。

獲取訓練數據並用於訓練模型(訓練模型時,需對'--mode'超參數設置成train)

獲取測試數據並用於測試模型(訓練模型時,需對'--mode'超參數設置成test)

實際應用部分,即實現輸入一句話,自動提取出人名、地點和機構(應用模型時,需對'--mode'超參數設置成demo)

實際效果如下:

 

 

日積月累,與君共進,增增小結,未完待續。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章