当前位置: 首页 > news >正文

工单分类总结

微调BERT-base模型,构建层次化分类器,Top-3准确率达97.2%,并自动识别出问题的关键类别

1. 具体微调的BERT-base模型是什么模型?

BERT-base模型是一个预训练的Transformer模型,包含12个Transformer块、12个自注意头和隐藏大小为768。该模型在大规模文本数据上进行了预训练,能够捕捉文本的上下文信息和语义特征。

2. 如何微调的,微调步骤?

微调BERT-base模型的步骤如下:

  1. 加载预训练模型和分词器

    from transformers import BertTokenizer, BertForSequenceClassification
    
    model_name = 'bert-base-uncased'
    tokenizer = BertTokenizer.from_pretrained(model_name)
    model = BertForSequenceClassification.from_pretrained(model_name, num_labels=10)
    
  2. 准备训练数据

    from torch.utils.data import Dataset, DataLoader
    
    class TextClassificationDataset(Dataset):
        def __init__(self, texts, labels, tokenizer, max_length=128):
            self.texts = texts
            self.labels = labels
            self.tokenizer = tokenizer
            self.max_length = max_length
    
        def __len__(self):
            return len(self.texts)
    
        def __getitem__(self, idx):
            text = self.texts[idx]
            label = self.labels[idx]
            encoding = self.tokenizer.encode_plus(
                text,
                add_special_tokens=True,
                max_length=self.max_length,
                return_token_type_ids=False,
                padding='max_length',
                truncation=True,
                return_attention_mask=True,
                return_tensors='pt',
            )
            return {
         
                'input_ids': encoding['input_ids'].flatten(),
                'attention_mask': encoding['attention_mask'].flatten(),
                'label': torch.tensor(label, dtype=torch.long)
            }
    
    # 示例数据
    texts = ["网络连接失败", "无法登录账户", "软件安装失败"]
    labels = [0, 1, 2]  # 0: 网络故障, 1: 账户权限, 2: 软件安装
    
    dataset = TextClassificationDataset(texts, labels, tokenizer)
    dataloader = DataLoader(dataset, batch_size=8, shuffle=True)
    
  3. 定义训练参数

    from torch.optim import AdamW
    from transformers import get_scheduler
    
    optimizer = AdamW(model.parameters(), lr=2e-5)
    num_epochs = 3
    num_training_steps = num_epochs * len(dataloader)
    lr_scheduler = get_scheduler(
        name="linear",
        optimizer=optimizer,
        num_warmup_steps=0,
        num_training_steps=num_training_steps
    )
    
    device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")
    model.to(device)
    
  4. 训练模型

    from tqdm.auto import tqdm
    
    progress_bar = tqdm(range(num_training_steps))
    
    model.train()
    for epoch in range(num_epochs):
        for batch in dataloader:
            batch = {
         k: v.to(<

相关文章:

  • Leetcode Hot 100 35.搜索插入位置
  • 体育直播模板nba英超直播欧洲杯直播模板手机自适应
  • 实时视频分析的破局之道:蓝耘 MaaS 如何与海螺 AI 视频实现高效协同
  • [leetcode]1631. 最小体力消耗路径(bool类型dfs+二分答案/记忆化剪枝/并查集Kruskal思想)
  • 介绍 Docker 的基本概念和优势,以及在应用程序开发中的实际应用
  • Qt窗口控件之菜单栏QMenuBar
  • HTTP Header 中的 cookie 和 set-cookie
  • 笔记:介绍如何使用Docfx生成开发文档
  • 在若依框架,导出对象作为模版,填充内容可以搜索数据库数据作为下拉选择数据,一个工具类就够了【拿来就用】
  • c++:红黑树
  • Vue 中的nextTick函数的原理、作用及使用场景。
  • 蓝桥杯备赛(搜索)
  • el-table折叠懒加载支持排序
  • -PHP 应用文件管理模块包含上传遍历写入删除下载安全
  • C++调用ffmpeg解复用、解码案例
  • vue学习九
  • Apache APISIX 架构浅析
  • 巧用输出变量,提升Dolphinscheduler工作流灵活性和可维护性
  • 【多线程-第四天-自己模拟SDWebImage的下载图片功能-自定义block和传递参数 Objective-C语言】
  • 技术引领未来创新发展引擎
  • 苹果Safari浏览器上的搜索量首次下降
  • 马新民卸任外交部条约法律司司长
  • 从“重规模”向“重回报”转变,公募基金迎系统性改革
  • 42岁退役军人高武生命最后时刻:在水中托举近20分钟救出落水孩童
  • 金融监管总局:支持银行有序设立科技金融专门机构,推动研发机器人、低空飞行器等新兴领域的保险产品
  • 经济日报:落实落细更加积极的财政政策