无名阁,只为技术而生。流水不争先,争的是滔滔不绝。

python人工智能 NLP BERT 文本分类 : 用 BERT 实现一个 NLP 文本分类 任务,代码方案分享1(图文详解)

AIGC Micheal 1年前 (2023-12-27) 303次浏览 已收录 扫描二维码
文章目录[隐藏]
python人工智能 NLP BERT 文本分类 : 用 BERT 实现一个 NLP 文本分类 任务,代码方案分享1(图文详解)

NLP BERT 文本分类

python人工智能 NLP BERT 文本分类 : 用 BERT 实现一个 NLP 文本分类 任务,代码方案分享

背景与用途

BERT(Bidirectional Encoder Representations from Transformers)是一种预训练的语言模型,它可以用于各种自然语言处理(NLP)任务,包括文本分类。文本分类是一项NLP任务,它涉及将文本数据分类到预定义的类别中。例如,我们可以使用文本分类来对新闻文章进行分类,以便将其分发给相关的读者。

代码结构

import torch
from torch.utils.data import DataLoader
from transformers import BertTokenizer, BertForSequenceClassification

# 加载数据
train_data = ...
test_data = ...

# 初始化分词器和模型
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertForSequenceClassification.from_pretrained('bert-base-uncased')

# 创建数据加载器
train_dataloader = DataLoader(train_data, batch_size=32)
test_dataloader = DataLoader(test_data, batch_size=32)

# 定义优化器和损失函数
optimizer = torch.optim.AdamW(model.parameters(), lr=2e-5)
loss_fn = torch.nn.CrossEntropyLoss()

# 训练模型
for epoch in range(3):
    for batch in train_dataloader:
        inputs = tokenizer(batch['text'], return_tensors="pt")
        outputs = model(**inputs)
        loss = loss_fn(outputs.logits, batch['label'])
        loss.backward()
        optimizer.step()
        optimizer.zero_grad()

# 评估模型
with torch.no_grad():
    for batch in test_dataloader:
        inputs = tokenizer(batch['text'], return_tensors="pt")
        outputs = model(**inputs)
        predictions = torch.argmax(outputs.logits, dim=-1)
        accuracy = (predictions == batch['label']).float().mean()
        print(f"Accuracy: {accuracy}")

代码解释

点击展开
喜欢 (0)
[]
分享 (0)
关于作者:
流水不争先,争的是滔滔不绝