当前位置: 首页 > news >正文

网站群建设意见征集关键词优化排名软件怎么样

网站群建设意见征集,关键词优化排名软件怎么样,网做英文网站,成都网站营销推广公司大家好,我是微学AI,今天给大家介绍一下深度学习实战26-(Pytorch)搭建TextCNN实现多标签文本分类的任务,TextCNN是一种用于文本分类的深度学习模型,它基于卷积神经网络(Convolutional Neural Networks, CNN)实现。TextCNN的主要思想…

大家好,我是微学AI,今天给大家介绍一下深度学习实战26-(Pytorch)搭建TextCNN实现多标签文本分类的任务,TextCNN是一种用于文本分类的深度学习模型,它基于卷积神经网络(Convolutional Neural Networks, CNN)实现。TextCNN的主要思想是使用卷积操作从文本中提取有用的特征,并使用这些特征来预测文本的类别。

TextCNN将文本看作是一个一维的时序数据,将每个单词嵌入到一个向量空间中,形成一个词向量序列。然后,TextCNN通过堆叠一些卷积层和池化层来提取关键特征,并将其转换成一个固定大小的向量。最后,该向量将被送到一个全连接层进行分类。TextCNN的优点在于它可以非常有效地捕捉文本中的局部和全局特征,从而提高分类精度。此外,TextCNN的训练速度相对较快,具有较好的可扩展性.

TextCNN做多标签分类

1.库包导入

import os
import re
import numpy as np
import pandas as pd
import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import Dataset, DataLoader
from sklearn.model_selection import train_test_split
from sklearn.metrics import f1_score, precision_score, recall_score
from collections import Counter

 2.定义参数

max_length = 20
batch_size = 32
embedding_dim = 100
num_filters = 100
filter_sizes = [2, 3, 4]
num_classes = 4
learning_rate = 0.001
num_epochs = 2000
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

3. 数据集处理函数


def load_data(file_path):df = pd.read_csv(file_path,encoding='gbk')texts = df['text'].tolist()labels = df['label'].apply(lambda x: x.split("-")).tolist()return texts, labelsdef preprocess_text(text):text = re.sub(r'[^\w\s]', '', text)return text.strip().lower().split()def build_vocab(texts, max_size=10000):word_counts = Counter()for text in texts:word_counts.update(preprocess_text(text))vocab = {"<PAD>": 0, "<UNK>": 1}for i, (word, count) in enumerate(word_counts.most_common(max_size - 2)):vocab[word] = i + 2return vocabdef encode_text(text, vocab):tokens = preprocess_text(text)return [vocab.get(token, vocab["<UNK>"]) for token in tokens]def pad_text(encoded_text, max_length):return encoded_text[:max_length] + [0] * max(0, max_length - len(encoded_text))def encode_label(labels, label_set):encoded_labels = []for label in labels:encoded_label = [0] * len(label_set)for l in label:if l in label_set:encoded_label[label_set.index(l)] = 1encoded_labels.append(encoded_label)return encoded_labelsclass TextDataset(Dataset):def __init__(self, texts, labels):self.texts = textsself.labels = labelsdef __len__(self):return len(self.texts)def __getitem__(self, index):return torch.tensor(self.texts[index], dtype=torch.long), torch.tensor(self.labels[index], dtype=torch.float32)texts, labels = load_data("data_qa.csv")
vocab = build_vocab(texts)
label_set = ["人工智能", "卷积神经网络", "大数据",'ChatGPT']encoded_texts = [pad_text(encode_text(text, vocab), max_length) for text in texts]
encoded_labels = encode_label(labels, label_set)X_train, X_test, y_train, y_test = train_test_split(encoded_texts, encoded_labels, test_size=0.2, random_state=42)
#print(X_train,y_train)train_dataset = TextDataset(X_train, y_train)
test_dataset = TextDataset(X_test, y_test)train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)
test_loader = DataLoader(test_dataset, batch_size=batch_size, shuffle=False)

数据集样例:

textlabel
人工智能如何影响进出口贸易——基于国家层面数据的实证检验人工智能
生成式人工智能——ChatGPT的变革影响、风险挑战及应对策略人工智能-ChatGPT
人工智能与人的自由全面发展关系探究——基于马克思劳动解放思想人工智能
中学生人工智能技术使用持续性行为意向影响因素研究 人工智能
人工智能技术在航天装备领域应用探讨 人工智能
人工智能赋能教育的伦理省思 人工智能
人工智能的神话:ChatGPT与超越的数字劳动“主体”之辨 人工智能-ChatGPT
人工智能(ChatGPT)对社科类研究生教育的挑战与机遇 人工智能-ChatGPT
人工智能助推教育变革的现实图景——教师对ChatGPT的应对策略分析 人工智能-ChatGPT
智能入场与民主之殇:人工智能时代民主政治的风险与挑战 人工智能
国内人工智能写作的研究现状分析及启示 人工智能
人工智能监管:理论、模式与趋势 人工智能
“新一代人工智能技术ChatGPT的应用与规制”笔谈 人工智能-ChatGPT
ChatGPT新一代人工智能技术发展的经济和社会影响 人工智能-ChatGPT
ChatGPT赋能劳动教育的图景展现及其实践策略 人工智能-ChatGPT
人工智能聊天机器人—基于ChatGPT、Microsoft Bing视角分析 人工智能-ChatGPT
拜登政府对华人工智能产业的打压与中国因应 人工智能
人工智能技术在现代农业机械中的应用研究人工智能
人工智能对中国制造业创新的影响研究—来自工业机器人应用的证据 人工智能
人工智能技术在电子产品设计中的应用人工智能
ChatGPT等智能内容生成与新闻出版业面临的智能变革人工智能-ChatGPT
基于卷积神经网络的农作物智能图像识别分类研究人工智能-卷积神经网络
基于卷积神经网络的图像分类改进方法研究人工智能-卷积神经网络

 

这里设置多标签,用“-”符号隔开多个标签。

4.构建模型

class TextCNN(nn.Module):def __init__(self, vocab_size, embedding_dim, num_filters, filter_sizes, num_classes, dropout=0.5):super(TextCNN, self).__init__()self.embedding = nn.Embedding(vocab_size, embedding_dim)self.convs = nn.ModuleList([nn.Conv2d(1, num_filters, (fs, embedding_dim)) for fs in filter_sizes])self.dropout = nn.Dropout(dropout)self.fc = nn.Linear(num_filters * len(filter_sizes), num_classes)def forward(self, x):x = self.embedding(x)x= x.unsqueeze(1)x = [torch.relu(conv(x)).squeeze(3) for conv in self.convs]x = [torch.max_pool1d(i, i.size(2)).squeeze(2) for i in x]x = torch.cat(x, 1)x = self.dropout(x)logits = self.fc(x)return torch.sigmoid(logits)

5.模型训练

def train_epoch(model, dataloader, criterion, optimizer, device):model.train()running_loss = 0.0correct_preds = 0  # 记录正确预测的数量total_preds = 0  # 记录总的预测数量for inputs, targets in dataloader:inputs, targets = inputs.to(device), targets.to(device)optimizer.zero_grad()outputs = model(inputs)loss = criterion(outputs, targets)loss.backward()optimizer.step()running_loss += loss.item()# 计算正确预测的数量predicted_labels = torch.argmax(outputs, dim=1)targets = torch.argmax(targets, dim=1)correct_preds += (predicted_labels == targets).sum().item()total_preds += len(targets)accuracy = correct_preds / total_preds  # 计算准确率return running_loss / len(dataloader), accuracy  # 返回平均损失和准确率def evaluate(model, dataloader, device):model.eval()preds = []targets = []with torch.no_grad():for inputs, target in dataloader:inputs = inputs.to(device)outputs = model(inputs)preds.extend(outputs.cpu().numpy())targets.extend(target.numpy())return np.array(preds), np.array(targets)def calculate_metrics(preds, targets, threshold=0.5):preds = (preds > threshold).astype(int)f1 = f1_score(targets, preds, average="micro")precision = precision_score(targets, preds, average="micro")recall = recall_score(targets, preds, average="micro")return {"f1": f1, "precision": precision, "recall": recall}model = TextCNN(len(vocab), embedding_dim, num_filters, filter_sizes, num_classes).to(device)
criterion = nn.BCELoss()
optimizer = optim.Adam(model.parameters(), lr=learning_rate)for epoch in range(num_epochs):if epoch % 20==0:train_loss,accuracy = train_epoch(model, train_loader, criterion, optimizer, device)print(f"Epoch: {epoch + 1}, Train Loss: {train_loss:.4f}, Train Accuracy: {accuracy:.4f}")preds, targets = evaluate(model, test_loader, device)metrics = calculate_metrics(preds, targets)print(f"Epoch: {epoch + 1}, F1: {metrics['f1']:.4f}, Precision: {metrics['precision']:.4f}, Recall: {metrics['recall']:.4f}")
...
Epoch: 1821, Train Loss: 0.0055, Train Accuracy: 0.8837
Epoch: 1821, F1: 0.9429, Precision: 0.9429, Recall: 0.9429
Epoch: 1841, Train Loss: 0.0064, Train Accuracy: 0.9070
Epoch: 1841, F1: 0.9429, Precision: 0.9429, Recall: 0.9429
Epoch: 1861, Train Loss: 0.0047, Train Accuracy: 0.8837
Epoch: 1861, F1: 0.9429, Precision: 0.9429, Recall: 0.9429
Epoch: 1881, Train Loss: 0.0058, Train Accuracy: 0.8605
Epoch: 1881, F1: 0.9429, Precision: 0.9429, Recall: 0.9429
Epoch: 1901, Train Loss: 0.0064, Train Accuracy: 0.8488
Epoch: 1901, F1: 0.9429, Precision: 0.9429, Recall: 0.9429
Epoch: 1921, Train Loss: 0.0062, Train Accuracy: 0.8140
Epoch: 1921, F1: 0.9429, Precision: 0.9429, Recall: 0.9429
Epoch: 1941, Train Loss: 0.0059, Train Accuracy: 0.8953
Epoch: 1941, F1: 0.9429, Precision: 0.9429, Recall: 0.9429
Epoch: 1961, Train Loss: 0.0053, Train Accuracy: 0.8488
Epoch: 1961, F1: 0.9429, Precision: 0.9429, Recall: 0.9429
Epoch: 1981, Train Loss: 0.0055, Train Accuracy: 0.8488
Epoch: 1981, F1: 0.9429, Precision: 0.9429, Recall: 0.9429

大家可以利用自己的数据集进行训练,按照格式修改即可

http://www.ds6.com.cn/news/98525.html

相关文章:

  • 手机网站 设置网站链接提交
  • 响应式网站建设报价单设计素材网站
  • 网络公司做的网站被告图片侵权合肥做网络推广的公司
  • 辽宁省工程建设招标网seo是什么字
  • wordpress百度站长验证新网站seo
  • 网站在政务新媒体建设做网站需要什么条件
  • 网站建设后端技术全国疫情最新报告
  • 手机上怎么做自己卖菜的网站如何搜索网页关键词
  • 腾讯云做视频网站绍兴网站快速排名优化
  • 做食品网站需要什么资质吗微信软文推广怎么做
  • 个人做盈利网站百度站长平台注册
  • 网站的推广专业seo关键词优化
  • 营销型网站建设的特点网络营销产品概念
  • 做外国网站百度搜到平台外宣推广技巧
  • 新闻静态网站咋做服装市场调研报告
  • 网站开发公司广告文案关键词排名优化教程
  • 重庆网站建设总结与体会整合网络营销是什么
  • 深圳网站建设公司那家好网站优化设计的基础是网站基本要素及每个细节的优化
  • 做皮革网站seo自学网app
  • 给漫画网站做推广百度指数查询手机版app
  • 建站公司网站用什么好独立站建站平台
  • 河北建设厅网站查询完美动力培训价格表
  • linux卸载wordpress河南seo外包
  • 网站后缀意思公司网站设计与制作
  • 怎么用flash做游戏下载网站做网站公司哪家比较好
  • 公司网站 百度淘宝关键词查询工具哪个好
  • 服饰东莞网站建设电商的推广方式有哪些
  • asp.net网站项目建设公司网络推广网站
  • wordpress 标签描述绍兴seo公司
  • 高端网站制作建设网站关键词推广优化