日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

cap流程图_源码阅读笔记 BiLSTM+CRF做NER任务(二)

發布時間:2025/3/19 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cap流程图_源码阅读笔记 BiLSTM+CRF做NER任务(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

源碼地址:https://github.com/ZhixiuYe/NER-pytorch

本篇正式進入源碼的閱讀,按照流程順序,一一解剖。

一、流程圖

二、詳細步驟

1、數據預處理

1)將數據集從文件中加載出來,如果句子中出現了數字,會將其置零(可選),刪除

無用句。

2)轉換標注模式,將iob1(數據集原有標注模式)轉換為iob2,如果選用的是IOBES則將iob2轉換成iobes,選用的是IOB,則將iob2返回。iob1和iob2都是表示里面只有I、O、B,不同的是iob1中的B是為了隔斷同類實體不同實體名的,而iob2中的B是為了作為實體名的開頭的。iobes中包含I(實體名內部)、O(非實體)、B(實體的開頭)、E(實體的結尾)、S(單字實體名)。

下例將說明iob1、iob2、iobes的形式:

3)創建word、char、tag、cap字典(根據訓練集)。

word字典:統計單詞詞頻,篩選出詞頻大于3的單詞,按照詞頻逆序、單詞順序對單詞由0開始編號并加入字典中。除此,加入''、''這兩個單詞,分別表示pad和未知詞匯,賦予最大的兩個編號。

char字典:統計字母頻數,按照詞頻逆序、字母順序對字母由0開始編號并加入字典中,除此,加入''并賦予最大的編號。

tag字典:統計標簽頻數,按照標簽頻數逆序、標簽順序對標簽由0開始編號并加入字典中,除此,加入''和''并分別賦予-1和-2編號

cap字典:無法創建字典,映射關系為全小寫:0,全大寫:1,首字母大寫:2,其他:3。

4)根據3創建的字典和映射關系,分別對訓練集、驗證集、測試集的word、char、cap、tag等特征做數值化。得出的數據集中每一句由{'str_words': str_words,'words': words,'chars': chars,'caps': caps,'tags': tags,}字典組成,句中每個單詞對應一個這樣的字典。

2、進入訓練

從上面的數據預處理中,假如我們得到這么一個句子數據:

{'str_words': ['Amy','goes','to','Beijing','to','visit','Peking','University'],

'words': [0,1,2,3,2,4,5,6],

'chars': [[0, 1, 2], [3, 4, 5, 6], [7, 4], [8, 5, 9, 10, 9, 11, 3], [7, 4], [12, 9, 6, 9, 7], [13, 5, 14, 9, 11, 3], [15, 11, 9, 12, 5, 16, 6, 9, 7, 2]],

'caps': [2,0,0,2,0,0,2,2],

'tags': [0,1,1,2,1,1,3,3], }

注:該示例的words、chars、tags并未按照1所說的根據詞頻進行的編碼,只是按照出現的先后順序進行的編碼。

1)char Embedding

① 對'chars'根據word長度進行排序,得到排序后的列表,與原列表對比生成索引映射關系。

② 對排序后的列表進行mask處理,即對word進行尾部填充0知道達到最長word長度。本例中,即是生成:[[15, 11, 9, 12, 5, 16, 6, 9, 7, 2],[8, 5, 9, 10, 9, 11, 3, 0, 0, 0],......],為8×10的矩陣。

③將生成的char新矩陣輸入Embedding層,設置的size為25,在本例中將得到8×10×25的矩陣,并進行轉置,成為10×8×25的矩陣。

④對得到的矩陣進行pack操作(去除pad),成為39×25的PackedSequence,batchsize為(10,7,6,5,4,3,2,2)。

⑤ 將PackedSequence輸入到雙向LSTM中,然后把輸出的output的pack操作還原回去,再進行轉置操作。

⑥ 提取出output中最后一個字母的out和第一個字母的out進行拼接,并且將排序的結果還原。

注:如果在進行pack操作時,選擇batch_first=True,則不用進行轉置操作;進行長度排序是pack操作必經的過程;雙向lstm的結果的第三維長度為2*size,拼接時選擇第一個字母的后size長度(t→1)和最后一個字母的前size長度(1→t)。

2)word Embedding

輸入embedding層

3)cap Embedding

輸入embedding層

4)拼接所有的Embedding并輸入LSTM中

① 拼接char、word、cap Embedding

② 對最終的Embedding增加第二維(unsqueeze)

③ 輸入到dropout層

④ 輸入到雙向LSTM層

⑤ 減去第二維

⑥ 輸入到dropout層

⑦ 輸入到一個線性層

5)無crf的話,使用交叉熵作為loss函數。

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的cap流程图_源码阅读笔记 BiLSTM+CRF做NER任务(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。