许可证:Apache-2.0
语言:
- 中文
基础模型:
- hfl/chinese-roberta-wwm-ext
任务类型:文本分类
标签:
- 医疗
评估指标:
- 混淆矩阵
- 准确率
- F1值
基于RoBERTa微调的医疗问诊意图识别模型
项目简介
- 项目来源:中科(安徽)G60智慧健康创新研究院(简称"中科")心理健康大模型研发的对话导诊系统,本模型负责意图识别模块。
- 功能:识别用户输入文本的意图,区分【医疗问诊】与【日常闲聊】两类场景。
数据说明
- 数据构成:融合Hugging Face开源对话数据集与中科内部医疗对话数据,经清洗处理而成。
- 数据规模:6000条样本(训练集4800条/测试集1200条),正负样本比例均衡。
- 示例:
[
{"query": "最近热门的5部电影叫什么名字", "label": "nonmed"},
{"query": "关节疼痛,足痛可能是什么原因", "label": "med"},
{"query": "最近出冷汗,肚子疼,恶心与呕吐,严重影响学习工作", "label": "med"}
]
实验环境
Featurize在线平台配置:
- CPU:6核E5-2680 V4
- GPU:RTX3060(12.6GB显存)
- 系统:Ubuntu 20.04 + Python 3.9/3.10 + PyTorch 2.0.1 + TensorFlow 2.13.0 + Docker 20.10.10
- 依赖库安装:
pip install transformers datasets evaluate accelerate
训练方法
性能与局限
{
output_dir: "output",
num_train_epochs: 2,
learning_rate: 3e-5,
lr_scheduler_type: "cosine",
per_device_train_batch_size: 16,
per_device_eval_batch_size: 16,
weight_decay: 0.01,
warmup_ratio: 0.02,
logging_steps: 0.01,
logging_strategy: "steps",
fp16: True,
eval_strategy: "steps",
eval_steps: 0.1,
save_strategy: 'epoch'
}
使用指南
from transformers import AutoTokenizer, AutoModelForSequenceClassification
ID2LABEL = {0: "闲聊", 1: "问诊"}
MODEL_NAME = 'HZhun/RoBERTa-Chinese-Med-Inquiry-Intention-Recognition-base'
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModelForSequenceClassification.from_pretrained(MODEL_NAME, torch_dtype='auto')
query = '28岁患者情绪波动时频繁无诱因吐血,呼吸消化系统多次检查无果,近三天晨起持续吐血'
tokenized_query = tokenizer(query, return_tensors='pt').to(model.device)
intent = ID2LABEL[model(**tokenized_query).logits.argmax().item()]
print(intent)
queries = [
'胃痛腹泻数日伴夜间呕吐',
'如何不用医药器械去除腿毛',
'感冒咳嗽用药建议',
'今天适合露营吗?天气真好!'
]
tokenized_queries = tokenizer(queries, padding=True, truncation=True, return_tensors='pt').to(model.device)
intents = [ID2LABEL[i] for i in model(**tokenized_queries).logits.argmax(-1).tolist()]
print(intents)