StructBERT自然语言推理-中文-通用-large

我要开发同款
匿名用户2024年07月31日
109阅读

技术信息

开源地址
https://modelscope.cn/models/iic/nlp_structbert_nli_chinese-large
授权协议
Apache License 2.0

作品详情

StructBERT中文自然语言推理模型介绍

自然语言推理任务(NLI)通常指判断一对句子对(前提句,假设句)在语义上是否存在推理蕴涵关系。作为自然语言理解的一个重要组成部分,NLI专注于语义理解,是一项分类任务。 StructBERT中文自然语言推理模型是在structbert-base-chiese预训练模型的基础上,用CMNLI、OCNLI两个数据集(45.8w条数据)训练出来的自然语言推理模型。

模型描述

模型基于Structbert-large-chiese,按照BERT论文中的方式,在CMNLI、OCNLI两个数据集(45.8w条数据)上fie-tue得到。

模型结构

期望模型使用方式以及适用范围

你可以使用StructBERT中文自然语言推理模型,对通用领域的自然语言推理任务进行推理。 输入形如(前提句,假设句)的句子对数据,模型会给出该句子对应的自然语言推理标签 {"矛盾": 0, "蕴涵": 1, "中立": 2} 以及相应的概率。

如何使用

在安装完成ModelScope-lib,请参考 modelscope环境安装

推理代码范例

from modelscope.pipelies import pipelie
from modelscope.utils.costat import Tasks

sematic_cls = pipelie(Tasks.li, 'damo/lp_structbert_li_chiese-large')
sematic_cls(iput=('一月份跟二月份肯定有一个月份有.', '肯定有一个月份有'))

微调代码范例

pip istall datasets==2.1.0
import os.path as osp
from modelscope.traiers import build_traier
from modelscope.msdatasets import MsDataset
from modelscope.utils.hub import read_cofig
from modelscope.metaifo import Metrics
from modelscope.utils.costat import DowloadMode

model_id = 'damo/lp_structbert_li_chiese-large'
dataset_id = 'clue'

WORK_DIR = 'workspace'

max_epochs = 2
def cfg_modify_f(cfg):
    cfg.trai.max_epochs = max_epochs
    cfg.trai.hooks = cfg.trai.hooks = [{
            'type': 'TextLoggerHook',
            'iterval': 100
        }]
    cfg.evaluatio.metrics = [Metrics.seq_cls_metric]
    cfg['dataset'] = {
        'trai': {
            'first_sequece': 'setece1',
            'secod_sequece': 'setece2',
            'label': 'label',
        }
    }
    retur cfg


trai_dataset = MsDataset.load(dataset_id, amespace='modelscope', subset_ame='ocli', split='trai', dowload_mode=DowloadMode.FORCE_REDOWNLOAD).to_hf_dataset()
eval_dataset = MsDataset.load(dataset_id, amespace='modelscope', subset_ame='ocli', split='validatio', dowload_mode=DowloadMode.FORCE_REDOWNLOAD).to_hf_dataset()

# # remove useless case
# trai_dataset = trai_dataset.filter(lambda x: x["label"] != Noe ad x["setece"] != Noe)
# eval_dataset = eval_dataset.filter(lambda x: x["label"] != Noe ad x["setece"] != Noe)

# map float to idex
def map_labels(examples):
    map_dict = {0: "矛盾", 1: "蕴涵", 2: "中立"}
    examples['label'] = map_dict.get(it(examples['label']), "中立")
    retur examples

trai_dataset = trai_dataset.map(map_labels)
eval_dataset = eval_dataset.map(map_labels)

kwargs = dict(
    model=model_id,
    trai_dataset=trai_dataset,
    eval_dataset=eval_dataset,
    work_dir=WORK_DIR,
    cfg_modify_f=cfg_modify_f)


traier = build_traier(ame='lp-base-traier', default_args=kwargs)

prit('===============================================================')
prit('pre-traied model loaded, traiig started:')
prit('===============================================================')

traier.trai()

prit('===============================================================')
prit('trai success.')
prit('===============================================================')

for i i rage(max_epochs):
    eval_results = traier.evaluate(f'{WORK_DIR}/epoch_{i+1}.pth')
    prit(f'epoch {i} evaluatio result:')
    prit(eval_results)


prit('===============================================================')
prit('evaluate success')
prit('===============================================================')

模型局限性以及可能的偏差

模型训练数据有限,不能包含所有行业,因此在特定行业数据上,效果可能存在一定偏差。

训练数据介绍

  1. CMNLI(Chiese Multi-Gere NLI):用于判断给定的两个句子之间属于蕴涵、中立、矛盾关系。数据来源于fictio, telephoe,travel,govermet等。数据集由经过中英转化的XNLI与MNLI组成, dev由XNLI中的dev和MNLI中的matched组成,test由XNLI中的test和MNLI中的mismatched组成;trai/dev/test的数据量分别是391782/12426/13880。

  2. OCNLI(Origial Chiese Natural Laguage Iferece):原生中文自然语言推理数据集,是第一个非翻译的、使用原生汉语的大型中文自然语言推理数据集;trai/dev/test对应的数据量分别是 50k/3k/3k。

数据来源于https://github.com/CLUEbechmark/CLUEDatasetSearch

数据评估及结果

数据集 CMNLI OCNLI
Accuracy 0.8441 0.8137

相关论文以及引用信息

@article{wag2019structbert,
  title={Structbert: Icorporatig laguage structures ito pre-traiig for deep laguage uderstadig},
  author={Wag, Wei ad Bi, Bi ad Ya, Mig ad Wu, Che ad Bao, Zuyi ad Xia, Jiaga ad Peg, Liwei ad Si, Luo},
  joural={arXiv preprit arXiv:1908.04577},
  year={2019}
}

功能介绍

StructBERT中文自然语言推理模型介绍 自然语言推理任务(NLI)通常指判断一对句子对(前提句,假设句)在语义上是否存在推理蕴涵关系。作为自然语言理解的一个重要组成部分,NLI专注于语义理解,是

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论