一、赛事背景
在教育领域,传统的出题方式通常依赖于教师的个人经验和教学大纲的要求,这种方式虽然稳定可靠,但存在一些局限性。例如,传统出题可能缺乏足够的多样性和个性化,无法满足不同学习能力和兴趣学生的需要。同时,教师在出题时需要投入大量的时间和精力,这个过程往往较为繁琐且效率不高。
随着人工智能技术的快速发展,大模型正成为推动个性化学习与智能教育的关键力量。特别是在语言学科的教学中,利用大模型完成Question Answer Generation (QAG)过程可以有效赋能QA题型的出题流程。我们希望通过竞赛,激发开发者的创新思维,为我国的教育发展“提质增效”。
二、赛事任务
通过微调大模型根据阅读片段生成高考中英文阅读模拟题及答案,助力教育事业。
限定在讯飞大模型定制训练平台上使用spark-13b微调模型来实现。
三、跑通baseline
根据速通手册(Datawhale (linklearner.com))即可丝滑完成,这里不再赘述。
四、代码理解
中文问答数据制作
-
数据读取与清洗:
df = pd.read_excel('训练集-语文.xlsx') df = df.replace('.', '.', regex=True) df = df.replace('(', '(', regex=True)
读取Excel文件到Pandas DataFrame中,并使用正则表达式将中文标点替换为对应的英文标点。
-
提取特定行内容:
second_row_option_content = df.loc[2, '选项'] print(second_row_option_content)
提取了DataFrame中第三行(索引为2,因为索引从0开始)的‘选项’列的内容,并打印出来。
-
中文选择题处理:
def chinese_multiple_choice_questions(questions_with_answers):
处理中文选择题,使用正则表达式来识别问题和选项,并将它们组织成字典格式。
-
中文答案处理:
def chinese_multiple_choice_answers(questions_with_answers):
处理中文答案,通过正则表达式匹配问题编号和对应的答案。
-
生成中文问答数据:
def process_cn(df):
结合了上述两个函数,用于生成中文的问答数据。遍历DataFrame中的每一行,提取选项和答案,并使用
get_prompt_cn
函数生成提示信息。
英语问答数据制作
-
数据读取与清洗:
df = pd.read_excel('训练集-英语.xlsx') df = df.replace('.', '.', regex=True).replace('А.', 'A.', regex=True)
读取Excel文件,并替换其中的中文句号和俄文字母为相应的英文标点和字母。
-
去除空格和换行:
def remove_whitespace_and_newlines(input_string):
-
提取英语答案:
def get_answers(text):
使用正则表达式从文本中提取选择题的答案。
-
提取英语问题:
def get_questions(text):
使用正则表达式从文本中提取问题及其选项。
-
生成英语问答数据:
def process_en(df):
该函数结合了提取问题和答案的函数,用于生成英语的问答数据。遍历DataFrame中的每一行,提取选项和答案,并使用
get_prompt_en
函数生成提示信息。 -
转换为DataFrame并导出为JSONL:
df_new = pd.DataFrame({'input': cn_input+cn_input[:30]+en_input+en_input[:20], 'output': cn_output+cn_output[:30]+en_output+en_output[:20]})
将生成的问答数据转换为一个新的DataFrame,并导出为JSONL格式的文件。
-
本地测试:
from sparkai.llm.llm import ChatSparkLLM, ChunkPrintHandler