下面是一个使用BertForSequenceClassification
和BertForMultipleChoice
进行句子多类别分类的示例代码:
import torch
from transformers import BertTokenizer, BertForSequenceClassification, BertForMultipleChoice
# 加载预训练的Bert模型和tokenizer
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertForSequenceClassification.from_pretrained('bert-base-uncased', num_labels=3)
# 句子多类别分类示例
input_sentence = "This is a sentence for classification."
# 对句子进行tokenize和padding
input_ids = tokenizer.encode(input_sentence, add_special_tokens=True)
attention_mask = [1] * len(input_ids)
# 将输入转换为PyTorch张量
input_ids = torch.tensor([input_ids])
attention_mask = torch.tensor([attention_mask])
# 对句子进行分类
outputs = model(input_ids=input_ids, attention_mask=attention_mask)
# 获取预测结果
predictions = torch.argmax(outputs.logits, dim=1)
print(predictions)
# 多选项分类示例
input_choices = ["This is choice 1.", "This is choice 2.", "This is choice 3."]
# 对选择进行tokenize和padding
input_ids = [tokenizer.encode(choice, add_special_tokens=True) for choice in input_choices]
attention_mask = [[1] * len(choice_ids) for choice_ids in input_ids]
# 将输入转换为PyTorch张量
input_ids = torch.tensor(input_ids)
attention_mask = torch.tensor(attention_mask)
# 对选择进行分类
outputs = model(input_ids=input_ids, attention_mask=attention_mask)
# 获取每个选择的预测结果
predictions = torch.argmax(outputs.logits, dim=1)
print(predictions)
这是一个基本的示例,使用了BertForSequenceClassification
和BertForMultipleChoice
模型进行句子多类别分类。你可以根据自己的数据集和需要进行相应的调整。