许可证:cc-by-nc-4.0
语言:
- 俄语
- 英语
任务标签:文档问答
标签:
- 文档问答
- 问答系统
- 自然语言处理
- 深度学习
- Transformer模型
- 多模态
- HuggingFace
- ruBert
- 机器学习
- 深度问答
- 文档AI
- 文档处理
- 神经网络
- torch
- pytorch
库名称:transformers
评估指标:
- 准确率
- F1分数
- 召回率
- 精确匹配
- 精确度
基础模型:
- ai-forever/ruBert-base

文档问答模型 - Kaleidoscope_small_v1
本模型是基于sberbank-ai/ruBert-base微调的版本,专为文档问答任务设计。它经过调整,特别适用于从提供的文档上下文中提取答案,并在包含上下文、问题和答案三元组的自定义JSON数据集上进行了微调。
主要特性
- 目标:根据用户问题从文档中提取答案。
- 基础模型:sberbank-ai/ruBert-base。
- 数据集:自定义JSON文件,包含字段:上下文、问题和答案。
- 预处理:通过将问题和文档上下文拼接形成输入,引导模型关注相关段落。
训练设置:
- 训练轮数:20。
- 批量大小:每设备4。
- 预热步数:总步数的0.1。
- 启用FP16训练(如果CUDA可用)。
- 硬件:在1xRTX 3070上完成训练。
描述
该模型使用Transformers库和自定义训练流程进行微调。训练过程的关键点包括:
- 自定义数据集:加载器读取包含上下文、问题和答案三元组的JSON文件。
- 特征准备:通过滑动窗口方法对文档和问题进行分词,以处理长文本。
- 训练过程:利用混合精度训练和AdamW优化器提升优化效果。
- 评估与检查点:训练脚本在验证集上评估模型性能,保存检查点,并根据验证损失采用早停策略。
- 该模型非常适合交互式文档问答任务,是客户支持、文档搜索和自动化问答系统等应用的强大工具。
虽然主要针对俄语文本,但模型也支持英语输入。
模型支持英语,但未经过充分测试
使用示例
import torch
from transformers import AutoTokenizer, AutoModelForQuestionAnswering
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
tokenizer = AutoTokenizer.from_pretrained("LaciaStudio/Kaleidoscope_small_v1")
model = AutoModelForQuestionAnswering.from_pretrained("LaciaStudio/Kaleidoscope_small_v1")
model.to(device)
file_path = input("输入文档路径:")
with open(file_path, "r", encoding="utf-8") as f:
context = f.read()
while True:
question = input("输入问题(或输入'exit'退出):")
if question.lower() == "exit":
break
inputs = tokenizer(question, context, return_tensors="pt", truncation=True, max_length=384)
inputs = {k: v.to(device) for k, v in inputs.items()}
outputs = model(**inputs)
start_logits = outputs.start_logits
end_logits = outputs.end_logits
start_index = torch.argmax(start_logits)
end_index = torch.argmax(end_logits)
answer_tokens = inputs["input_ids"][0][start_index:end_index + 1]
answer = tokenizer.decode(answer_tokens, skip_special_tokens=True)
print("答案:", answer)
回答示例
俄语
上下文:
阿尔伯特·爱因斯坦提出了相对论。
问题:
谁提出了相对论?
答案:
阿尔伯特·爱因斯坦
英语
上下文:
我曾有一辆红色的车。
问题:
我有一辆什么样的车?
答案:
一辆红色的车
由LaciaStudio | LaciaAI微调