NLP实践项目1——判断推文的负面情绪

数据来源:https://datahack.analyticsvidhya.com/contest/linguipedia-codefest-natural-language-processing-1/?utm_source=word-embeddings-count-word2veec&utm_medium=blogicon-default.png?t=O83Ahttps://datahack.analyticsvidhya.com/contest/linguipedia-codefest-natural-language-processing-1/?utm_source=word-embeddings-count-word2veec&utm_medium=blog

 导入库

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.svm import SVC
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report
from nltk.corpus import stopwords
import nltk
import renltk.download('stopwords')
stop_words = set(stopwords.words('english'))

 文本预处理

# 文本预处理函数
def preprocess_text(text):# 移除特殊字符、数字等text = re.sub(r'[^a-zA-Z\s]', '', text)# 转换为小写text = text.lower()# 去除停用词text = ' '.join([word for word in text.split() if word not in stop_words])return text

读取数据集并处理

# 读取本地CSV文件
data = pd.read_csv("F:/Sentiment analysis/Data_dictionary/train_2kmZucJ.csv")
# 删除缺失值的行
data = data.dropna(subset=['tweet', 'label'])
# 应用预处理函数到推文内容
data['tweet'] = data['tweet'].apply(preprocess_text)
# 将数据集拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(data['tweet'], data['label'], test_size=0.2, random_state=42)

 定义训练函数

#定义训练函数
def train(model,model_name):model.fit(X_train_vectorized, y_train)predictions = model.predict(X_test_vectorized)print(model_name + " Accuracy:", accuracy_score(y_test, predictions))print(classification_report(y_test, predictions))
使用TF-IDF向量化推文内容
vectorizer = TfidfVectorizer(max_features=1000)
X_train_vectorized = vectorizer.fit_transform(X_train)
X_test_vectorized = vectorizer.transform(X_test)

以朴素贝叶斯模型为例

# 以朴素贝叶斯算法为例
nb_model = MultinomialNB()
train(nb_model,"Naive Bayes")

导入预测数据集并保存预测结果

# 导入预测数据集
test= pd.read_csv("F:/Sentiment analysis/Data_dictionary/test_oJQbWVk.csv")
test_predictions = nb_model.predict(vectorizer.transform(test['tweet']))
# 将预测结果保存
results_df = pd.DataFrame({'id': test['id'],'label': test_predictions
})
results_df.to_csv("predictions.csv", index=False)
print("预测结果已保存")

完整代码为

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.svm import SVC
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report
from nltk.corpus import stopwords
import nltk
import renltk.download('stopwords')
stop_words = set(stopwords.words('english'))
# 文本预处理函数
def preprocess_text(text):# 移除特殊字符、数字等text = re.sub(r'[^a-zA-Z\s]', '', text)# 转换为小写text = text.lower()# 去除停用词text = ' '.join([word for word in text.split() if word not in stop_words])return text
# 读取本地CSV文件
data = pd.read_csv("F:/Sentiment analysis/Data_dictionary/train_2kmZucJ.csv")
# 删除缺失值的行
data = data.dropna(subset=['tweet', 'label'])
# 应用预处理函数到推文内容
data['tweet'] = data['tweet'].apply(preprocess_text)
# 将数据集拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(data['tweet'], data['label'], test_size=0.2, random_state=42)#定义训练函数
def train(model,model_name):model.fit(X_train_vectorized, y_train)predictions = model.predict(X_test_vectorized)print(model_name + " Accuracy:", accuracy_score(y_test, predictions))print(classification_report(y_test, predictions))# 使用TF-IDF向量化推文内容
vectorizer = TfidfVectorizer(max_features=1000)
X_train_vectorized = vectorizer.fit_transform(X_train)
X_test_vectorized = vectorizer.transform(X_test)
# 以朴素贝叶斯算法为例
nb_model = MultinomialNB()
train(nb_model,"Naive Bayes")
# 导入预测数据集
test= pd.read_csv("F:/Sentiment analysis/Data_dictionary/test_oJQbWVk.csv")
test_predictions = nb_model.predict(vectorizer.transform(test['tweet']))
# 将预测结果保存
results_df = pd.DataFrame({'id': test['id'],'label': test_predictions
})
results_df.to_csv("predictions.csv", index=False)
print("预测结果已保存")

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FPGA开发时,什么情况下使用BRAM,什么情况下使用DRAM

DRAM:Distributed RAM,DRAM是用逻辑单元拼出来的。 BRAM:Block RAM,BRAM是fpga中定制的ram资源。 较大的存储应用,建议用block ram ; 零星的小ram,一般就用distributed ram。但这只是个一般原则&#xff0…

Linux中exec命令和xargs命令的使用

文章目录 exec基本用法选项实用示例 xargs基本用法选项实用示例 exec 在Linux系统中,xargs是一个非常有用的命令行工具,它能够将标准输入数据转化为命令行参数。xargs可以读取来自标准输入的数据,并将其作为参数传递给其他命令。以下是一些x…

别名联想路径,前端项目输入@/自动出提示目录和文件

如果在引入文件时,想要输入/后自动提示目录该如何做呢? 1.在项目的根目录下新增jsconfig.json文件 注意:一定得是根目录下,这个文件是个固定的名字,vscode在启动的时候会自动读取这个配置文件。 2.添加json格式的配置项…

反射、动态代理、SPI机制在RPC框架中应用

Java反射的理解 Java 反射机制是在运行状态中,对于任意一个类,都能够知道这个类中的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 Java 语…

【解惑】如何用python输出“1024“

要在Python中输出字符串“1024”,可以使用简单的 print() 函数。以下是实现这个功能的基本代码示例: # 输出字符串"1024" print("1024")代码解释: print() 函数用于将指定内容输出到控制台。在 print() 中使用双引号或…

Cesium基础-(Viewer)

1. Viewer 构造参数介绍 Cesium中的Viewer是用于显示和控制3D场景的核心组件。它提供了创建和管理3D地球模型、加载图像覆盖物、设置相机位置和方向以及处理用户输入等功能。Viewer可以看作是一个带有多种功能的可交互的三维数字地球容器,是任何Cesium应用程序的基…

利用Arcgis进行沟道形态分析

在做项目的时候需要学习到水文分析和沟道形态分析的学习,所以自己摸索着做了下面的工作和内容。如有不对请多指正!! 一、沟道形态分析概述 沟道形态分析是水文分析的一个重要方面,用于研究河流的形态和特征。沟道形态分析可以帮助…

Java 用正则表达式解析日期通配符

定时作业的执行时间配置在数据库里,比如“****-**-05 05:00:00”表示每个月的五日凌晨五点,"****-**** 03:00:00" 表示为每日的凌晨3点执行。 即根据系统的时间,解析两种格式 :1.每个月特定的一天 2.每天特定的时间 im…

python编程-模块与包

目录 一、模块 1. 模块的概念和作用 代码复用的深入理解 命名空间隔离的更多示例 2. 模块的创建和结构 变量定义的细节 函数定义的拓展 类定义的深化 3. 模块的导入和使用 import语句 from...import语句 import语句的更多注意事项 from...import语句的深入探讨 二…

C# 企业微信机器人推送消息 windows服务应用程序的使用

C# 企业微信机器人推送消息 先添加一个机器人! 然后查看机器人就可以得到一个 webhook 特别特别要注意:一定要保护好机器人的webhook地址,避免泄漏! 然后开始写代码 ,只需要httpPost 调用一下这个地址就可以发送消息了。 首先我…

JavaSE:16、Java IO

学习 资源1 学习资源 2 1、文件字节流 import java.io.*;import java.util.*;public class Main {public static void main(String[] args) {//try-with-resource语法,自动closetry(FileInputStream file new FileInputStream("E:/text.txt")) {System.out.prin…

Z-BlogPHP显示错误Undefined array key 0 (set_error_handler)的解决办法

今天打开博客的时候,意外发现页面,打开均显示错误:Undefined array key 0 (set_error_handler)。 博客程序采用的是Z-BlogPHP。百度了一圈没有找到解决办法,在官方论坛里也没找到解决办法。 于是开始自己排查原因。我服务器采用…

【vue3|第29期】Vue3中的插槽:实现灵活的组件内容分发

日期:2024年10月24日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉在这里插入代码片得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不…

【分立元件】低阻值电阻器的趋势(Face down type)

低阻值电阻器不仅可正确显示电阻器的阻值,还是小型、大功率产品或散热性优良的产品所必不可少的。 为了应对大功率或提高散热性,一般使用较大贴片尺寸的产品或长边电极型产品。 但是,如果贴片尺寸变大,就需要一定的贴装空间,还会减弱温度循环试验强度。 长边电极型…

利用Docker搭建一套Mycat2+MySQL8一主一从、读写分离的最简单集群(保姆教程)

文章目录 1、Mycat介绍1.1、mycat简介1.2、mycat重要概念1.3、Mycat1.x与Mycat2功能对比1.2、主从复制原理 2、前提准备3、集群规划4、安装和配置mysql主从复制4.1、master节点安装mysql8容器4.2、slave节点安装mysql8容器4.2、配置主从复制4.3、测试主从复制配置 5、安装mycat…

使用pandas进行数据分析

文章目录 1.pandas的特点2.Series2.1新建Seriws2.2使用标签来选择数据2.3 通过指定位置选择数据2.4 使用布尔值选择数据2.5 其他操作2.5.1 修改数据2.5.2 统计操作2.5.3 缺失数据处理 3.DataFrame3.1 新建 DataFrame3.2 选择数据3.2.1 使用标签选择数据3.2.2 使用 iloc 选择数据…

yolov11的onnx模型C++ 调用

yolov11的onnx模型C调用 效果图一、python调用二、onnx模型导出三、python的onnx调用调用检测模型调用分割模型 四、C的onnx模型调用五 、视频流的检测后续 效果图 一、python调用 本文只记录生成的yolov11模型如何调用,其他可参考各种yolov11博客 模型下载&#x…

万年历制作

#include<stdio.h> int main() { int year0, month0, day0, y0, m0&#xff1b; scanf_s("%d %d", &year,&month); //判断闰年 for(y1900;y<year;y) { if ((y % 4 0 && y % 100 ! 0) || y % 400 0) …

redis内存打满了怎么办?

1、设置maxmemory的大小 我们需要给 Redis设置maxmemory的大小&#xff0c;如果不设置的话&#xff0c;它会受限于系统的物理内存和系统对内存的管理机制。 2、设置内存的淘汰策略 内存的淘汰策略分为 8 种&#xff0c;从淘汰范围来说分为从所有的key中淘汰和从设置过期时间…

C语言[求x的y次方]

C语言——求x的y次方 这段 C 代码的目的是从用户输入获取两个整数 x 和 y &#xff0c;然后计算 x 的 y 次幂&#xff08;不过这里有个小错误&#xff0c;实际计算的是 x 的 (y - 1) 次幂&#xff0c;后面会详细说&#xff09;&#xff0c;最后输出结果。 代码如下: #include…