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结束时保存其当前状态,以便于后续使用。
**注意**
该示例仅供参考,可能需要根据具体任务进行调整。