Pytorch: 命名實體識別: BertForTokenClassification/pytorch-crf


文章目錄
基本介紹
BertForTokenClassification
pytorch-crf
實驗項目
參考
基本介紹
命名實體識別:命名實體識別任務是NLP中的一個基礎任務。主要是從一句話中識別出命名實體。比如
姚明在NBA打球

從這句話中應該可以識別出姚明(人), NBA(組織)這樣兩個實體。
常見的方法是對字或者詞打上標簽。B-type, I-type, O, 其中B-type表示組成該類型實體的第一個字或詞。I-type表示組成該類型實體的中間或最后字或詞,O表示該字或詞不組成命名實體,當然有的地方也采用B-type, I-type, E-type,O形式。
比如上一句話就可以有如下標簽

姚/B-PER 明/I_PER 在/O NBA/B_ORG 打/O 球/O

這樣根據標簽我們就可以提取出命名實體了

BertForTokenClassification
Bert作為進來比較火的模型,自然官方給出了進行命名實體識別的方法。就是BertForTokenClassfication類。使用如下:

引入模型:

from pytorch_pretrained_bert import BertForTokenClassification
1
創建模型

model = BertForTokenClassification.from_pretrained(bert_model_dir, num_labels=self.opt.tag_nums)
1
參數:
bert_model_dir: bert預訓練模型參數
num_labels: 詞標簽類的個數。即(2 or 3)*type+1
模型使用

out = model(batch_data, token_type_ids=None, attention_mask=batch_masks, labels=labels)
1
參數解釋:

輸入:
input_ids:訓練集,torch.LongTensor類型,shape是[batch_size, sequence_length]
token_type_ids:可選項,當訓練集是兩句話時才有的。
attention_mask:可選項,當使用mask才有,可參考原論文。
labels:數據標簽,torch.LongTensor類型,shape是[batch_size]
輸出:
如果labels不是None(訓練時):輸出的是分類的交叉熵
如果labels是None(評價時):輸出的是shape為[batch_size, num_labels]估計值
From:https://zhuanlan.zhihu.com/p/56155191
這樣通過BertForTokenClassificaiton類,我們就可以很容易實現命名實體識別了。

pytorch-crf
條件隨機場(CRF)命名實體識別的傳統方法。自深度學習火后,BiLstm+CRF成為命名實體識別的標准方法。具體原理可以參看這篇博客.
由於pytorch官方沒有實現條件隨機場。但是有人自己實現了pytorch-crf, 是一個不錯的開源包。

pytorch-crf基本操作:https://pytorch-crf.readthedocs.io/en/stable/
pytorch-crf接入BiLstm:
流程:
BiLstm輸出:
(BatchSize, Sequence Length, 2*hidden_size)
經過一個linear層:
(BatchSize, Sequence Length, tag_nums)
可以考慮對tag_nums這個維度softmax一下.
最后輸入到CRF中.
輸出:
CRF的前向傳播最后輸出的是真實標簽序列的分數。形式是log(realall) log(\frac{real}{all})log(
all
real

), 因此是一個負值。作為損失函數需要加一個負號
預測時調用decode就可以輸出(BatchSize, Sequence)的序列標簽。
具體細節可以參見這個issue
實驗項目
見個人github. 待補充

參考
最通俗易懂的BiLSTM-CRF模型中的CRF層介紹
kmkurn/pytorch-crf
一起讀Bert文本分類代碼
---------------------
作者:無聊的人生事無聊
來源:CSDN
原文:https://blog.csdn.net/wangpeiyi9979/article/details/89599009
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

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



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