命名實體識別實踐(bert 微調)

2021-09-11 02:33:26 字數 1369 閱讀 9182

任務場景

bert重新整理了各大記錄,在這裡就不多介紹了,是乙個非常好的預訓練模型,我們只需要根據後續任務進行微調,本文採用bert+微調的方式實現了一版ner。

def

biuildmodel

(self)

: input_ids = layers.input(shape=

(self.max_seq_len,))

input_mask = layers.input(shape=

(self.max_seq_len,))

input_type_ids = layers.input(shape=

(self.max_seq_len,))

embeding = b_embeding_layer(max_seq_len=self.max_seq_len)

([input_ids,input_mask,input_type_ids]

) lstm_encode = layers.bidirectional(layers.lstm(units=unit_len, return_sequences=

true))

(embeding)

dense1 = layers.timedistributed(layers.dense(dense_len, activation=

"tanh"))

(lstm_encode)

dense1 = layers.dropout(

0.05

)(dense1)

crf = crf(self.class_num, sparse_target=

false

) crf_res = crf(dense1)

model = model(inputs=

[input_ids, input_mask, input_type_ids]

, outputs=

[crf_res]

) adam = adam(lr=

0.001

) model.

compile

(optimizer=adam, loss=crf.loss_function, metrics=

[crf.accuracy]

)print

(model.summary())

return model

由於是個相對新一點的模型,在這裡放一下模型的結構:

結果:效果確實比原來提公升不少,哈哈。

命名實體識別實踐(albert crf)

該專案是識別query中實體的專案,由於業務特點,query中實體較密集且連續。該專案是albert在該項目的乙個測試方案,僅僅是想體驗一下albert流程,效果上還可以。使用了bert4keras包,感謝作者。但應該注意的有 1 albert的中文向量版本要看仔細,要和 需要的版本相匹配。2 在使...

ai命名實體識別模型 命名實體識別

crf中有兩類特徵函式,分別是狀態特徵和轉移特徵,狀態特徵用當前節點 某個輸出位置可能的狀態中的某個狀態稱為乙個節點 的狀態分數表示,轉移特徵用上乙個節點到當前節點的轉移分數表示。其損失函式定義如下 crf損失函式的計算,需要用到真實路徑分數 包括狀態分數和轉移分數 其他所有可能的路徑的分數 包括狀...

命名實體識別

簡單的分詞器 如二元分詞器 無法識別oov,所以需要運用一些規定的規則來輔助識別 如 在識別音譯人名時,可以設定規則 一旦發現某詞是人名,而該詞後面跟隨人名詞時,將他們合併 針對不同情況,需要設計相應的標註集 拿人名識別舉例 輸入資料集進行訓練後,會將人名拆分為碎片,模擬人名的錯誤切分.接著,檢查拆...