基于word2vec+LSTM模型实现百度贴吧恶意评论预测

       大家好,我是带我去滑雪!

       Word2Vec模型能够将词语映射到高维空间中的向量表示,同时保留了词语之间的语义信息和上下文关系。这使得模型能够更好地理解评论中的语境和含义。LSTM模型是一种适用于处理序列数据的深度学习模型,能够有效处理文本数据中的变长序列。这意味着模型可以处理不同长度的评论,并且不需要固定长度的输入。基于Word2Vec和LSTM模型的恶意评论预测具有较好的效果和性能,能够有效地识别和过滤百度贴吧中的恶意评论,提升用户体验和社区环境。下面开始代码实现:

目录

(1)导入文本数据

(2)文本分词与清理

(3)训练词向量word2vec

(4)导入相关模块并划分训练集与测试集

(5)模型构建

(6)绘制图像


(1)导入文本数据

import pandas as pd
real_news = pd.read_csv('E:\工作\硕士\博客\博客79-真假新闻检测\积极评论.csv',encoding="ANSI")
fake_news = pd.read_csv('E:\工作\硕士\博客\博客79-真假新闻检测\消极评论.csv',encoding="ANSI")
#积极评论为1
df_real = pd.DataFrame(columns = ['text', 'cls'])
df_real['text'] = real_news['评论']
df_real['cls'] = 1
#恶意评论编码为0
df_fake = pd.DataFrame(columns = ['text', 'cls'])
df_fake['text'] = fake_news['评论']
df_fake['cls'] = 0
#合并评论
all_data = pd.concat([df_real, df_fake], ignore_index = True)
all_data.head(10)

输出结果展示:

(2)文本分词与清理

text_clean = pd.DataFrame([w.replace('\n' or '\'' or '\\n' or '\r' or '\0' or ' ', '') for w in all_data['text']], columns = ['clean'])
import jieba
stoplist = list(pd.read_csv('E:\工作\硕士\博客\博客79-真假新闻检测\停用词.txt',
                            names = ['w'], sep = 'aaa', encoding = 'utf-8', engine= 'python').w)
cuttxt = lambda x: [x for x in jieba.lcut(x) if x not in stoplist]
text_list = text_clean['clean'].apply(cuttxt)
text_list.head(10) 

输出结果:

0    [标题, 参与, 送, 10, 元, 京东, 卡, 尝鲜, 文库, 智能, 文档]
1       [大学, 无聊, 有木有, 想来, 抢, 演唱会, 门票, 赚点, 零花钱]
2                            [大学, 想, 休学, 活不下去]
3                                [大学生, 迷茫, 瞬间]
4                   [想, 做, app, 拉新, 宝宝, 找, 咨询]
5                                [挣钱, 一百种, 方式]
6                                 [四级, 资料, 推荐]
7                       [武汉大学, 回应, 该校, 教授, 举报]
8                          [大学, 里, 真实, 上课, 状态]
9                     [同学, 周末, 玩, steam, 单机游戏]
Name: clean, dtype: object

(3)训练词向量word2vec

from gensim.models import Word2Vec

w2vmodel = Word2Vec(vector_size=100) #训练n_dim为100
w2vmodel.build_vocab(text_list)
%time w2vmodel.train(text_list,\
                     total_examples = w2vmodel.corpus_count, epochs = 10)


def m_avgvec(words, w2vmodel):
    return pd.DataFrame([w2vmodel.wv[w]
                         for w in words if w in w2vmodel.wv]).agg("mean")
# 生成建模用矩阵
%time train_vec = pd.DataFrame([m_avgvec(s, w2vmodel) for s in text_list])
train_vec.head()

输出结果展示:

(4)导入相关模块并划分训练集与测试集

import os

from keras.preprocessing.text import Tokenizer
from keras_preprocessing.sequence import pad_sequences
from keras.preprocessing import sequence
from keras.models import Sequential
from keras.utils import np_utils
from keras.layers.core import Dropout, Activation, Lambda

from keras.layers import Dense, Embedding, LSTM
from keras.utils.np_utils import to_categorical
from keras.callbacks import ModelCheckpoint
from keras.models import load_model
from keras.optimizers import Adam


#划分训练集和测试集
from sklearn.model_selection import train_test_split

x_train_lstm, x_test_lstm, y_train_lstm, y_test_lstm = train_test_split(text_list, all_data['cls'], test_size = 0.3)

(5)模型构建

embedding_matrix = w2vmodel.wv.syn0

#使用embedding_matrix的长度作为top_words
top_words_w2v = embedding_matrix.shape[0]

#以下参数设置同上
maxlen = 100 
batch_size = 32
nb_classes = 2
nb_epoch = 10

tokenizer1 = Tokenizer(nb_words = top_words_w2v) 
tokenizer1.fit_on_texts(x_train_lstm)

sequences_train1 = tokenizer1.texts_to_sequences(x_train_lstm)
sequences_test1 = tokenizer1.texts_to_sequences(x_test_lstm)

x_train_seq1 = sequence.pad_sequences(sequences_train1, maxlen=maxlen)
x_test_seq1 = sequence.pad_sequences(sequences_test1, maxlen=maxlen)

y_train_seq1 = np_utils.to_categorical(y_train_lstm, nb_classes)
y_test_seq1 = np_utils.to_categorical(y_test_lstm, nb_classes)

#模型评价
score1 = lstm_model.evaluate(x_test_seq1, y_test_seq1, batch_size=batch_size)
print('测试集loss : {:.4f}'.format(score1[0]))
print('测试集accuracy : {:.4f}'.format(score1[1]))

 输出结果展示:

Model: "sequential_1"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 embedding_1 (Embedding)     (None, None, 100)         114700    
                                                                 
 lstm_1 (LSTM)               (None, 128)               117248    
                                                                 
 dense_1 (Dense)             (None, 2)                 258       
                                                                 
 activation_1 (Activation)   (None, 2)                 0         
                                                                 
=================================================================
Total params: 232,206
Trainable params: 232,206
Non-trainable params: 0
_________________________________________________________________
Epoch 1/10
165/165 [==============================] - 16s 85ms/step - loss: 0.6351 - accuracy: 0.6466
Epoch 2/10
165/165 [==============================] - 14s 84ms/step - loss: 0.4543 - accuracy: 0.7739
Epoch 3/10
165/165 [==============================] - 14s 84ms/step - loss: 0.3687 - accuracy: 0.8170
Epoch 4/10
165/165 [==============================] - 14s 84ms/step - loss: 0.3379 - accuracy: 0.8356
Epoch 5/10
165/165 [==============================] - 15s 91ms/step - loss: 0.3247 - accuracy: 0.8409
Epoch 6/10
165/165 [==============================] - 14s 86ms/step - loss: 0.3091 - accuracy: 0.8544
Epoch 7/10
165/165 [==============================] - 15s 90ms/step - loss: 0.3012 - accuracy: 0.8498
Epoch 8/10
165/165 [==============================] - 14s 85ms/step - loss: 0.2908 - accuracy: 0.8530
Epoch 9/10
165/165 [==============================] - 14s 83ms/step - loss: 0.2846 - accuracy: 0.8616
Epoch 10/10
165/165 [==============================] - 14s 85ms/step - loss: 0.2764 - accuracy: 0.8621
71/71 [==============================] - 1s 16ms/step - loss: 0.7499 - accuracy: 0.7668
测试集loss : 0.7499
测试集accuracy : 0.7668

(6)绘制图像

skplt.metrics.plot_precision_recall(y_test, y_lstm_w2v_prob)
plt.savefig(r'E:\工作\硕士\博客\博客79-真假新闻检测\lstm_w2v 精确率与召回率曲线.png',
            bbox_inches ="tight",
            pad_inches = 1,
            transparent = True,
            facecolor ="w",
            edgecolor ='w',
            dpi=300,
            orientation ='landscape')

输出结果展示:

需要数据集的家人们可以去百度网盘(永久有效)获取:

链接:https://pan.baidu.com/s/173deLlgLYUz789M3KHYw-Q?pwd=0ly6
提取码:2138 


更多优质内容持续发布中,请移步主页查看。

博主的WeChat:TCB1736732074

   点赞+关注,下次不迷路!

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

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

相关文章

面对淘天的升级,如果说我们要在渠道运营端口做出一些改变,最重要、最应该、最优先的是什么?|淘天商品API数据采集接口

2024年,电商真正跨入了新AI时代。 在这个新时代,工具、方法、体系……都在升级,堪称一日千里。 商家如何更好地顺应时代的变化?2024年,我给大家的建议总结为两句话。 第一句是借平台的红利; 第二句是建立自…

【VTKExamples::Points】第十期 NormalEstimation

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例NormalEstimation,并解析接口vtkPCANormalEstimation,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力…

I.MX6ULL_Linux_驱动篇(55)linux 网络驱动

网络驱动是 linux 里面驱动三巨头之一, linux 下的网络功能非常强大,嵌入式 linux 中也常常用到网络功能。前面我们已经讲过了字符设备驱动和块设备驱动,本章我们就来学习一下linux 里面的网络设备驱动。 嵌入式网络简介 网络硬件接口 首先…

【C语言】tcp_sendmsg_locked

一、讲解 tcp_sendmsg_locked 函数是 Linux 内核中实现 TCP 数据发送的一个核心函数。这个函数被调用来将用户空间的数据通过 TCP 发送出去。以下是该函数的基本工作流程的中文解释: 1. 函数初始化和检查: - 它首先检查是否使用了 TCP 零拷贝发送&am…

【微服务】Spring Boot 版本升级到 2.7.18

前言 目前项目上扫描出一些 Java 依赖的代码漏洞&#xff0c;需要对现有依赖版本升级&#xff0c;记录一下遇到的问题。 <spring-boot.version>2.3.2.RELEASE</spring-boot.version> <spring-cloud.version>Hoxton.SR9</spring-cloud.version> <s…

RuoYi-Vue-Plus(登录流程-验证码生成)

一、登录流程 1- 进入登录页面&#xff0c;调用 com.ruoyi.web.controller.common.CaptchaController 类中的 captchaImage 方法&#xff0c;生成base64的图片 以及 UUID 2- 提交 登录信息 验证码 uuid 比对 错误&#xff1a;返回错误信息&#xff0c;删除缓存的验证码 成功…

一个优秀的开源ChatGpt外壳项目(lobe-chat)

lobe-chat 简介&#xff1a; 开源、现代化设计的 ChatGPT/LLMs 聊天应用与开发框架支持语音合成、多模态、可扩展的插件系统&#xff0c;一键免费拥有你自己的 ChatGPT/Gemini/Ollama 应用。 下载lobe-chat lobe-chat项目开源地址&#xff1a;GitHub - lobehub/lobe-chat: &am…

MySQL高可用解决方案――从主从复制到InnoDB Cluster架构

2024送书福利正式起航 关注「哪吒编程」&#xff0c;提升Java技能 文末送5本《MySQL高可用解决方案――从主从复制到InnoDB Cluster架构》 大家好&#xff0c;我是哪吒。 爱奇艺每天都为数以亿计的用户提供7x24小时不间断的视频服务。通过爱奇艺的平台&#xff0c;用户可以…

查看Linux系统重启的四种基本命令

目录 前言1. last2. uptime3. journalctl4. dmesg 前言 对于排查其原因推荐阅读&#xff1a;详细分析服务器自动重启原因&#xff08;涉及Linux、Window&#xff09; 在Linux中&#xff0c;有多种命令可以查看系统重启的信息 以下是其中一些常用的命令及其解释&#xff1a; …

跨时钟域学习记录(一)

亚稳态 亚稳态是电平介于高低电平之间的一种暂时状态。在同步系统中&#xff0c;当寄存器的信号无法满足建立时间和保持时间时&#xff0c;输出端的信号就可能出现亚稳态。在异步系统中&#xff0c;亚稳态并非一定在建立时间和保持时间无法满足时出现。   受噪声、温度、电压…

ZYNQ学习之PetaLinux开发环境搭建

基本都是摘抄正点原子的文章&#xff1a;<领航者 ZYNQ 之嵌入式Linux 开发指南 V3.2.pdf&#xff0c;因初次学习&#xff0c;仅作学习摘录之用&#xff0c;有不懂之处后续会继续更新~ FTP&#xff1a;File Transfer Protocol 一、Ubuntu 和 Windows 文件互传 1.1、开启 Ubu…

HarmonyOS系统开发ArkTS常用组件文本及参数(五)

目录 一、Text组件 1、Text组件案例 二、Text组件参数 1、string字符串类型 2、Resources类型 2.1、resources中内容配置 base/element/string.json 中的内容 zh_US/element/string.json 中的内容 es_US/element/string.json 中的内容 2.2、环境适配 适配英文 适配中文…

初探Ruby编程语言

文章目录 引言一、Ruby简史二、Ruby特性三、安装Ruby四、命令行执行Ruby五、Ruby的编程模型六、案例演示结语 引言 大家好&#xff0c;今天我们将一起探索一门历史悠久、充满魅力的编程语言——Ruby。Ruby是由松本行弘&#xff08;Yukihiro Matsumoto&#xff09;于1993年发明…

计算机网络实验——学习记录二(HTTP协议)

1. Linux主机上连接互联网的网络接口是&#xff1a;ens33。 2. 在显示过滤器&#xff08;Filter&#xff09;中输入“ http.host www.zzu.edu.cn”&#xff0c;筛选出HTTP协议报文首部行中包含“ Host&#xff1a;www.zzu.edu.cn”的报文&#xff08;目的地址是Web服务器的报…

微前端——qiankun

一、微前端 微前端是指存在于浏览器中的微服务&#xff0c;其借鉴了后端微服务的架构理念&#xff0c;将微服务的概念扩展到前端。即将一个大型的前端应用拆分为成多个模块&#xff0c;每个微前端模块可以有不同的团队开发并进行管理&#xff0c;且可以自主选择框架&#xff0…

RSTP、MSTP、VRRP

RSTP协议原理与配置 问题一、STP的收敛延时&#xff08;30秒&#xff08;有BP端口情况下RP端口down&#xff09;或者50秒&#xff08;没有BP端口情况下RP端口down&#xff09;&#xff09; RSTP&#xff1a;Rapid Spanning Tree Protocol RSTP和STP从原理流程上一样&#xf…

Vivado的SIMULATION的Scope和source的层级怎么看

一、查看source source的层级可以很容易看出来&#xff0c;上面是tb文件的名称&#xff0c;下面的 axi_full_wrapper : axi_full_wrapper (axi full wrapper.v) (1)中&#xff0c;右边的那个axi_full_wrapper是模块名称&#xff0c;也是源文件名称&#xff08;因为module之后接…

天正T20V10 下载地址及安装教程

天正软件是一家专业的工程设计软件和解决方案提供商&#xff0c;主要致力于建筑、结构、暖通、给排水、电气等领域的设计和施工工程。他们开发和提供多种软件产品&#xff0c;涵盖了建筑设计、结构设计、暖通空调设计、给排水设计、电气设计等方面。 天正软件的产品具有丰富的…

Python的7大就业方向!小白适合哪个方向?学了Python能干什么?

每个程序员都有自己主要的开发语言&#xff0c;并且都认为自己的语言是最好的&#xff0c;懂的朋友在评论区里打个666~ 我的主要开发语言是Python&#xff0c;Python在我们编程圈里呢&#xff0c;是非常流行。 最近两年甚至火出了编程圈&#xff0c;越来越多不是程序员的朋友也…

Vulnhub:DR4G0N B4LL: 1

目录 信息收集 1、arp 2、nmap WEB web信息收集 gobuster 隐藏目录发现 图片隐写 ssh登录 提权 get user 系统信息收集 get root 信息收集 1、arp ┌──(root㉿ru)-[~/kali/vulnhub] └─# arp-scan -l …