基于PaddleHub的Fine-tune讯飞医疗搜索意图识别(下)

简介: 基于PaddleHub的Fine-tune讯飞医疗搜索意图识别(下)

三、环境构建


ERNIE 通过建模海量数据中的词、实体及实体关系,学习真实世界的语义知识。相较于 BERT 学习原始语言信号,ERNIE 直接对先验语义知识单元进行建模,增强了模型语义表示能力,以 Transformer 为网络基本组件,以Masked Bi-Language Model和 Next Sentence Prediction 为训练目标,通过预训练得到通用语义表示,再结合简单的输出层,应用到下游的 NLP 任务。本示例展示利用ERNIE进行文本分类任务。


1.paddlehub安装


!pip install -U  -q paddlehub


2.模型下载


PaddleHub还提供BERT等模型可供选择, 当前支持文本分类任务的模型对应的加载示例如下:

模型名 PaddleHub Module
ERNIE, Chinese hub.Module(name='ernie')
ERNIE tiny, Chinese hub.Module(name='ernie_tiny')
ERNIE 2.0 Base, English hub.Module(name='ernie_v2_eng_base')
ERNIE 2.0 Large, English hub.Module(name='ernie_v2_eng_large')
BERT-Base, English Cased hub.Module(name='bert-base-cased')
BERT-Base, English Uncased hub.Module(name='bert-base-uncased')
BERT-Large, English Cased hub.Module(name='bert-large-cased')
BERT-Large, English Uncased hub.Module(name='bert-large-uncased')
BERT-Base, Multilingual Cased hub.Module(nane='bert-base-multilingual-cased')
BERT-Base, Multilingual Uncased hub.Module(nane='bert-base-multilingual-uncased')
BERT-Base, Chinese hub.Module(name='bert-base-chinese')
BERT-wwm, Chinese hub.Module(name='chinese-bert-wwm')
BERT-wwm-ext, Chinese hub.Module(name='chinese-bert-wwm-ext')
RoBERTa-wwm-ext, Chinese hub.Module(name='roberta-wwm-ext')
RoBERTa-wwm-ext-large, Chinese hub.Module(name='roberta-wwm-ext-large')
RBT3, Chinese hub.Module(name='rbt3')
RBTL3, Chinese hub.Module(name='rbtl3')
ELECTRA-Small, English hub.Module(name='electra-small')
ELECTRA-Base, English hub.Module(name='electra-base')
ELECTRA-Large, English hub.Module(name='electra-large')
ELECTRA-Base, Chinese hub.Module(name='chinese-electra-base')
ELECTRA-Small, Chinese hub.Module(name='chinese-electra-small')
!hub install roberta-wwm-ext-large
[2022-09-10 14:56:17,391] [    INFO] - Module roberta-wwm-ext-large already installed in /home/aistudio/.paddlehub/modules/roberta_wwm_ext_large复制代码


四、模型Fine-tune


# 设置使用的GPU卡号
!export CUDA_VISIBLE_DEVICES=0
import paddlehub as hub
model = hub.Module(name='roberta-wwm-ext-large',  task='seq-cls', num_classes=10)
[2022-09-10 14:56:20,673] [    INFO] - Already cached /home/aistudio/.paddlenlp/models/roberta-wwm-ext-large/roberta_chn_large.pdparams
W0910 14:56:20.677435 25230 gpu_resources.cc:61] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 11.2, Runtime API Version: 11.2
W0910 14:56:20.681991 25230 gpu_resources.cc:91] device: 0, cuDNN Version: 8.2.


1.自定义数据集


from typing import Dict, List, Optional, Union, Tuple
import os
from paddlehub.env import DATA_HOME
from paddlehub.utils.download import download_data
from paddlehub.datasets.base_nlp_dataset import TextClassificationDataset
from paddlehub.text.bert_tokenizer import BertTokenizer
from paddlehub.text.tokenizer import CustomTokenizer
class MyDataset(TextClassificationDataset):
    def __init__(self, tokenizer: Union[BertTokenizer, CustomTokenizer], max_seq_len: int = 128, mode: str = 'train'):
        base_path =  "yt"
        if mode == 'train':
            data_file = 'train_ok.csv'
        elif mode=="val":
            data_file = 'val_ok.csv'
        super().__init__(
            base_path=base_path,
            tokenizer=tokenizer,
            max_seq_len=max_seq_len,
            mode=mode,
            data_file=data_file,
            label_list=['多问', '临床表现(病症表现)', '用法' ,'适用症', '定义', '病因' ,'治疗方法', '无法确定', '作用', '方法'],
            is_file_with_header=True)


2.Reader定义


接着生成一个文本分类的reader,reader负责将dataset的数据进行预处理,首先对文本进行切词,接着以特定格式组织并输入给模型进行训练。


ClassifyReader的参数有以下三个:


  • dataset: 传入PaddleHub Dataset;
  • vocab_path: 传入ERNIE/BERT模型对应的词表文件路径;
  • max_seq_len: ERNIE模型的最大序列长度,若序列长度不足,会通过padding方式补到max_seq_len, 若序列长度大于该值,则会以截断方式让序列长度为max_seq_len;
train_dataset = MyDataset(tokenizer=model.get_tokenizer(), max_seq_len=221, mode='train')
val_dataset = MyDataset(tokenizer=model.get_tokenizer(), max_seq_len=221, mode='val')
[2022-09-10 14:56:26,339] [    INFO] - Already cached /home/aistudio/.paddlenlp/models/roberta-wwm-ext-large/vocab.txt
[2022-09-10 14:56:26,739] [    INFO] - Already cached /home/aistudio/.paddlenlp/models/roberta-wwm-ext-large/vocab.txt


3.选择优化策略和运行配置


# 设置使用的GPU卡号
!export CUDA_VISIBLE_DEVICES=0
import paddle
optimizer = paddle.optimizer.Adam(learning_rate=5e-5, parameters=model.parameters())
trainer = hub.Trainer(model, optimizer, checkpoint_dir='test_ernie_text_cls', use_gpu=True)
trainer.train(train_dataset=train_dataset, eval_dataset=val_dataset,epochs=5, batch_size=32, save_interval=1)

image.png


五、模型预测


当完成Fine-tune后,Fine-tune过程在验证集上表现最优的模型会被保存在CHECKPOINTDIR/bestmodel目录下,其中{CHECKPOINT_DIR}/best_model目录下,其中CHECKPOINTDIR/bestmodel{CHECKPOINT_DIR}目录为Fine-tune时所选择的保存checkpoint的目录。


1.读取数据


import numpy as np
import pandas as pd
test=pd.read_csv('yt/test.csv',sep='\t')
test_list=np.array(test.text).tolist()
print(len(test_list))
2000
test_data=[]
for item in test_list:
    test_data.append([item])
print(test_data[:10])
[['四磨汤口服液的成分是什么,可以改善腹痛腹泻的情况吗?'], ['阴茎上长泡是怎么回事?'], ['21金维他多维元素片适用于怎样的营养补给'], ['臀部护理是不是应该有什么步骤和用品呢?都应该怎么进行?'], ['您的答复我收到了,谢谢!我还想在问一下,如果胸腔积液继续增加有什么好的办法解决吗?今天下午感觉胸闷又排了五百多毫升我观察比前几次浓度增加了。'], ['晕痛定胶囊这个药物能不能长期吃的啊,不知道治疗偏头痛怎么样呢'], ['医师你好,我女儿右腿左侧胎生血管瘤,现在还显瘀青色,有人建议激光治疗,激光对她太疼,有什么更好的治疗?内蒙古婴儿的血管瘤长手上危害大不大?'], ['月见草油胶丸会导致大便稀?需要停止用药吗?'], ['宝宝经常性便秘怎么办?'], ['有没有人知道在深圳哪个药房才可以买到益肾蠲痹丸这个药物呢?']]
label_list=['多问', '临床表现(病症表现)', '用法' ,'适用症', '定义', '病因' ,'治疗方法', '无法确定', '作用', '方法']
label_map = {}
for i in range(10):
    label_map[i]=label_list[i]
print(label_map)
{0: '多问', 1: '临床表现(病症表现)', 2: '用法', 3: '适用症', 4: '定义', 5: '病因', 6: '治疗方法', 7: '无法确定', 8: '作用', 9: '方法'}


2.模型预测


import paddlehub as hub
model = hub.Module(
    name='ernie_tiny',
    version='2.0.1',
    task='seq-cls',
    load_checkpoint='./test_ernie_text_cls/best_model/model.pdparams',
    label_map=label_map)
results = model.predict(test_data, max_seq_len=221, batch_size=1, use_gpu=True)
[2022-09-10 15:03:03,990] [    INFO] - Already cached /home/aistudio/.paddlenlp/models/ernie-tiny/ernie_tiny.pdparams
[2022-09-10 15:03:07,737] [    INFO] - Loaded parameters from /home/aistudio/test_ernie_text_cls/best_model/model.pdparams
[2022-09-10 15:03:07,749] [    INFO] - Already cached /home/aistudio/.paddlenlp/models/ernie-tiny/vocab.txt
[2022-09-10 15:03:07,751] [    INFO] - Already cached /home/aistudio/.paddlenlp/models/ernie-tiny/spm_cased_simp_sampled.model
[2022-09-10 15:03:07,753] [    INFO] - Already cached /home/aistudio/.paddlenlp/models/ernie-tiny/dict.wordseg.pickle
print(results[0])
print(len(results))
定义
2000


3.保存结果


f=open('result.csv','w')
f.write('label\n')
for idx in range(len(results)):
    f.write(results[idx]+'\n')
f.close()


六、提交


下载提交,即可出分数

image.png

  • 另:可划分 traineval ,选取最佳模型


相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
目录
相关文章
|
8月前
|
人工智能 算法 数据可视化
AI Earth ——开发者模式案例6:决策树模型实现冬小麦提取
AI Earth ——开发者模式案例6:决策树模型实现冬小麦提取
104 2
|
机器学习/深度学习 自然语言处理 算法
跨模态学习能力再升级,EasyNLP电商文图检索效果刷新SOTA
本⽂简要介绍我们在电商下对CLIP模型的优化,以及上述模型在公开数据集上的评测结果。最后,我们介绍如何在EasyNLP框架中调用上述电商CLIP模型。
|
6月前
|
JSON 数据可视化 API
GraphRAG+Ollama,构建本地精准全局问答系统!
RAG 是目前大语言模型相关最知名的工具之一,从外部知识库中检索事实,以便为大型语言模型 (LLM) 提供最准确、最新的信息。
|
4月前
|
人工智能 自然语言处理 机器人
【Prompt Engineering 提示词工程指南】​文本概括、信息提取、问答、文本分类、对话、代码生成、推理​
本文介绍了使用提示词与大语言模型(LLM)交互的基础知识。通过调整参数如温度(Temperature)、最高概率词元(Top_p)、最大长度(Max Length)及停止序列(Stop Sequences),可以优化模型输出。温度参数影响结果的随机性;Top_p 控制结果的多样性;最大长度限制输出长度;停止序列确保输出符合预期结构。此外,频率惩罚(Frequency Penalty)和存在惩罚(Presence Penalty)可减少重复词汇,提升输出质量。提示词需包含明确指令、上下文信息、输入数据及输出指示,以引导模型生成理想的文本。设计提示词时应注重具体性、避免歧义,并关注模型的具体行为
497 1
|
4月前
|
机器学习/深度学习 数据采集 人工智能
Llama 8B搜索100次超越GPT-4o!推理+搜索即可提升性能,新Scaling Law诞生?
【9月更文挑战第8天】在人工智能领域,理查德·萨顿提出了一项重要观点,即利用通用计算方法最终是最有效的途径,这一理念在诸如计算机象棋、围棋、语音识别及视觉等多个子领域中得到了验证。萨顿强调,计算能力的指数增长使得依赖大量计算的技术更加吸引人,并且从长远来看,计算能力将是唯一重要的因素。尽管他的观点强调了搜索和学习方法的力量,但也有人批评其忽略了领域知识和其他因素的重要性。
45 2
|
6月前
|
人工智能 自然语言处理
X Detector:最值得信赖的多语言 AI 内容检测器
**X Detector** 提供直观界面和高效AI文本检测。支持20种语言,无需登录即可免费使用。高准确率、快速响应,几秒内显示结果。适合多语言内容筛查。尝试[AI Detector](https://xdetector.ai/),轻松检测AI生成文本。
X Detector:最值得信赖的多语言 AI 内容检测器
|
6月前
|
人工智能
魔搭多模态AI单词助记&通义APP即时口语练习,你从未体验过的全新版本!
首次接触魔搭多模态AI单词助记工具让我颇感惊喜。传统背单词方式枯燥低效,而该工具通过生成关联图像、短语或故事,让记忆变得生动有趣。访问[Word-wizard](https://modelscope.cn/studios/makabakaing/Word-wizard)体验其图文记忆和视觉学习功能。目前图文记忆功能似乎存在问题,但视觉学习功能仍可正常使用,能识别图片特征并生成释义和例句,辅助学习效果不错。此外,可通过通义APP实现即时口语练习,尽管缺乏上下文记忆功能,但仍是一个优秀的练习工具。
|
8月前
|
人工智能 自然语言处理 搜索推荐
Jina AI新模型使搜索准确性提升20%
【2月更文挑战第17天】Jina AI新模型使搜索准确性提升20%
240 2
Jina AI新模型使搜索准确性提升20%
|
8月前
|
存储 JSON 自然语言处理
千帆大模型——自定义【知识库】——Embedding式数据
千帆大模型——自定义【知识库】——Embedding式数据
568 0
|
机器学习/深度学习 存储 人工智能
7 Papers | GPT-4等大模型自己制作工具;识别ChatGPT造假
7 Papers | GPT-4等大模型自己制作工具;识别ChatGPT造假
200 0