赞
踩
确定数据脱敏方案后,就要开始选取模型,任务的关键在于机器阅读理解(Machine Reading Comprehension, MRC),该任务也可以称为命名实体识别,根据内容选取了以下模型:
BERT-MRC模型是目前实体识别领域的一个SOTA模型,在数据量较小的情况下效果较其他模型要更好,原因是因为BERT-MRC模型可以通过问题加入一些先验知识,减小由于数据量太小带来的问题,在实际实验中,在数据量比较小的情况下,BERT-MRC模型的效果要较其他模型要更好一点。BERT-MRC模型很适合在缺乏标注数据的场景下使用。
具体理论知识可以参考这篇文章
https://blog.csdn.net/eagleuniversityeye/article/details/109601547
一图搞懂
可以看到,该模型对任务需求十分契合,这也是最开始敲定这个模型的原因之一
首先和bert-base-chinese模型一样确定环境已经安装了transformer,否则需要安装
pip install transformers
然后输入一下内容,该模型是基于大规模MRC数据再训练的,使用大量中文MRC数据训练的roberta_wwm_ext_large模型,效果比原版要更好
具体可以参考该模型的github
# Load model directly
from transformers import AutoTokenizer, AutoModelForQuestionAnswering
tokenizer = AutoTokenizer.from_pretrained("luhua/chinese_pretrain_mrc_roberta_wwm_ext_large")
model = AutoModelForQuestionAnswering.from_pretrained("luhua/chinese_pretrain_mrc_roberta_wwm_ext_large")
模型默认会下载到本地路径C:\Users\.cache\huggingface\hub\models--luhua--chinese_pretrain_mrc_roberta_wwm_ext_large
下,也可以通过dir
指定下载路径。注意:如果指定下载路径,调用的时候也需要指定路径
接下来就可以在本地部署使用了
# Load model directly
from transformers import pipeline
from transformers import AutoTokenizer, AutoModelForQuestionAnswering
tokenizer = AutoTokenizer.from_pretrained("luhua/chinese_pretrain_mrc_roberta_wwm_ext_large")
model = AutoModelForQuestionAnswering.from_pretrained("luhua/chinese_pretrain_mrc_roberta_wwm_ext_large")
qa = pipeline(task='question-answering',model=model,tokenizer=tokenizer)
print(qa(question=["报警人是谁"],context='报警人叫张三,身份证号是450481197804234431,今天在某中学收到一个盗用我学生的QQ号向我求助急用钱,根据对方的提示操作被诈骗了1000元,请派警。嫌疑人李四 光大银行 4270286502778806'))
# Load model directly
from transformers import pipeline
from transformers import AutoTokenizer, AutoModelForQuestionAnswering
tokenizer = AutoTokenizer.from_pretrained("luhua/chinese_pretrain_mrc_roberta_wwm_ext_large")
model = AutoModelForQuestionAnswering.from_pretrained("luhua/chinese_pretrain_mrc_roberta_wwm_ext_large")
qa = pipeline(task='question-answering',model=model,tokenizer=tokenizer)
print(qa(question=["嫌疑人是谁"],context='报警人叫张三,身份证号是450481197804234431,今天在某中学收到一个盗用我学生的QQ号向我求助急用钱,根据对方的提示操作被诈骗了1000元,请派警。嫌疑人李四 光大银行 4270286502778806'))
可以看到,模型会对自己的答案进行一个打分(也可以认为是模型对该答案的正确率的判断),给出答案的起始和结束地址以及答案本身
经过一系列测试,我们可以发现该模型十分契合任务需求,但是我并没有选择继续做下去了,主要是它不够大(我的任务是大模型)由我的搭档继续测试训练,等到他写了关于该模型的训练时会在此附上引用学习。接下来讲一下该模型的问题:
# Load model directly
from transformers import pipeline
from transformers import AutoTokenizer, AutoModelForQuestionAnswering
tokenizer = AutoTokenizer.from_pretrained("luhua/chinese_pretrain_mrc_roberta_wwm_ext_large")
model = AutoModelForQuestionAnswering.from_pretrained("luhua/chinese_pretrain_mrc_roberta_wwm_ext_large")
qa = pipeline(task='question-answering',model=model,tokenizer=tokenizer)
print(qa(question=["报警人和嫌疑人分别是谁"],context='报警人叫张三,身份证号是450481197804234431,今天在某中学收到一个盗用我学生的QQ号向我求助急用钱,根据对方的提示操作被诈骗了1000元,请派警。嫌疑人李四 光大银行 4270286502778806'))
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。