PAI提供多种已经训练好的自然语言处理类模型供您使用,涵盖了文本分类、文本匹配、序列标注及特征提取应用。本文为您介绍每种模型的输入格式、输出格式及使用示例。

背景信息

自然语言处理NLP(Natural Language Processing)是人工智能和语言学领域的分支学科,能够挖掘自然语言文本蕴含的信息和知识。常见的应用包括:
  • 文本分类,适用于新闻标签打标、情感分析、文本内容反垃圾及商品评价分类等场景。
  • 文本匹配,适用于问答匹配、句子相似度匹配、自然语言推理及对话检索等场景。
  • 序列标注,适用于命名实体识别NER及情感词抽取等场景。
  • 特征提取,提取的文本特征可以在文本领域或结合其他领域(例如计算机视觉)进行后续操作。
PAI-ModelHub提供以上类型的模型及服务部署流程,具体模型包括:

ModelHub登录入口

您可以通过如下方法进入ModelHub:
  1. 登录PAI控制台
  2. 在左侧导航栏,单击模型管理及优化
  3. PAI模型管理页面,单击ModelHub页签。

新闻分类模型

  • 模型介绍
    PAI-ModelHub提供了BERT分类模型进行新闻文本分类,输入为单句,该模型的结构如下图所示。文本分类
  • 输入格式
    输入数据为JSON格式字符串,包含idfirst_sequencesequence_length字段。其中first_sequence对应的value为待分类的新闻文本字符串,sequence_length对应文本的截断长度,最大为512。
    {
        "id": "该文本的ID",
        "first_sequence": "待分类的新闻文本字符串",
        "sequence_length": 128
    }
  • 输出格式
    输出数据为JSON格式字符串,包含的字段如下表所示。
    字段 描述 Shape Type
    id 输入的文本ID。 [] STRING
    output 对应标签的结果。 [28] LIST
    其中output为一个列表,每个元素为一个DICT。每个元素的格式如下。
    字段 描述 Shape Type
    pred 模型输出的标签。标签体系包括教育三农娱乐健康美文搞笑美食财经科技旅游汽车时尚科学文化房产热点母婴家居体育国际育儿宠物游戏健身职场读书艺术动漫 [] STRING
    prob 对应标签概率。 [] FLOAT
    logit 对应标签Logit。 [] FLOAT
  • 示例
    例如,为该模型输入如下测试数据。
    {
        "id": "1662",
        "first_sequence": "确诊病例超1000例墨西哥宣布进入卫生紧急状态。中新网3月31日电综合报道,墨西哥新冠肺炎病例已超过1000例,墨西哥政府30日宣布进入卫生紧急状态,加强相关措施以遏制新冠肺炎疫情蔓延。30日,墨西哥卫生官员报告该国新冠肺炎病例累计达1094例,死亡28人。卫生官员说,墨西哥的非必要活动禁令将延长到4月30日,民众聚会人数限制减到只容许50人。墨西哥官方还表示,60岁以上和高风险人群应严格遵守居家建议。此前,墨西哥政府宣布,超过3000万名学生于3月21日至4月20日期间放假,学校将加强远程教育、校园消毒等措施。责任编辑:孔庆玲",
        "sequence_length": 128
    }
    系统输出如下结果。
    {
        "id": "1662", 
        "output": [
             {"pred": "国际", "prob": 0.99915063, "logit": 10.21936}, 
             {"pred": "健康", "prob": 8.557205e-05, "logit": 0.8540586}, 
             {"pred": "财经", "prob": 8.2030325e-05, "logit": 0.81178904}, 
             {"pred": "科技", "prob": 8.076288e-05, "logit": 0.79621744}, 
             {"pred": "体育", "prob": 7.966044e-05, "logit": 0.7824724},
             ......
        ]
    }

文本内容反垃圾模型

  • 模型介绍

    PAI-ModelHub提供了BERT分类模型进行文本内容反垃圾,输入为单句。该模型的结构与新闻分类模型相同。

  • 输入格式
    输入数据为JSON格式字符串,包含idfirst_sequencesequence_length字段。其中first_sequence对应的value为待识别的垃圾或非垃圾文本字符串,sequence_length对应文本的截断长度,最大为512。
    {
        "id": "该文本的ID",
        "first_sequence": "待识别的垃圾或非垃圾文本字符串",
        "sequence_length": 128
    }
  • 输出格式
    输出数据为JSON格式字符串,包含的字段如下表所示。
    字段 描述 Shape Type
    id 输入的文本ID。 [] STRING
    output 对应标签的结果。 [5] LIST
    其中output为一个列表,每个元素为一个DICT。每个元素的格式如下。
    字段 描述 Shape Type
    pred 模型输出的标签。标签体系包括正常辱骂涉政涉黄恶意推广 [] STRING
    prob 对应标签概率。 [] FLOAT
    logit 对应标签Logit。 [] FLOAT
  • 示例
    例如,为该模型输入如下测试数据。
    {
        "id": "1662",
        "first_sequence": "聘手机小时工,180一天现结有手机就可以",
        "sequence_length": 128
    }
    系统输出如下结果。
    {
        "id": "1662", 
        "output": [
            {"pred": "恶意推广", "prob": 0.9977, "logit": 6.9357}, 
            {"pred": "正常", "prob": 0.0017, "logit": 0.5571}, 
            {"pred": "涉政", "prob": 0.0003, "logit": -1.1146}, 
            {"pred": "辱骂", "prob": 0.0002, "logit": -1.7147}, 
            {"pred": "涉黄", "prob": 0.0001, "logit": -1.9154}
        ]
    }
    更多有关内容安全技术和应用,请参见阿里安全

通用情感分析模型

  • 模型介绍

    PAI-ModelHub提供了BERT分类模型进行通用的情感分析,输入为单句,该模型的结构与新闻分类模型相同。

  • 输入格式
    输入数据为JSON格式字符串,包含idfirst_sequencesequence_length字段。其中first_sequence对应的value为待情感分析的文本字符串,sequence_length对应文本的截断长度,最大为512。具体的格式如下。
    {
        "id": "该文本的ID",
        "first_sequence": "待情感分析的文本",
        "sequence_length": 128
    }
  • 输出格式
    输出数据为JSON格式字符串,包含的字段如下表所示。
    字段 描述 Shape Type
    id 输入的文本ID。 [] STRING
    output 对应标签的结果。 [2] LIST
    其中output为一个列表,每个元素为一个DICT。每个元素的格式如下。
    字段 描述 Shape Type
    pred 模型输出的标签。标签体系包括负向正向 [] STRING
    prob 对应标签概率。 [] FLOAT
    logit 对应标签Logit。 [] FLOAT
  • 示例
    例如,为该模型输入如下测试数据。
    {
        "id": "1662",
        "first_sequence": "前天刚写好的文案今天再看就不满意了,一百个字就改了十几遍",
        "sequence_length": 128
    }
    系统输出如下结果。
    {
        "id": "1662", 
        "output": [
          {"pred": "负向", "prob": 0.9998781681060791, "logit": 4.049165725708008},
          {"pred": "正向", "prob": 0.00012180746125523001, "logit": -4.963781833648682}
        ]}
    }

电商评论情感分析模型

  • 模型介绍

    PAI-ModelHub提供了BERT分类模型进行电商评论的情感分析,输入为单句,该模型的结构与新闻分类模型相同。

  • 输入格式
    输入数据为JSON格式字符串,包含idfirst_sequencesequence_length字段。其中first_sequence对应的value为待情感分析的评论文本,sequence_length对应文本的截断长度,最大为512。具体的格式如下。
    {
        "id": "该文本的ID",
        "first_sequence": "待情感分析的评论文本",
        "sequence_length": 128
    }
  • 输出格式
    输出数据为JSON格式字符串,包含的字段如下表所示。
    字段 描述 Shape Type
    id 输入的文本ID。 [] STRING
    output 对应标签的结果。 [2] LIST
    其中output为一个列表,每个元素为一个DICT。每个元素的格式如下。
    字段 描述 Shape Type
    pred 模型输出的标签。标签体系包括负向正向 [] STRING
    prob 对应标签概率。 [] FLOAT
    logit 对应标签Logit。 [] FLOAT
  • 示例
    例如,为该模型输入如下测试数据。
    {
        "id": "1662",
        "first_sequence": "尺寸不标准,里料太差,太失望了!",
        "sequence_length": 128
    }
    系统输出如下结果。
    {
        "id": "1662", 
        "output": [
          {"pred": "负向", "prob": 0.9998517036437988, "logit": 3.9285061359405518},
          {"pred": "正向", "prob": 0.00014827243285253644, "logit": -4.887804985046387}
        ]}
    }

通用情绪检测模型

  • 模型介绍

    PAI-ModelHub提供了BERT分类模型进行文本情绪检查,输入为单句,该模型的结构与新闻分类模型相同。

  • 输入格式
    输入数据为JSON格式字符串,包含idfirst_sequencesequence_length字段。其中first_sequence对应的value为待检测的文本字符串,sequence_length对应文本的截断长度,最大为512。
    {
        "id": "该文本的ID",
        "first_sequence": "待检测文本字符串",
        "sequence_length": 128
    }
  • 输出格式
    输出数据为JSON格式字符串,包含的字段如下表所示。
    字段 描述 Shape Type
    id 输入的文本ID。 [] STRING
    output 对应标签的结果。 [5] LIST
    其中output为一个列表,每个元素为一个DICT。每个元素的格式如下。
    字段 描述 Shape Type
    pred 模型输出的标签。标签体系包括高兴生气悲伤惊讶恐惧无情绪 [] STRING
    prob 对应标签概率。 [] FLOAT
    logit 对应标签Logit。 [] FLOAT
  • 示例
    例如,为该模型输入如下测试数据。
    {
        "id": "1662",
        "first_sequence": "纪念下自己做的菜虽然我是真的很菜慢慢进步",
        "sequence_length": 128
    }
    系统输出如下结果。
    {
        "id": "1662", 
        "output": [
          {"pred": "高兴", "prob": 0.9982577, "logit": 6.765988},
          {"pred": "无情绪", "prob": 0.0007040186, "logit": -0.4909731},
          {"pred": "生气", "prob": 0.0002968554, "logit": -1.354532},
          {"pred": "悲伤", "prob": 0.0002641379, "logit": -1.471306},
          {"pred": "恐惧", "prob": 0.0002434009, "logit": -1.553067},
          {"pred": "惊讶", "prob": 0.0002339122, "logit": -1.592832}
        ]}
    }

通用文本匹配模型

  • 模型介绍
    PAI-ModelHub提供了BERT匹配模型进行通用文本匹配,输入为双句,该模型的结构如下图所示。通用文本匹配模型结构
  • 输入格式
    输入数据为JSON格式字符串,包含idfirst_sequencesecond_sequencesequence_length字段。其中first_sequence对应的value为第一个文本字符串,second_sequence对应的value为第二个文本字符串,sequence_length对应文本的截断长度,最大为512。
    {
        "id": "该文本的ID",
        "first_sequence": "第一个文本字符串",
        "second_sequence": "第二个文本字符串",
        "sequence_length": 128
    }
  • 输出格式
    输出数据为JSON格式字符串,包含的字段如下表所示。
    字段 描述 Shape Type
    id 输入的文本ID。 [] STRING
    output 对应标签的结果。 [2] LIST
    其中output为一个列表,每个元素为一个DICT。每个元素的格式如下。
    字段 描述 Shape Type
    pred 模型输出的标签。标签体系包括相似不相似 [] STRING
    prob 对应标签概率。 [] FLOAT
    logit 对应标签Logit。 [] FLOAT
  • 示例
    例如,为该模型输入如下测试数据。
    {
        "id": "1662",
        "first_sequence": "我做题做了三个小时。",
        "second_sequence": "我做了三个小时的题。",
        "sequence_length": 128
    }
    系统输出如下结果。
    {
        "id": "1662", 
        "output": [
            {"pred": "相似", "prob": 0.9999983, "logit": 7.185163}, 
            {"pred": "不相似", "prob": 1.705751e-06, "logit": -6.096340}
        ]
    }

金融文本匹配模型

  • 模型介绍

    PAI-ModelHub提供了BERT匹配模型进行金融领域蚂蚁金服相似问题匹配,输入为双句,该模型的结构与通用文本匹配模型相同。

  • 输入格式
    输入数据是为JSON格式字符串,包含idfirst_sequencesecond_sequencesequence_length字段。其中first_sequence对应的value为第一个问题文本字符串,second_sequence对应的value为第二个问题文本字符串,sequence_length对应文本的截断长度(最大为512)。
    {
        "id": "该文本的ID",
        "first_sequence": "第一个问题文本字符串",
        "second_sequence": "第二个问题文本字符串",
        "sequence_length": 128
    }
  • 输出格式
    输出数据为JSON格式字符串,包含的字段如下表所示。
    字段 描述 Shape Type
    id 输入的文本ID。 [] STRING
    output 对应标签的结果。 [2] LIST
    其中output为一个列表,每个元素为一个DICT。每个元素的格式如下。
    字段 描述 Shape Type
    pred 模型输出的标签。标签体系包括相似不相似 [] STRING
    prob 对应标签概率。 [] FLOAT
    logit 对应标签Logit。 [] FLOAT
  • 示例
    例如,为该模型输入如下测试数据。
    {
        "id": "1662",
        "first_sequence": "借呗授权取消了还能再次授权借呗吗",
        "second_sequence": "借呗授权不小心关闭还能在授权吗",
        "sequence_length": 64
    }
    系统输出如下结果。
    {
        "id": "1662", 
        "output": [
            {"pred": "相似", "prob": 0.8119994, "logit": 0.72160554}, 
            {"pred": "不相似", "prob": 0.1880006, "logit": -0.7414489}
        ]
    }

通用问答匹配模型

  • 模型介绍

    PAI-ModelHub提供了BERT匹配模型进行通用问题或答案匹配,输入为双句,该模型的结构与通用文本匹配模型相同。

  • 输入格式
    输入数据为JSON格式字符串,包含idfirst_sequencesecond_sequencesequence_length字段。其中first_sequence对应的value为问题文本字符串,second_sequence对应的value为答案文本字符串,sequence_length对应文本的截断长度,最大为512。
    {
        "id": "该文本的ID",
        "first_sequence": "问题文本字符串",
        "second_sequence": "答案文本字符串",
        "sequence_length": 128
    }
  • 输出格式
    输出数据为JSON格式字符串,包含的字段如下表所示。
    字段 描述 Shape Type
    id 输入的文本ID。 [] STRING
    output 对应标签的结果。 [2] LIST
    其中output为一个列表,每个元素为一个DICT。每个元素的格式如下。
    字段 描述 Shape Type
    pred 模型输出的标签。标签体系包括匹配不匹配 [] STRING
    prob 对应标签概率。 [] FLOAT
    logit 对应标签Logit。 [] FLOAT
  • 示例
    例如,为该模型输入如下测试数据。
    {
        "id": "1662",
        "first_sequence": "牛津大学是什么时候创立的?",
        "second_sequence": "虽有记录证实牛津的教学始于1096年,但至今仍不清楚大学正式的创办日子。",
        "sequence_length": 64
    }
    系统输出如下结果。
    {
        "id": "1662", 
        "output": [{"pred": "匹配", "prob": 0.9896072, "logit": 2.271925},
                   {"pred": "不匹配", "prob": 0.01039288, "logit": -2.284262}]}
    }

中文基础NER模型

  • 模型介绍
    PAI-ModelHub提供了BERT序列标注模型进行中文基础命名实体识别(NER),该模型的结构如下图所示。序列标注
  • 输入格式
    输入数据为JSON格式字符串,包含idfrist_sequencesequence_length字段。其中frist_sequence对应的value为待标注的文本字符串,sequence_length对应文本的截断长度(最大为512)。
    {
      "id": "该文本的ID",
      "first_sequence": "待标注的文本字符串",
      "sequence_length": 128
    }
  • 输出格式
    输出数据为JSON格式字符串,包含的字段如下表所示。
    字段 描述 Shape Type
    id 输入的文本ID。 [] STRING
    output 对应标签的结果。 [2] LIST
    其中output为一个列表,每个元素为一个DICT。每个元素的格式如下。
    字段 描述 Shape Type
    word 原始文本中的人名、地名或组织名。 [] STRING
    tag 实体类别,取值包括PERLOCORG,分别表示人名、地名及组织名。 [] STRING
    start 字的开始位置。 [] INT
    end 字的结束位置。 [] INT
  • 示例
    例如,为该模型输入如下测试数据。
    {
        "id": "1662",
        "first_sequence": "古城保定,有一家梁连起创立的玉兰香大酒店,以其高质量的服务、物美价廉的菜肴而享誉四方。",
        "sequence_length": 128
    }
    系统输出如下结果。
    {
        "id": "1662", 
        "output": [
            {"word": "保定", "tag": "LOC", "start": 2, "end": 4}, 
            {"word": "梁连起", "tag": "PER", "start": 8, "end": 11}, 
            {"word": "玉兰香大酒店", "tag": "ORG", "start": 14, "end": 20}
        ]
    }

BERT文本向量化模型

  • 模型介绍
    除了对BERT预训练完成的模型进行Finetune外,BERT生成的向量本身也很有价值。例如,将BERT作为一个特征提取器,输入一个文本序列,输出一个向量序列。还可以先对CLS输出的向量进行Dense,再将该向量作为整个句子的句向量。特征提取当用户给定一个句子S,该组件会自动将其分词为Subtoken形式S = [CLS, tok1, tok2, ..., tokN, SEP],并给出以下三种类型结果:
    • pool_output:对句子进行编码后的向量,即图中的C'
    • first_token_output:即图中的C
    • all_hidden_outputs:即图中的[C, T1, T2, ..., TN, TSEP]
  • 输入格式
    输入数据为JSON格式字符串,包含如下字段:
    • id:文本ID。
    • first_sequence:对应的value为第一个文本字符串。
    • second_sequence:对应的value为第二个文本字符串(可以为空)。
    • sequence_length:对应文本的截断长度,最大为512。
    {
        "id": "该文本的ID",
        "first_sequence": "第一个文本字符串",
        "second_sequence": "第二个文本字符串(可以为空)",
        "sequence_length": 128
    }
  • 输出格式
    输出数据为JSON格式字符串,包含的字段如下表所示。
    字段 描述 Shape Type
    pool_output 英文逗号(,)分隔的768维向量,表示对句子进行编码后的向量,即图中的 C'。 [] STRING
    first_token_output 英文逗号(,)分隔的768维向量,即图中的C。 [] STRING
    all_hidden_outputs 768*sequence_length维向量,其中向量由英文逗号(,)分隔,序列由英文分号(;)分隔,即图中的[C, T1, T2, ..., TN, TSEP] [] STRING
  • 示例
    例如,为该模型输入如下测试数据。
    {
        "id": "1667",
        "first_sequence": "双十一花呗提额在哪",
        "second_sequence": "",
        "sequence_length": 128
    }
    系统输出如下结果。
    {
        "id": "1667",
        "pool_output": "0.999340713024,...,0.836870908737",
        "first_token_output": "0.789340713024,...,0.536870908737",
        "all_hidden_outputs": "0.999340713024,...,0.836870908737;...;0.899340713024,...,0.936870908737"
    }

BERT英文文本向量化模型

  • 模型介绍

    该模型的结构与BERT文本向量化模型相同,详情请参见BERT文本向量化模型

  • 输入格式
    输入数据为JSON格式字符串,包含如下字段:
    • id:文本ID。
    • first_sequence:对应的value为第一个英文文本字符串。
    • second_sequence:对应的value为第二个英文文本字符串(可以为空)。
    • sequence_length:对应文本的截断长度,最大为512。
    {
        "id": "该文本的id",
        "first_sequence": "第一个英文文本字符串",
        "second_sequence": "第二个英文文本字符串(可以为空)",
        "sequence_length": 128
    }
  • 输出格式
    输出数据为JSON格式字符串,包含的字段如下表所示。
    字段 描述 Shape Type
    pool_output 英文逗号(,)分隔的768维向量,表示对句子进行编码后的向量,即模型结构图中的 C'。 [] STRING
    first_token_output 英文逗号(,)分隔的768维向量,即模型结构图中的C。 [] STRING
    all_hidden_outputs 768*sequence_length维向量,其中向量由英文逗号(,)分隔,序列由英文分号(;)分隔,即模型结构图中的[C, T1, T2, ..., TN, TSEP] [] STRING
  • 示例
    例如,为该模型输入如下测试数据。
    {
        "id": "1667",
        "first_sequence": "This is an example of natural language processing",
        "second_sequence": "",
        "sequence_length": 128
    }
    系统输出如下结果。
    {
        "id": "1667",
        "pool_output": "-0.044920005,...,-0.19798079",
        "first_token_output": "-0.5011729,...,-0.19798079",
        "all_hidden_outputs": "-0.5011729,...,-0.19798079;...;-0.36818486,...,0.10332998"
    }