利用hugging face进行albert-lstm-crf的命名实体识别

  1. 预览
    这里使用albert模型对词进行初始embedding,再输入到lstm-crf中
    利用hugging face进行albert-lstm-crf的命名实体识别_第1张图片

利用hugging face进行albert-lstm-crf的命名实体识别_第2张图片利用hugging face进行albert-lstm-crf的命名实体识别_第3张图片
2.pip isntall transformer,下载hugging face的库
#因为albert中文版没有sentencepiece,故通过hugging face的bert_tokenize进行词索引的转换
tokenizer = BertTokenizer.from_pretrained(‘bert-base-chinese’)
#得到hugging face预训练模型参数
word_embeddings = AlbertModel.from_pretrained(‘voidful/albert_chinese_base’)
3.语料库是人民日报标注好的,有TIME, PERSON,LOCATION,OTHER
4.进过lstm得到的是发射矩阵(非归一化数值,(batch_size, seq_len,num_entities),观测变量—>状态),由crf的decoding的公式,等式右边第二项为lstm输出的发射矩阵,第一项为需要模型学习的转移矩阵(状态—>状态,随机初始化)
在这里插入图片描述
5.损失函数,score就是发射矩阵+转移矩阵(真实路径),Z()是所有路径之和,让真实路径的在所有路径中的比例最大,然后经过对数似然函数可得到以下公式,这里得到Z()类似动态规划

利用hugging face进行albert-lstm-crf的命名实体识别_第4张图片利用hugging face进行albert-lstm-crf的命名实体识别_第5张图片
6.模型训练好之后,最终可以根据 viterbi 计算得到的值,往前回溯最合适的序列。

https://github.com/hyznlp/nlp/tree/master/pytorch_tutorial_albert_lstm_crf_ner

你可能感兴趣的:(pytorch,ner,自然语言处理)