🚀 日语自然语言推理(NLI)交叉编码器
本模型是用于日语自然语言推理的交叉编码器,基于特定数据集训练,能输出句子对不同标签的得分,还可用于零样本分类等任务。
🚀 快速开始
考虑到 JNLI 评估结果,我们推荐使用 akiFQC/bert-base-japanese-v3_nli-jsnli-jnli-jsick 进行日语自然语言推理。
本模型使用 SentenceTransformers 的 Cross-Encoder 类进行训练,基于 tohoku-nlp/bert-base-japanese-v3 构建。
✨ 主要特性
- 基于特定数据集训练,可对给定句子对输出对应标签的得分。
- 支持多种使用方式,包括使用预训练模型和直接使用 Transformers 库。
- 可用于零样本分类任务。
📦 安装指南
文档未提及具体安装步骤,可参考相关库(SentenceTransformers、Transformers)的官方文档进行安装。
💻 使用示例
基础用法
预训练模型的使用方式如下:
from sentence_transformers import CrossEncoder
model = CrossEncoder('akiFQC/bert-base-japanese-v3_nli-jsnli')
scores = model.predict([('男はピザを食べています', '男は何かを食べています'), ('黒いレーシングカーが観衆の前から発車します。', '男は誰もいない道を運転しています。')])
label_mapping = ['entailment', 'neutral', 'contradiction',]
labels = [label_mapping[score_max] for score_max in scores.argmax(axis=1)]
高级用法
直接使用 Transformers 库(不使用 SentenceTransformers 库)的方式:
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
model = AutoModelForSequenceClassification.from_pretrained('cross-encoder/nli-deberta-v3-base')
tokenizer = AutoTokenizer.from_pretrained('cross-encoder/nli-deberta-v3-base')
features = tokenizer(['男はピザを食べています', '黒いレーシングカーが観衆の前から発車します。'], ['男は何かを食べています', '男は誰もいない道を運転しています。'], padding=True, truncation=True, return_tensors="pt")
model.eval()
with torch.no_grad():
scores = model(**features).logits
label_mapping = ['contradiction', 'entailment', 'neutral']
labels = [label_mapping[score_max] for score_max in scores.argmax(dim=1)]
print(labels)
零样本分类用法
本模型还可用于零样本分类:
from transformers import pipeline
classifier = pipeline("zero-shot-classification", model='akiFQC/bert-base-japanese-v3_nli-jsnli')
sent = "Appleは先程、iPhoneの最新機種について発表しました。"
candidate_labels = ["技術", "スポーツ", "政治"]
res = classifier(sent, candidate_labels)
print(res)
📚 详细文档
训练数据
模型在 JSNLI 数据集上进行训练。对于给定的句子对,它将输出对应标签的三个得分:{0:"蕴含关系", 1:"中立关系", 2:"矛盾关系"}。
基准测试
JGLUE - JNLI 验证集准确率:0.770
📄 许可证
本项目采用 CC BY - SA 4.0 许可证。