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

2024-03-08 07:20

本文主要是介绍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_idcontentlabel
0tweet_0@tiffanylue i know i was listenin to bad habi...0
1tweet_1Layin n bed with a headache ughhhh...waitin o...1
2tweet_2Funeral ceremony...gloomy friday...1
3tweet_3wants to hang out with friends SOON!2
4tweet_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_datasetdataset = 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

这篇关于Paddle上手实战——NLP经典cls任务“推特文本情感13分类”的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/786418

相关文章

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

使用Python实现文本转语音(TTS)并播放音频

《使用Python实现文本转语音(TTS)并播放音频》在开发涉及语音交互或需要语音提示的应用时,文本转语音(TTS)技术是一个非常实用的工具,下面我们来看看如何使用gTTS和playsound库将文本... 目录什么是 gTTS 和 playsound安装依赖库实现步骤 1. 导入库2. 定义文本和语言 3

如何使用Python实现一个简单的window任务管理器

《如何使用Python实现一个简单的window任务管理器》这篇文章主要为大家详细介绍了如何使用Python实现一个简单的window任务管理器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 任务管理器效果图完整代码import tkinter as tkfrom tkinter i

Python实现常用文本内容提取

《Python实现常用文本内容提取》在日常工作和学习中,我们经常需要从PDF、Word文档中提取文本,本文将介绍如何使用Python编写一个文本内容提取工具,有需要的小伙伴可以参考下... 目录一、引言二、文本内容提取的原理三、文本内容提取的设计四、文本内容提取的实现五、完整代码示例一、引言在日常工作和学

Python实战之屏幕录制功能的实现

《Python实战之屏幕录制功能的实现》屏幕录制,即屏幕捕获,是指将计算机屏幕上的活动记录下来,生成视频文件,本文主要为大家介绍了如何使用Python实现这一功能,希望对大家有所帮助... 目录屏幕录制原理图像捕获音频捕获编码压缩输出保存完整的屏幕录制工具高级功能实时预览增加水印多平台支持屏幕录制原理屏幕

Spring Boot 集成 Quartz 使用Cron 表达式实现定时任务

《SpringBoot集成Quartz使用Cron表达式实现定时任务》本文介绍了如何在SpringBoot项目中集成Quartz并使用Cron表达式进行任务调度,通过添加Quartz依赖、创... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir

Spring Boot中定时任务Cron表达式的终极指南最佳实践记录

《SpringBoot中定时任务Cron表达式的终极指南最佳实践记录》本文详细介绍了SpringBoot中定时任务的实现方法,特别是Cron表达式的使用技巧和高级用法,从基础语法到复杂场景,从快速启... 目录一、Cron表达式基础1.1 Cron表达式结构1.2 核心语法规则二、Spring Boot中定

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言