pytorch---情感分析

2023-05-16

前言:

  这个系列一共有8个部分。主要参考了github上的几个代码。

  使用工具有torchtext,pytorch。

  数据集主要是烂番茄电影评论数据集https://www.kaggle.com/c/sentiment-analysis-on-movie-reviews。

实验相关:

数据集处理:

  烂番茄电影评论数据集是包含了训练集和测试集,原始的句子已经通过斯坦福大学的解析器解析成为了很多短句,是数据集中的phrase ,另外提供了sentenceid可以寻找到原始的句子,情绪标签分为五个

0 - 消极
1 - 有些消极
2 - 中立
3 - 有点积极
4 - 积极

  首先先观察数据


1 import pandas as pd
2 
3 files1 = pd.read_csv("datasets/train.tsv",sep="\t")
4 files2 = pd.read_csv("datasets/test.tsv",sep="\t")
5 files1.head(5)
6 files2.head(5)  

train_datatest_data

利用torchtext构建数据集

import torchtext
from torchtext import data,datasets
train_data = data.TabularDataset(
        path='./datasets/train.tsv',format='tsv',
        skip_header=True,
        fields = [('PhraseId', None),('SentenceId', None),('Phrase', TEXT),('Sentiment',LABEL)])
test_data = data.TabularDataset(
        path='./datasets/test.tsv',format='tsv',
        skip_header=True,
        fields = [('PhraseId', None),('SentenceId', None),('Phrase', TEXT)])

import random

train_data, valid_data = train_data.split(random_state = random.seed(10))

 构造词典和batch


from torchtext.vocab import GloVe
from torchtext import data


TEXT.build_vocab(train_data, vectors=GloVe(name='6B', dim=300))
LABEL.build_vocab()

BATCH_SIZE = 64

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') train_iterator, valid_iterator, test_iterator = data.BucketIterator.splits( (train_data, valid_data, test_data), batch_size = BATCH_SIZE, device = device)  

   

构建模型:

使用最简单的RNN,如下

 


import torch.nn as nn

class RNN(nn.Module):
    def __init__(self, vocab_size, embedding_dim, hidden_dim, output_dim):
        
        super().__init__()
        
        self.embedding = nn.Embedding(vocab_size, embedding_dim)
        
        self.rnn = nn.RNN(embedding_dim, hidden_dim,frist_batch=True)
        
        self.fc = nn.Linear(hidden_dim, output_dim)
        
    def forward(self, text):
        
        embedded = self.embedding(text).permute(1,0,2)  

     output, hidden = self.rnn(embedded) 
  
     return self.fc(hidden)

import torch.optim as optim
import torch.nn.functional as F

model = RNN()
model.train()
optimizer = optim.Adam(model.parameters(), lr=0.01)
loss_funtion = F.cross_entropy

for epoch in range(2):
  for batch in train_iterator:
    optimizer.zero_grad()
    predicted = model(batch.Phrase)

    loss = loss_funtion(predicted, batch.Sentiment)
    loss.backward()
    optimizer.step()


  

 

 不怎么会写,后面补充完。。。为啥别人的博客写的那么好!!!

转载于:https://www.cnblogs.com/laohejb/p/11131601.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pytorch---情感分析 的相关文章

随机推荐

  • iOS开发基础篇--CAShapeLayer的strokeStart和strokeEnd属性

    一 案例演示 最近有一个小需求 xff0c 就是要做一个圆形进度条 xff0c 大概样子如下 xff1a 1 gif 在不知道有CAShapeLayer的strokeStart和strokeEnd属性的时候 xff0c 我采取的方法就是实时
  • 排序算法——选择排序法(Select Sorting)

    选择排序 xff08 Select Sorting xff09 基本介绍 选择排序也属于内部排序法 xff0c 是从预排序的数据中 xff0c 按指定的规则选出某一元素 xff0c 再依规定交换位置后达到排序的目的 选择排序思想 选择排序
  • 面试时,你被问到过 TCP/IP 协议吗?

    前言 精通 TCP IP xff0c 熟练使用 Socket 进行网路编程 看到这句话 xff0c 有没有感到很熟悉呀 xff1f 相信很多人在投递简历的时候都看到过这条要求 xff0c 很多人会觉得我们在实际开发中一般用不到这些知识 xf
  • Storyboard使用TableView进行页面跳转传值

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 场景 StoryBoard中 A 界面 TableView B界面 明细页面 A amp B通过Cell的Section Action事件进行页面跳转 Controller
  • jsp九大内置对象和四种属性范围介绍

    一般对象需要实例化才可以调用 xff0c 而JSP的内置对象是不用实例化就可以直接调用的对象 总共有9个 xff0c 对应如下表 xff1a 序号 对象 类型 1 pageContext javax servlet jsp PageCont
  • Android Lint扫描规则说明(一)

    主要内容 对Android Studio支持的六类Android Lint规则 xff0c 本文主要对Accessibility 和 Internationalization 两中类型所包含的14个项的说明 xff0c 主要内容都是文档翻译
  • openstack 构建availability-zone

    首先介绍一下的的环境 xff1a manager节点的服务 xff1a keystone xff0c mysql xff0c nova所有组件 xff0c glance xff0c quantum server xff0c nova com
  • ubuntu/debian终端不支持中文解决办法

    为什么80 的码农都做不了架构师 xff1f gt gt gt aptitude install locales dpkg reconfigure locales 配置编码进入选择 xff1a 空格键是选择 xff0c 不是ENTER xf
  • PHP十进制数字转换为26进制字母函数

    很久以前为导出EXCEL写过一个字母累加的函数 xff0c 今天追加一个数字转为字母的 也就是十进制转26进制 1234567891011121314151617 for i 61 1 i lt 200 i 43 43 echo i 39
  • SVG.js 元素操作整理(一)

    一 属性操作Attributes var draw 61 SVG 39 svg1 39 size 300 300 attr 属性操作 设置属性的值 var rect 61 draw rect 100 100 rect attr 39 x 3
  • JS 比较两个数组是否相等 是否拥有相同元素

    Javascript怎么比较两个数组是否相同 xff1f JS怎么比较两个数组是否有完全相同的元素 xff1f Javascript不能直接用 61 61 或者 61 61 61 来判断两个数组是否相等 xff0c 无论是相等还是全等都不行
  • Win11 安卓子系统安装过程

    1 环境要求 xff1a 系统为windows 11版本为22000 xx或者以上版本 xff1b 建议系统内存为16G或者以上 xff1b 2 安装windows虚拟化支持 功能 进入设置 应用 可选功能 更多 Windows 功能 xf
  • java 取小数点后两位 不四舍五入,怎么做

    java 取小数点后两位 不四舍五入 怎么做 正常版 正常版 import java text DecimalFormat import java math RoundingMode DecimalFormat formater 61 ne
  • 华为硬件研发笔试题

    华为硬件笔试题1 一 选择 13个题目 没有全部抄下来 涉及的课程有电路 模拟电路 数字电路 信号与系统 微机原理 网络 数字信号处理 1 微分电路 2 CISC RISC 3 数据链路层 二 填空 10个题目 没有全部抄下来 涉及的课程有
  • es6数组去重(连重复的对象也可以去掉)

    1 xff0c 去除简单类型 ES6中新增了Set数据结构 xff0c 类似于数组 xff0c 但是 它的成员都是唯一的 xff0c 其构造函数可以接受一个数组作为参数 xff0c 如 xff1a span class hljs built
  • MySQL中varchar,varbinary的区别

    2019独角兽企业重金招聘Python工程师标准 gt gt gt MySQL中varchar xff0c varbinary的区别 varchar是可变长度字符类型 如果对应的数据库排序规则是utf8 general ci xff0c 那
  • 是谁发明了光纤?光纤的发明发展历史

    一 光纤通信的发展历史 1880年 xff0c 亚历山大 贝尔Alexander Graham Bell发明了 光话机 1887年 xff0c 英国科学家Charles Vernon Boys在实验室里拉出了第一条光纤 1938年 xff0
  • vs 2010 专业版 密钥

    YCFHQ 9DWCY DKV88 T2TMH G7BHP 转载于 https www cnblogs com daretodream archive 2013 04 02 2995147 html
  • 公历,阴历转换

    公历 xff0c 阴历转换 static inline void ValidCtrCheck ThsDivineCalendar new ThsDivineCalendar NULL fastcall ThsDivineCalendar T
  • pytorch---情感分析

    前言 xff1a 这个系列一共有8个部分 主要参考了github上的几个代码 使用工具有torchtext xff0c pytorch 数据集主要是烂番茄电影评论数据集https www kaggle com c sentiment ana