命名實體識別實踐(LSTM+CRF)

任務場景

實體識別是一個經典的序列標註任務,如果有一批已經標註的樣本,就可以考慮使用模型來進行訓練了,傳統的方式是用CRF++進行訓練隨着深度學習技術的興起,任務也基本圍繞着基礎的LSTM+CRF的基礎上或者進行微調。本文中實現了其基礎版本。


    def buildd_model(self):
        """NER 模型建立"""
        inpute_ = layers.Input((self.max_sentence_len,))
        embed  =  layers.Embedding(input_dim=self.word_num, output_dim=200,mask_zero=True)(inpute_)

        lstm_encode = layers.Bidirectional(layers.LSTM(units=100, return_sequences=True,
                                                       dropout=0.3, recurrent_dropout=0.05))(embed)
        dense1 = layers.TimeDistributed(layers.Dense(50,activation="tanh"))(lstm_encode)
        dense1 = layers.Dropout(0.05)(dense1)
        # dense1 = layers.Dense(units=64,activation="tanh")(dense1)
        crf = CRF(self.class_num, sparse_target=False)
       
        crf_res = crf(dense1)
        model = Model(inpute_, crf_res)
        adam = Adam(lr=0.001)
        model.compile(optimizer=adam, loss=crf.loss_function, metrics=[crf.accuracy])
        print(model.summary())
        return model

效果:
在這裏插入圖片描述

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