项目介绍:bert-base-uncased-squad2
项目概述
bert-base-uncased-squad2 是由 deepset 提供的一个用于抽取式问答的语言模型。该模型的主要用途是在给定的上下文中回答提出的问题。模型使用的是基于英语的 BERT 预训练模型,完成训练的数据集为 SQuAD 2.0。
数据集与任务
该模型经过训练和验证的数据集是 SQuAD 2.0,主要用于问答任务的验证。其任务类型为抽取式问答,要求模型从文本中提取出精确答案。
评价指标
- 精确匹配率(Exact Match):75.6529
- F1 分数:78.6191
这些指标已经过验证,确保模型性能的稳定和可靠。
超参数设置
该模型的训练过程中的一些关键超参数设置如下:
- 批量大小:32
- 训练周期数:3
- 基础语言模型:bert-base-uncased
- 最大序列长度:384
- 学习率:3e-5
- 学习率调度:线性热身
- 热身比例:0.2
- 文档跨步:128
- 最大查询长度:64
使用方法
在 Haystack 中使用
Haystack 是一个构建可定制生产级大语言模型应用的 AI 框架。通过 Haystack,可以使用 bert-base-uncased-squad2 模型进行文档的抽取式问答。用户可以通过 Python 代码,简单加载模型并根据提供的文档运行问答任务。
from haystack import Document
from haystack.components.readers import ExtractiveReader
docs = [Document(content="Python is a popular programming language")]
reader = ExtractiveReader(model="deepset/bert-base-uncased-squad2")
reader.warm_up()
question = "What is a popular programming language?"
result = reader.run(query=question, documents=docs)
在 Transformers 中使用
用户同样可以使用 Transformers 库来加载并运行该模型。可以利用 pipeline 功能,直接对问题和上下文进行问答。
from transformers import pipeline
model_name = "deepset/bert-base-uncased-squad2"
nlp = pipeline('question-answering', model=model_name, tokenizer=model_name)
QA_input = {
'question': 'Why is model conversion important?',
'context': 'The option to convert models between FARM and transformers gives freedom to the user...'
}
res = nlp(QA_input)
模型性能
经过评估,模型在验证集上的表现为:
- Exact Match: 73.6798
- F1: 77.8765
关于 deepset
deepset 是一个致力于 AI 框架开发的公司,他们开发了 Haystack,这是一款开源的生产就绪的 AI 框架。deepset 也在开发其他的语言模型和工具,如 Distilled roberta-base-squad2 和德国 BERT 等。
社区与联系
如果对 Haystack 感兴趣,可以访问他们的 GitHub 页面。deepset 还有一个开放的 Discord 社区,可以随时加入。此外,deepset 也处于招聘状态,有兴趣的可以到他们的官网查看 招聘信息。