一、题目介绍
题目链接:LIC·2025语言与智能技术竞赛------人民日报健康客户端赛道一
1. 智慧医疗:从数据构建到Agent应用的全栈挑战
项目 | 说明 |
---|---|
赛道名称 | 智慧医疗:从数据构建到Agent应用的全栈挑战 |
核心任务 | 赛道将数据工程与产品研发融为一体。参赛者需基于人民日报健康等提供的真实医疗数据,贯通高质量数据集构建 与智能Agent应用开发的全流程,并选择一个方向作为主要评审侧重点。 |
主要环节 | 1. 数据构建: 基于权威医疗长/短视频,进行语音转录、信息抽取和知识结构化,产出高质量的医疗问答(QA)数据集。 2. 应用搭建: 利用构建的数据集对文心大模型进行微调,并开发一个可交互的智慧医疗Agent,解决真实场景问题。 |
提交产出 | 1. 数据集成果: 结构化医疗QA数据集及完整的处理流程文档。 2. 应用成果: 智慧医疗Agent应用Demo及技术方案说明文档。 |
评测机制 | 最终成绩由评估集自动评测(40%)与现场答辩分(60%)组成。专业评审将根据团队选择的侧重点进行:若侧重数据构建 ,则主要评估数据集质量;若侧重应用搭建,则主要评估应用产品的完整性与技术深度。 |
赛题亮点 | 体验从原始数据到AI产品的全链路开发;接触业界稀缺、高信噪比的真实医疗语料;将数据工程能力与大模型应用能力深度结合,全面锻炼解决复杂行业问题的综合能力。 |
2.数据集示例
-
1. "人民名医"专家长视频
- 数据描述: 由国内顶级权威专家主讲的长视频讲座(约1小时/期),包含系统、深入的疾病诊疗知识。
- 核心任务: 将长视频的语音转录为文本 ,并从中提炼、构建高质量、结构化的QA问答对。
- 应用价值: 构建体系化的高质量医疗对话数据集,用于微调领域大模型 ;将专家知识提炼为样本,作为预训练数据增强。
- 初赛示例: 提供
人民名医.xlsx
文件,内含5-10个专家讲座视频的观看链接及基础信息。
-
2. "大夫说"科普短视频
- 数据描述: 面向公众的轻量级科普短视频(约3分钟/期)。
- 核心任务: 进行关键信息提取 ,快速生成标准化的QA问答对。
- 应用价值: 快速生成轻量级科普语料,适配移动端健康助手场景,可作为高质量的RAG知识库。
- 初赛示例: 提供
大夫说.xls
文件,内含5-10个短视频的观看链接及基础信息。
-
3. "健康号"多模态内容
- 数据描述: 包含海量(总量10万+)的图文和视频内容。
- 核心任务: 进行多模态数据融合与对齐,构建跨模态数据集。
- 应用价值: 用于训练医疗多模态大模型 的基座能力,或构建多模态RAG知识库,实现跨模态搜索、AIGC科普内容智能生成等。
- 初赛示例: 提供一个"健康号"文件夹,其中包含数个.mp4格式的小视频文件作为样例。
-
4. 结构化疾病库
- 数据描述: 包含1450个结构化的疾病条目。
- 核心任务: 基于条目进行知识图谱构建 ,形成实体关系三元组。
- 应用价值: 将疾病关联关系数字化,支撑诊断辅助系统 的开发或作为高质量的患者教育知识库。
- 初赛示例: 提供
查疾病.xls
文件,内含5-10个疾病条目的示例数据。
3.难点分析
题目难点主要是:
- 爬取并下载各类视频
- 视频转文本
- 图片转文本 这几点是比较耗时的。
二、数据转换
1.视频转文本
可使用Whisper(large)
等模型对视频进行语音识别,将转录文本直接保存到txt文件中。语音转文本的模型很多,可选范围较大。
python
# 加载 Whisper 模型(也可以用 "small", "medium", "large")
model = whisper.load_model("large")
# 语音转文字
result = model.transcribe(audio_path)
# 保存字幕文本
with open(subtitle_path, "w", encoding="utf-8") as f:
f.write(result["text"])
2.图片转文本
图片转文本方法较多,可使用PaddleOCR,也可以使用 EasyOCR,也可以使用多模态大模型进行提取,均可。
3.构建QA数据对
如何构建数据对呢,可以结合视频、文章、图文标题和识别后的内容,一同传给大模型,例如ERNIE等,通过prompt提示词,生成QA数据对,可以提多个问题,prompt作优化。
python
prompt = f""" 你是一个QA提取专家,请从我给定的文本中尽可能的提取出qa对,并返回一个json格式的列表,格式如下: [ { "instruction": "问题", "output": "答案" } ] # 如果需要结合标题以及摘要,则使用以下prompt: #请你结合视频的标题、摘要以及文本进行QA构建:\n 标题为:{title} \n 摘要为:{abstract} \n 文本正文为:{content} \n # 否则你应该使用以下prompt: 我的文本是: {content} """
python
create_knowledge_graph_prompt(medical_case: Dict[str, Any]) -> str:
"""创建用于生成知识图谱的提示词"""
prompt = f"""
请将以下病例信息转换为知识图谱格式。知识图谱应包含以下要素:
1. 实体(Entities):
- 患者(Patient)
- 症状(Symptoms)
- 诊断(Diagnosis)
- 病史(Medical History)
- 检查结果(Test Results)
- 治疗方案(Treatment)
- 药物(Medications)
2. 关系(Relationships):
- 患者-呈现-症状
- 患者-有-病史
- 症状-指向-诊断
- 诊断-需要-检查
- 诊断-建议-治疗
- 治疗-包含-药物
病例信息:
{json.dumps(medical_case, ensure_ascii=False, indent=2)}
请返回JSON格式的知识图谱,结构如下:
{{
"entities": {{
"patients": [...],
"symptoms": [...],
"diagnoses": [...],
"medical_history": [...],
"test_results": [...],
"treatments": [...],
"medications": [...]
}},
"relationships": [
{{
"source": "实体ID",
"target": "实体ID",
"type": "关系类型",
"properties": {{}}
}}
]
}}
请确保每个实体都有唯一的ID和必要的属性。
"""
python
messages=[ { "role": "system", "content": "你是一个医疗知识图谱专家,擅长将病例信息结构化为知识图谱格式。请直接返回JSON格式的结果,不要包含其他说明文字。" }
4.对数据进行清洗
主要是对跟医疗知识无关的数据进行处理,比如
- 人名
- 地名
- 时间
三、RAG对话构建
可使用的有LLMAnything等工具构建知识库问答,零代码可实现。
四、几点思考
- 一是要不怕动手,例如批量下载视频,爬
- 二是要有工程化思维,例如视频转文本,图转文本
- 三是要充分挖掘大模型能力,例如使用prompt构建QA,构建知识图谱