当前位置:实例文章 » 其他实例» [文章]NLP数据集-glue-mnli数据集下载地址

NLP数据集-glue-mnli数据集下载地址

发布人:shili8 发布时间:2025-02-05 23:15 阅读次数:0

**NLP数据集 - GLUE-MNLI**

GLUE (Generalizability of Language Understanding Evaluation) 是一个用于评估自然语言处理模型泛化能力的基准测试。其中,MNLI(Multi-Genre Natural Language Inference)是其中的一个任务,旨在评估模型对多种文本类型之间关系推理的能力。

**数据集下载地址**

GLUE-MNLI数据集可以从以下地址下载:

* [ />* GitHub:[ />
**数据集描述**

MNLI数据集包含来自多种文本类型(包括新闻、博客文章、论坛帖子等)的句对。每个句对都有一个标签,表示它们之间的关系:

* **entailment**:第一个句子的含义是第二个句子的含义的一部分。
* **contradiction**:第一个句子的含义与第二个句子的含义相反。
* **neutral**:两个句子之间没有明显的关系。

数据集共有39,832个训练样本、9,824个验证样本和3,672个测试样本。

**代码示例**

以下是使用PyTorch和Transformers库实现MNLI任务的简单示例:

import torchfrom transformers import AutoModelForSequenceClassification, AutoTokenizer# 加载预训练模型和tokenizermodel_name = "distilbert-base-uncased"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=3)

# 定义数据加载函数def load_data(file_path):
 data = []
 with open(file_path, 'r') as f:
 for line in f.readlines():
 sentence1, sentence2, label = line.strip().split('t')
 data.append((sentence1, sentence2, int(label)))
 return data# 加载数据train_data = load_data('data/mnli_train.tsv')
valid_data = load_data('data/mnli_dev.tsv')

# 定义训练和验证函数def train(model, device, loader):
 model.train()
 total_loss =0 for batch in loader:
 input_ids, attention_mask, labels = batch input_ids, attention_mask, labels = input_ids.to(device), attention_mask.to(device), labels.to(device)
 optimizer.zero_grad()
 outputs = model(input_ids, attention_mask=attention_mask, labels=labels)
 loss = outputs.loss loss.backward()
 optimizer.step()
 total_loss += loss.item()
 return total_loss / len(loader)

def evaluate(model, device, loader):
 model.eval()
 total_correct =0 with torch.no_grad():
 for batch in loader:
 input_ids, attention_mask, labels = batch input_ids, attention_mask, labels = input_ids.to(device), attention_mask.to(device), labels.to(device)
 outputs = model(input_ids, attention_mask=attention_mask, labels=labels)
 logits = outputs.logits _, predicted = torch.max(logits, dim=1)
 total_correct += (predicted == labels).sum().item()
 return total_correct / len(loader)

# 训练模型device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
train_loader = torch.utils.data.DataLoader(train_data, batch_size=32, shuffle=True)
valid_loader = torch.utils.data.DataLoader(valid_data, batch_size=32, shuffle=False)
optimizer = torch.optim.Adam(model.parameters(), lr=1e-5)

for epoch in range(5):
 train_loss = train(model, device, train_loader)
 valid_acc = evaluate(model, device, valid_loader)
 print(f'Epoch {epoch+1}, Train Loss: {train_loss:.4f}, Valid Acc: {valid_acc:.4f}')


**注释**

*该示例使用DistilBERT作为预训练模型,使用Transformers库进行序列分类。
* 数据加载函数`load_data`用于读取MNLI数据集中的训练和验证样本。
* 训练和验证函数分别定义了训练和验证过程,其中使用PyTorch的`DataLoader`类来批量处理数据。
* 模型在每个epoch结束时保存其当前状态,以便于后续使用。

**注意**

该示例仅供参考,可能需要根据具体任务进行调整。

其他信息

其他资源

Top