文档首页 > > AI Gallery用户指南> 预置AI算法(官方发布)> 文本分类>

短信诈骗预警(文本分类/TensorFlow)

短信诈骗预警(文本分类/TensorFlow)

分享
更新时间:2021/02/27 GMT+08:00

概述

基于TextCNN和BERT的级联网络分类算法,用于短信诈骗预警。该算法会载入预训练模型在用户数据集上做迁移学习。训练后生成的模型可直接在ModelArts平台部署成在线服务,支持使用CPU、GPU推理。

训练

  • 算法基本信息
    • 任务类型:文本分类
    • 支持的框架引擎:Tensorflow-1.13.1-python2.7
    • 算法输入:
      目前支持“tsv”格式,固定数据名称为“data.tsv”“tsv”的每一行是一条数据,文本和标签之间以TAB键('\t')隔开。数据格式如下所示:
      文本1 标签
      文本2 标签
      ...
      文本n 标签
      • 若仅提供“data.tsv”数据,则算法会将数据切分为“train.tsv”“eval.tsv”
      • 若提供“train.tsv”“eval.tsv”数据且位于同一目录下,则算法将不会数据切分。

      该级联网络分类算法,对不同类别的阈值可以设置两个级联模型,默认配置文件名称为“config.yaml”,样例如下:

      first_model_threshold:
        '类别1': 0.3
        '类别2': 0.6
        '类别3': 0.1
      second_model_threshold:
        '类别1': 0.4
        '类别2': 0.6
        '类别3': 0.1

      其中,“first_model_threshold”配置TextCNN, “second_model_threshold”配置BERT。

      若不提供配置文件“config.yaml”,则两个级联模型的全部阈值通过训练参数“default_threshold”设定。例如有三个类别,当训练参数“default_threshold”设置为0.3时,相当于配置文件“config.yaml”设置为:

      first_model_threshold:
        '类别1': 0.3
        '类别2': 0.3
        '类别3': 0.3
      second_model_threshold:
        '类别1': 0.3
        '类别2': 0.3
        '类别3': 0.3
  • 训练参数说明

    名称

    默认值

    类型

    是否必填

    是否可修改

    描述

    bert_num_epochs

    2

    Integer

    BERT模型训练数据集的次数。

    bert_batch_size

    4

    Integer

    BERT模型每次迭代训练时单卡输入句子数量。

    bert_max_seq_length

    200

    Integer

    BERT模型输入的句子最大长度,同数据集相关,实际输入少于该值会补0,多于该值会被截断。

    bert_learning_rate

    0.00002

    float

    BERT模型的初始化学习率。

    bert_warmup_proportion

    0.1

    float

    BERT模型预热学习率的总步数占比,用于保持模型的稳定性,避免较大的初始化学习率带来的模型震荡,利于加速模型收敛。

    textcnn_num_epochs

    2

    Integer

    TextCNN模型训练数据集的次数。

    textcnn_batch_size

    32

    Integer

    TextCNN模型每次迭代训练时单卡输入句子数量。

    textcnn_max_seq_length

    200

    Integer

    TextCNN模型输入的句子最大长度,同数据集相关,实际输入少于该值会补0,多于该值会被截断。

    textcnn_learning_rate

    0.001

    float

    TextCNN模型的初始化学习率。

    textcnn_lr_decay

    0.9

    float

    学习率衰减比率。

    textcnn_warmup_steps

    0

    Integer

    TextCNN模型预热学习率的步数,用于保持模型的稳定性,避免较大的初始化学习率带来的模型震荡,利于加速模型收敛。

    split_ratio

    0.8

    float

    数据随机切分为训练集和测试集的比例。

    default_threshold

    0

    float

    两个模型设定为统一的相同阈值(若存在“config.yaml”文件,该参数无效)。

  • 训练输出文件

    训练完成后的输出文件如下:

      |- model
        |- variables
          |- variables.data-00000-of-00001
          |- variables.index
        |- saved_model.pb
        |- customize_service.py
        |- config.json
        |- textcnn_model 
          |- best_validation.data-00000-of-00001
          |- best_validation.index
          |- best_validation.meta
        |- bert_chinese
          |- bert_config.json
          |- vocab.txt

GPU/CPU推理

训练作业完成之后即可管理模型,部署模型进行在线推理。

  • 推理配置文件“model/config.json”,默认使用CPU推理镜像(runtime:tf1.13-python3.6-cpu )。
  • 若使用GPU推理,导入模型之前需修改“model/config.json”文件,将“runtime”字段修改为“tf1.13-python3.6-gpu”

预测代码格式如下:

    {
        "data": 
            {"req_data":[
              {"id": "1",
              "text": "你的预测短信文本1"},
              {"id": "2",
              "text": "你的预测短信文本2"}
               ]}
    }

返回结果格式,如下:

      {
        "resp_data": [
            {
                    "text": "你的预测短信文本1"
                    "label": "XX",
                    "proba": 0.9952204728126526,
                    "id": "1"
            },
            {
                    "text": "你的预测短信文本2"
                    "label": "XX",
                    "proba": 0.9995460796356201,
                    "id": "2"
            }
        ],
    }
分享:

    相关文档

    相关产品