🚀 bert-base-chinese for QA
这是一个基于 bert-base-chinese 的模型,使用 DRCD 数据集进行了微调。该模型针对问答任务,在问答对上进行了训练,能够高效准确地回答相关问题。
🚀 快速开始
安装依赖
确保你已经安装了 transformers
库,可以使用以下命令进行安装:
pip install transformers
💻 使用示例
基础用法
from transformers import BertTokenizerFast, BertForQuestionAnswering, pipeline
model_name = "NchuNLP/Chinese-Question-Answering"
tokenizer = BertTokenizerFast.from_pretrained(model_name)
model = BertForQuestionAnswering.from_pretrained(model_name)
nlp = pipeline('question-answering', model=model, tokenizer=tokenizer)
QA_input = {
'question': '中興大學在哪裡?',
'context': '國立中興大學(簡稱興大、NCHU),是位於臺中的一所高等教育機構。中興大學以農業科學、農業經濟學、獸醫、生命科學、轉譯醫學、生醫工程、生物科技、綠色科技等研究領域見長 。近年中興大學與臺中榮民總醫院、彰化師範大學、中國醫藥大學等機構合作,聚焦於癌症醫學、免疫醫學及醫學工程三項領域,將實驗室成果逐步應用到臨床上,未來「衛生福利部南投醫院中興院區」將改為「國立中興大學醫學院附設醫院」。興大也與臺中市政府合作,簽訂合作意向書,共同推動數位文化、智慧城市等面相帶動區域發展。'
}
res = nlp(QA_input)
{'score': 1.0, 'start': 21, 'end': 23, 'answer': '臺中'}
高级用法
inputs = tokenizer(query, text, return_tensors="pt",padding=True, truncation=True, max_length=512, stride=256)
outputs = model(**inputs)
sequence_ids = inputs.sequence_ids()
mask = [i != 1 for i in sequence_ids]
mask[0] = False
mask = torch.tensor(mask)[None]
start_logits[mask] = -10000
end_logits[mask] = -10000
start_probabilities = torch.nn.functional.softmax(start_logits, dim=-1)[0]
end_probabilities = torch.nn.functional.softmax(end_logits, dim=-1)[0]
scores = start_probabilities[:, None] * end_probabilities[None, :]
max_index = scores.argmax().item()
start_index = max_index // scores.shape[1]
end_index = max_index % scores.shape[1]
inputs_with_offsets = tokenizer(query, text, return_offsets_mapping=True)
offsets = inputs_with_offsets["offset_mapping"]
start_char, _ = offsets[start_index]
_, end_char = offsets[end_index]
answer = text[start_char:end_char]
result = {
"answer": answer,
"start": start_char,
"end": end_char,
"score": scores[start_index, end_index],
}
print(result)
👨💻 作者信息
- Han Cheng Yu:boy19990222@gmail.com
- Yao-Chung Fan:yfan@nchu.edu.tw
👥 关于我们
中興大學自然語言處理實驗室 的研究方向围绕深度学习技术在文字资料探勘 (Text Mining) 与自然语言处理 (Natural Language Processing) 方面展开。目前,实验室成员的研究主题着重于机器阅读理解 (Machine Reading Comprehension) 以及自然语言生成 (Natural Language Generation) 两个方面。
ℹ️ 更多信息
如需了解中興大學自然語言處理實驗室的更多信息,请访问我们的 在线演示仓库 和 GitHub 主页。