pipeline_tag: 零样本分类
license: mit
datasets:
- xnli
language:
- fr
tags:
- camembert
- 文本分类
- 自然语言推理
- xnli
由于原版BaptisteDoyen/camembert-base-xnli模型当前返回404错误,此处提供其副本。
以下为原模型页面的说明文档。
camembert-base-xnli
模型描述
基于Camembert-base模型,在XNLI数据集的法语部分进行微调。
这是少数支持法语🇫🇷的零样本分类模型之一。
使用场景与限制
使用方法
两种使用方式:
classifier = pipeline("zero-shot-classification",
model="BaptisteDoyen/camembert-base-xnli")
sequence = "法国队今天在王子公园球场比赛"
candidate_labels = ["体育","政治","科学"]
hypothesis_template = "这段话的主题是{}。"
classifier(sequence, candidate_labels, hypothesis_template=hypothesis_template)
# 输出结果:
# {'sequence': "法国队今天在王子公园球场比赛",
# 'labels': ['体育', '政治', '科学'],
# 'scores': [0.8595073223114014, 0.10821866989135742, 0.0322740375995636]}
- 作为前提/假设检验器:
该方法用于计算P(前提|假设)的概率形式
# 加载模型和分词器
nli_model = AutoModelForSequenceClassification.from_pretrained("BaptisteDoyen/camembert-base-xnli")
tokenizer = AutoTokenizer.from_pretrained("BaptisteDoyen/camembert-base-xnli")
# 文本序列
premise = "蓝队得分很高"
hypothesis = "法国队表现优异"
# 分词并输入模型
x = tokenizer.encode(premise, hypothesis, return_tensors='pt')
logits = nli_model(x)[0]
# 舍弃"中立"维度(维度1),取"蕴含"概率(维度0)作为标签成立概率
entail_contradiction_logits = logits[:,::2]
probs = entail_contradiction_logits.softmax(dim=1)
prob_label_is_true = probs[:,0]
prob_label_is_true[0].tolist() * 100
# 输出结果
# 86.40775084495544
训练数据
训练数据采用Facebook于2018年发布的XNLI数据集法语部分。
可通过datasets库便捷获取:
from datasets import load_dataset
dataset = load_dataset('xnli', 'fr')
训练/微调过程
训练过程较为基础,使用单GPU在云端完成。
主要训练参数:
学习率 = 2e-5,采用线性学习率调度器
训练轮数 = 4
批次大小 = 12(受GPU显存限制)
权重衰减 = 0.01
最优模型指标 = "验证集准确率"
评估结果
在验证集和测试集上获得如下结果:
数据集 |
准确率 |
验证集 |
81.4 |
测试集 |
81.7 |