ミッションシナリオ
エンティティ認識は、古典的なシーケンスラベル付けタスクです。ラベル付けされたサンプルのバッチがある場合は、トレーニングにモデルを使用することを検討できます。従来の方法は、トレーニングに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
効果: