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

news2024/11/20 15:31:20

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

       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

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

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

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

相关文章

鸡兔同笼问题:利用Scratch C/C++ Python解决

文章目录: 一:问题 二:解决办法 1.通过Scratch解决 2.通过C/C解决 3.通过Python解决 一:问题 该问题大约在1500年前的《孙子算经》中就有记载:“今有雉兔同笼,上有三十五头,下有九十四足&…

【数字图像处理】改变图像灰度级别

改变图像灰度级别 首先,对原始图像 O O O进行灰度级量化: q int ⁡ ( O 2 i ) 2 i , q\operatorname{int}\left(\frac{O}{2^{i}}\right) \times 2^{i}, qint(2iO​)2i, 灰度级别256,128,64,32,16,8&…

百度蜘蛛池,权重蜘蛛池,泛站蜘蛛池,shell蜘蛛池-权重蜘蛛池

蜘蛛池的作用及其类型 蜘蛛池的主要作用是加速搜索引擎蜘蛛对网站链接的爬取,从而实现快速收录。使用权重蜘蛛池可以提高搜索引擎蜘蛛对网站链接的权重评价,实现秒收效果和发布外链的目的。常见的蜘蛛池有百度蜘蛛池、搜狗蜘蛛池和谷歌蜘蛛池等。 本文…

blog-engine-06-pelican 静态网站生成 windows11 安装实战笔记

拓展阅读 blog-engine-01-常见博客引擎 jekyll/hugo/Hexo/Pelican/Gatsby/VuePress/Nuxt.js/Middleman 对比 blog-engine-02-通过博客引擎 jekyll 构建 github pages 博客实战笔记 blog-engine-02-博客引擎jekyll-jekyll 博客引擎介绍 blog-engine-02-博客引擎jekyll-jekyl…

python安装与使用

1安装 1.0下载 从官网下载安装包欢迎来到 Python.orghttps://www.python.org/ 1.1安装 双击安装包 将 图中选项勾选 之后如图 在点击 等待安装,安装之后关闭(Close) 2实现第一个python程序 2.0打开python运行环境 安装之后在开始菜单…

使用小皮【phpstudy】运行Vue+MySql项目

现在的情况是我扒到了一个开源的项目,现在想要实现一下前端对应的功能,后端是完备的,但是需要调用数据库将数据跑起来,这里可以使用到MySql数据库,这里我还发现了一个比较好用的软件小皮【phpStudy】 官网 一 安装软件…

LabVIEW智能家居安防系统

LabVIEW智能家居安防系统 随着科技的飞速发展和人们生活水平的不断提升,智能家居系统以其便利性和高效性,逐渐成为现代生活的新趋势。智能家居安防系统作为智能家居系统的重要组成部分,不仅能够提高家庭的安全性,还能为用户提供更…

Kubernetes示例yaml:1. service-deployment.yaml

service-deployment.yaml 示例 apiVersion: apps/v1 kind: Deployment metadata:name: example-plusnamespace: aaaalabels:app: example-prdapp_unit: AAAA-EXAMPLE spec:replicas: 2selector:matchLabels:app: example-prdtemplate:metadata:labels:app: example-prdapp_uni…

Leetcode 3.26

Leetcode Hot 100 一级目录1.每日温度 堆1.数组中的第K个最大元素知识点:排序复杂度知识点:堆的实现 2.前 K 个高频元素知识点:优先队列 一级目录 1.每日温度 每日温度 思路是维护一个递减栈,存储的是当前元素的位置。 遍历整个…

结构体初阶+进阶 系统化的学习

结构体 什么是结构体 结构体是一种用户自定义的数据类型,可以组合多个相关值成为一个单一类型。它是由一批数据组合而成的结构型数据,结构体可以包含多个不同类型的字段,如基本数据类型、其他结构体、枚举类型等。在Rust中,结构…

Warning logs 2024-03-26

配置tomcat中的server.xml时遇到问题&#xff0c;会导致tomcat启动闪退。 server.xml文件如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <!--Licensed to the Apache Software Foundation (ASF) under one or morecontributor lice…

PHPCMS v9城市分站插件

PHPCMS自带的有多站点功能&#xff0c;但是用过的朋友都知道&#xff0c;自带的多站点功能有很多的不方便之处&#xff0c;例如站点栏目没法公用&#xff0c;每个站点都需要创建模型、每个站点都需要单独添加内容&#xff0c;还有站点必须静态化。如果你内容很多这些功能当然无…

【Frida】【Android】02_JAVA层HOOK

&#x1f6eb; 系列文章导航 【Frida】【Android】01_手把手教你环境搭建 https://blog.csdn.net/kinghzking/article/details/136986950【Frida】【Android】02_JAVA层HOOK https://blog.csdn.net/kinghzking/article/details/137008446【Frida】【Android】03_RPC https://bl…

【C语言】三种方法模拟实现 strlen 函数

前言 这篇文章将要带我们去实现模拟一个stelen()函数 首先我们要知道strlen()函数的定义 strlen()定义和用法 我们先看一下strlen在cplusplus网站中的定义 链接: 点击跳转 这里我们可以知道strlen的用法 size_t strlen ( const char * str );获取字符串长度 返回 C 字符串…

【分布式】——降级熔断限流

降级&熔断&限流 ⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记仓库&#x1f449;https://github.com/A-BigTree/tree-learning-notes 个人主页&#x1f449;https://www.abigtree.top ⭐⭐⭐⭐⭐⭐ 如果可以&#xff0c;麻烦各位看官顺手点…

搭建 Apple Mac M1 stm32 开发环境

近期想学习 stm32 开发,看了些书和视频,买了开发板。开发板到了后就迫不及待的的进行尝试。由于我目前使用的电脑是 Apple M1 Pro,目前用的比较多的是 windows + keil。我先是在 mac 使用虚拟机,安装 win 环境来使用,但是我分别使用了 VMware 和 parallels desktop ,keil…

机器学习笔记(4)—逻辑回归(Logistic Regression)

文章目录 逻辑回归&#xff08;Logistic Regression&#xff09;分类问题假说表示判定边界代价函数简化的成本函数和梯度下降多类别分类&#xff1a;一对多 逻辑回归&#xff08;Logistic Regression&#xff09; 分类问题 分类问题中&#xff0c;我们要预测的变量 y y y是一…

论文阅读笔记——Rethinking Pointer Reasoning in Symbolic Execution

文章目录 前言Rethinking Pointer Reasoning in Symbolic Execution12.1、基本情况概述12.2、摘要12.3、引言12.4、方法12.4.1、基本版本12.4.1.1、内存加载和存储12.4.1.2、状态合并 12.4.2、改进12.4.2.1、地址范围选择12.4.2.2、内存清理12.4.2.3、符号化的未初始化内存12.4…

RelayAttention:让大型语言模型更高效地处理长提示符

一、前言 虽然大型语言模型 (LLM) 近年来取得了非常显著的进展&#xff0c;也在各种自然语言处理任务中展现出强大的能力。然而&#xff0c;LLM 的在实际的应用落地层面也面临着一些实际挑战&#xff0c;其中之一就是效率和成本问题&#xff0c;导致了在垂直行业实际落地的应用…

网际协议 - IP

文章目录 目录 文章目录 前言 1 . 网际协议IP 1.1 网络层和数据链路层的关系 2. IP基础知识 2.1 什么是IP地址? 2.2 路由控制 3. IP地址基础知识 3.1 IP地址定义 3.2 IP地址组成 3.3 IP地址分类 3.4 子网掩码 IP地址分类导致浪费? 子网与子网掩码 3.5 CIDR与…