AFAC2024: 基于保险条款的问答挑战——我的实战日记
概述
在最近的AFAC2024竞赛中,我参与了基于保险条款的问答赛道。这是一次深度学习与自然语言处理的实战演练,旨在提升模型在复杂保险文本理解与问答生成方面的能力。本文将分享我的参赛过程,包括数据处理、模型选择、微调策略、实验观察及最终成果。
比赛报名链接 https://tianchi.aliyun.com/competition/entrance/532194/introduction
数据与挑战
竞赛提供的数据集包含约6000条基于保险条款的问答对。这些数据覆盖了多种保险类型,如人寿保险、财产保险和健康保险,涉及保险条款的解释、索赔流程、覆盖范围等问题。数据集的多样性和专业性构成了此次竞赛的主要挑战。
llama factory 数据预处理
import json
train = json.load(open("round1_training_data/train.json",'r'))
dev = json.load(open("round1_training_data/dev.json",'r'))
a = []
for train_one in train:
a.append({
"input":"""目前有产品名称、相关条款。如果问题与产品名称、相关条款有关系,那么就依照产品名称、相关条款回答问题,如果没有关系直接回答问题。
根据"""+train_one['产品名']+""",相关条款"""+train_one['条款']+",问题:"+train_one['问题'],"output":train_one['答案']})
for train_one in dev:
a.append({
"input":"""目前有产品名称、相关条款。如果问题与产品名称、相关条款有关系,那么就依照产品名称、相关条款回答问题,如果没有关系直接回答问题。
根据"""+train_one['产品名']+""",相关条款"""+train_one['条款']+",问题:"+train_one['问题'],"output":train_one['答案']})
json.dump(a,open('data/a.json','w'),ensure_ascii=False)
任务总共数据6000条。
最大长度超过10000。
修改llama factory data下的data_info.json 加入我们的数据集
"a": {
"file_name": "a.json",
"columns": {
"prompt": "input",
"response": "output"
}
},
启动云脑任务的时候可以预先选择上我们要进行作业的模型。
配置好这个以后我们就可以启动任务了。在项目启动后我们需要把模型文件拉到本地。
from c2net.context import prepare
#初始化导入数据集和预训练模型到容器内
c2net_context = prepare()
#获取数据集路径
chat_json_path = c2net_context.dataset_path+"/"+"chat.json"
#获取预训练模型路径
qwen1_5_14b_chat_path = c2net_context.pretrain_model_path+"/"+"Qwen1.5-14B-Chat"
#输出结果必须保存在该目录
you_should_save_here