Paddle上手实战——NLP经典cls任务“推特文本情感13分类”

Paddle上手实战——NLP经典cls任务“推特文本情感13分类”

实战背景介绍

数据地址:https://www.heywhale.com/home/activity/detail/611cbe90ba12a0001753d1e9/content

Twitter推文具备多重特性,首要之处在于其与Facebook的显著区别——其完全基于文本形式,通过Twitter接口可轻松注册并下载,从而便于作为自然语言处理研究所需的语料库。此外,Twitter明确规定了每篇推文的长度上限为140个字符,实际推文的长短各异,但普遍偏短,部分推文甚至仅包含一个句子或短语,这增加了对其进行情感分类标注的复杂性和挑战性。再者,推文往往具有即兴性,内容中富含情感元素,口语化表达较为普遍,缩写和网络用语频繁出现,情绪符号、新词和俚语亦屡见不鲜,这使得其与正式文本存在显著区别。因此,若采用适用于正式文本的情感分类方法对Twitter推文进行情感分析,其效果往往不尽如人意。

公众情感在多个领域,如电影评论、消费者信心、政治选举以及股票走势预测等,正日益展现出其重要的影响力。针对公共媒体内容进行情感分析,已成为分析公众情感的一项基础性任务,其重要性不言而喻。

img

准备数据集

数据集基于推特用户发表的推文数据集,并且针对部分字段做出了一定的调整,所有的字段信息请以本练习赛提供的字段信息为准
字段信息内容参考如下:

  1. tweet_id string 推文数据的唯一ID,比如test_0,train_1024
  2. content string 推特内容
  3. label int 推特情感的类别,共13种情感

其中训练集train.csv包含3w条数据,字段包括tweet_id,content,label;测试集test.csv包含1w条数据,字段包括tweet_id,content。

tweet_id,content,label
tweet_1,Layin n bed with a headache  ughhhh...waitin on your call...,1
tweet_2,Funeral ceremony...gloomy friday...,1
tweet_3,wants to hang out with friends SOON!,2
tweet_4,"@dannycastillo We want to trade with someone who has Houston tickets, but no one will.",3
tweet_5,"I should be sleep, but im not! thinking about an old friend who I want. but he's married now. damn, & he wants me 2! scandalous!",1
tweet_6,Hmmm. 
http://www.djhero.com/ is down,4
tweet_7,@charviray Charlene my love. I miss you,1
tweet_8,cant fall asleep,3

加载数据集

加载数据集

在数据分析和机器学习的项目中,加载数据集是至关重要的一步。数据集的质量、格式和完整性直接影响到后续的分析和模型训练的效果。在本章节中,我们将详细讨论如何加载数据集,并对其进行初步的处理和检查。

一、数据集来源与选择

首先,我们需要明确数据集的来源。数据集可以来自公开的数据仓库、研究机构、商业平台或者通过爬虫等方式自行获取。在选择数据集时,需要考虑数据集的可靠性、时效性、相关性和规模。对于Twitter推文这样的文本数据,我们可能需要从Twitter API或者相关的第三方数据源获取。

二、数据加载方式

数据加载的方式取决于数据的存储格式和所使用的编程环境。对于文本数据,常见的存储格式包括CSV、JSON、TXT等。在Python环境中,我们可以使用pandas库来加载这些数据。

例如,对于CSV格式的数据,可以使用以下代码加载:

import pandas as pd  
  
# 假设数据集名为'tweets.csv'  
data = pd.read_csv('tweets.csv')

对于JSON格式的数据,可以使用:

import pandas as pd  
  
# 假设数据集名为'tweets.json'  
data = pd.read_json('tweets.json')

如果数据存储在数据库中,则需要使用相应的数据库连接和查询语句来加载数据。

三、数据初步处理

加载数据后,通常需要进行一些初步的处理,包括数据清洗、缺失值处理、异常值处理等。对于Twitter推文数据,可能需要去除无关字符、标点符号、停用词等,并进行文本编码转换。

例如,我们可以使用正则表达式来去除推文中的URL和特殊字符:

import re  
  
# 定义一个函数来清洗推文  
def clean_tweet(tweet):  
    tweet = re.sub(r'http\S+', '', tweet)  # 去除URL  
    tweet = re.sub(r'[^\w\s]', '', tweet)  # 去除特殊字符  
    return tweet  
  
# 应用清洗函数到数据集中的每一行  
data['clean_tweet'] = data['tweet'].apply(clean_tweet)

四、数据检查

加载并初步处理数据后,我们需要对数据进行检查,以确保数据的完整性和准确性。这包括检查数据的行数和列数、检查是否有缺失值、检查数据的分布情况等。

# 检查数据集的形状(行数和列数)  
print(data.shape)  
  
# 检查缺失值  
print(data.isnull().sum())  
  
# 查看数据分布(例如,查看某个字段的唯一值数量)  
print(data['column_name'].nunique())

通过这些检查,我们可以对数据的整体情况有一个大致的了解,并为后续的分析和建模工作做好准备。

综上所述,加载数据集是数据分析和机器学习项目中的关键步骤。通过选择合适的数据源、使用适当的加载方式、进行初步的数据处理和检查,我们可以确保数据的质量和可用性,为后续的工作奠定坚实的基础。

本数据集实战代码

tweet_id content label
0 tweet_0 @tiffanylue i know i was listenin to bad habi... 0
1 tweet_1 Layin n bed with a headache ughhhh...waitin o... 1
2 tweet_2 Funeral ceremony...gloomy friday... 1
3 tweet_3 wants to hang out with friends SOON! 2
4 tweet_4 @dannycastillo We want to trade with someone w... 3
def read(pd_data):
    for index, item in pd_data.iterrows():       
        yield {
   'text': item['content'], 'label': item['label'], 'qid': item['tweet_id'].strip('tweet_')}
# 分割训练集、测试机
from paddle.io import Dataset, Subset
from paddlenlp.datasets import MapDataset
from paddlenlp.datasets import load_dataset

dataset = load_dataset(read, pd_data=train,lazy=False)
dev_ds = Subset(dataset=dataset, indices=[i for i in range(len(dataset)) if i % 5 == 1])
train_ds = Subset(dataset=dataset, indices=[i for i in range(len(dataset)) if i % 5 != 1])
for i in range(5):
    print(train_ds[i])
# 在转换为MapDataset类型
train_ds = MapDataset(train_ds)
dev_ds = MapDataset(dev_ds)
print(len(train_ds))
print(len(de

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/439201.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于docker安装的Jenkins实现python执行自动化测试程序

背景 通过Jenkins实现自动化测试,在全局配置中配置好后,执行构建发生如下错误 解决办法: 在Jenkins中插件管理中下载python后,回到Jenkins容器中 查找刚下载的python所在位置 到Jenkins中全局配置中修改脚本 1.可以在环境变量中定义python所在位置 2.在一下图示中进行获取…

Rust泛型与trait特性,模仿接口的实现

泛型是一个编程语言不可或缺的机制。 C 语言中用"模板"来实现泛型,而 C 语言中没有泛型的机制,这也导致 C 语言难以构建类型复杂的工程。 泛型机制是编程语言用于表达类型抽象的机制,一般用于功能确定、数据类型待定的类&#xf…

VMware Workstation安装Linux虚拟机与虚拟机克隆,特别适合搭建虚拟机集群环境,工作效率直线上升~

虚拟机 一、安装虚拟机二、克隆虚拟机三、配置静态IP地址一、安装虚拟机 设置虚拟机名称与安装位置 设置磁盘大小 配置硬件参数

Redis主从架构和管道Lua(一)

Redis主从架构 架构 Redis主从工作原理 如果为master配置了一个slave,不管这个slave是否是第一次连接上Master,它都会发送一个PSYNC命令给master请求复制数据。master受到PSYNC命令,会在后台进行数据持久化通过bgsave生成最新的 RDB快照文件,持久化期间…

Linux阻塞与非阻塞IO简介

一. 简介 阻塞与非阻塞IO是Linux驱动开发中很常见的两种设备访问模式,在编写驱动的时候,一定要考虑到阻塞和非阻塞。 本文来学习一下,什么是 Linux下的阻塞与非阻塞IO访问。 二. Linux阻塞与非阻塞IO 这里的 “IO” 并不是我们学习 STM32…

[机器视觉]halcon十二 条码识别、字符识别之字符识别

[机器视觉]halcon十二 条码识别、字符识别之字符识别 流程 获取图像-》创建模型-》查找文本-》清除模型 效果 算子 create_text_model_reader : 创建文本模型 find_text : 查找文本 get_text_result :获取文本内容 set_text_model_param : 设置文本模板…

使用Pytorch导出自定义ONNX算子

在实际部署模型时有时可能会遇到想用的算子无法导出onnx,但实际部署的框架是支持该算子的。此时可以通过自定义onnx算子的方式导出onnx模型(注:自定义onnx算子导出onnx模型后是无法使用onnxruntime推理的)。下面给出个具体应用中的…

米酒生产加工污水处理需要哪些工艺设备

米酒生产加工过程中产生的污水是一项重要的环境问题,需要采用适当的工艺设备进行处理。下面将介绍一些常用的污水处理工艺设备。 首先,生产过程中的污水需要进行初级处理,常见的设备包括格栅和砂池。格栅用于去除污水中的大颗粒杂质&#xff…

python导出数据到sqlite中

import sqlite3# 数据 data [{username: 张三, age: 33, score: 13},{username: 李四, age: 44, score: 14},{username: 王五, age: 55, score: 15}, ]# 连接SQLite数据库(如果不存在则创建) conn sqlite3.connect(test.db)# 创建游标对象 cursor con…

神经网络8-注意力机制

注意力机制(Attention Mechanism)源于对人类视觉的研究。在认知科学中,由于信息处理的瓶颈,人类会选择性地关注所有信息的一部分,同时忽略其他可见的信息。这种机制被称为注意力机制。举个例子来说,当我们观…

【排序算法】深入理解插入排序算法:从原理到实现

1. 引言 排序算法是计算机科学中的基本问题之一,它的目标是将一组元素按照某种规则进行排列。插入排序是其中一种简单但有效的排序算法,通过逐步构建有序序列来实现排序。本文将从原理、时间复杂度、应用场景、优缺点等方面深入探讨插入排序算法&#x…

keepalived原理以及lvs、nginx跟keeplived的运用

keepalived基础 keepalived的原理是根据vrrp协议(主备模式)去设定的 vrrp技术相关原理 状态机; 优先级0~255 心跳线1秒 vrrp工作模式 双主双备模式 VRRP负载分担过程 vrrp安全认证:使用共享密匙 keepalived工具介绍 keepal…

如何压缩图片大小到100kb以下?

如何压缩图片大小到100kb以下?不知道上班族小伙伴有没有发现,当我们工作中使用图片的时候经常遇到遇到一个尴尬的情况,例如我们需要网某个网站上传一张图片的时候,会被限制要求图片大小不能超过100kb,如果超过就无法进…

基于uniapp cli项目开发的老项目,运行报错path.replace is not a function

项目:基于uniapp cli的微信小程序老项目 问题:git拉取代码,npm安装包时就报错; cnpm能安装成功包,运行报错 三种方法尝试解决: 更改代码,typeof pathstring的话,才走path.replace…

JVM 面试题

1、什么情况下会发生栈内存溢出。 栈内存溢出通常发生在以下几种情况中: 函数递归调用过深: 当函数递归调用自身且没有合适的退出条件时,每次递归调用都会在栈上分配一个新的栈帧来存储局部变量、返回地址等信息。如果递归层次过多&#xff…

计讯物联山体滑坡地质灾害监测方案为灾区保驾护航

针对我国某些地区频繁爆发山体滑坡的情况,计讯物联深入调研滑坡体自动监测、无线通讯、险情预报等方面,自主研发反应快速高效、可广泛应用的山体滑坡地质灾害监测方案,全面掌握山体滑坡信息,为当地居民留有余裕的逃生时间。 计讯物…

Docker 配置阿里云镜像加速器

一、首先需要创建一个阿里云账号 二、登录阿里云账号 三、进入控制台 四、搜索容器镜像服务,并选择 五、选择镜像工具中的镜像加速 六 、配置镜像源 注意:有/etc/docker文件夹的直接从第二个命令开始

JavaSE-10(JDK8 新特性-万字总结)

新特性概述 Lambda 表达式函数式接口引用Stream API接口中的默认方法 / 静态方法新时间日期 API其他新特性 Lambda表达式/匿名函数 在 Java 中,匿名函数通常是指 Lambda 表达式。 Lambda 表达式允许你以一种简洁、紧凑的方式编写匿名函数,而不必创建…

Windows系统安装MongoDB并结合内网穿透实现公网访问本地数据库

文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 前言 MongoDB是一个基于分布式文件存储的数…

Zookeeper基础知识:成功分布式系统的关键

文章目录 一、引言二、Zookeeper介绍三、Zookeeper安装四、Zookeeper架构【重点】4.1 Zookeeper树形结构4.2 znode类型4.3 Zookeeper的监听通知机制 五、Zookeeper常用操作5.1 zk常用命令5.2 Java连接Zookeeper5.3 Java操作Znode节点5.4 监听通知机制 六、Zookeeper集群【重点】…