基于朴素贝叶斯与 LSTM 的假新闻检测模型对比分析

news2025/5/20 4:45:41

 一、引言

  在信息爆炸的时代,假新闻的传播对社会产生了诸多负面影响。如何快速、准确地识别假新闻成为了重要的研究课题。本文将对比传统机器学习算法(朴素贝叶斯)与深度学习模型(LSTM)在假新闻检测任务中的性能表现,包括准确率、训练时间和预测时间等指标,并通过代码实现完整的建模流程。

 

 

二、数据准备与预处理

2.1 数据读取与标签设置

  本文使用的数据集包含真实新闻(True.csv)和虚假新闻(Fake.csv),通过pandas读取后为两类数据添加标签(1 代表真新闻,0 代表假新闻),并合并为完整数据集:

true_df = pd.read_csv('True.csv')
fake_df = pd.read_csv('Fake.csv')
true_df['label'] = 1
fake_df['label'] = 0
combined_df = pd.concat([true_df, fake_df], axis=0)

 

2.2 文本清洗

  通过正则表达式去除非字母数字字符,并将文本转换为小写,提升模型输入质量:

def clean_text(text):
    text = re.sub(r'[^\w\s]', '', text).lower()
    return text
combined_df['text'] = combined_df['text'].apply(clean_text)

 

2.3 数据集划分 

  按照 8:2 的比例将数据划分为训练集和测试集,确保模型评估的客观性:

X = combined_df['text']
y = combined_df['label']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

 

 

三、模型构建与训练

3.1 朴素贝叶斯模型(传统机器学习)

 

3.1.1 特征工程:TF-IDF 向量化

  通过 TF-IDF(词频 - 逆文档频率)将文本转换为数值特征,捕捉词语在文档中的重要性:

vectorizer = TfidfVectorizer()
X_train_vec = vectorizer.fit_transform(X_train)
X_test_vec = vectorizer.transform(X_test)

 

3.1.2 模型训练与评估

  使用多项式朴素贝叶斯分类器进行训练,并计算训练时间、预测时间和准确率:

clf = MultinomialNB()
clf.fit(X_train_vec, y_train)
y_pred_bayes = clf.predict(X_test_vec)
accuracy_bayes = accuracy_score(y_test, y_pred_bayes)

3.2 LSTM 模型(深度学习)

 

3.2.1 文本向量化:Tokenizer 与序列填充 

  通过Tokenizer将文本转换为整数序列,并使用固定长度(500)填充序列,适配神经网络输入:

max_words = 10000
max_sequence_length = 500
tokenizer = Tokenizer(num_words=max_words)
tokenizer.fit_on_texts(X_train)
X_train_seq = tokenizer.texts_to_sequences(X_train)
X_train_pad = pad_sequences(X_train_seq, maxlen=max_sequence_length)

 

3.2.2 模型架构设计

  构建包含嵌入层(Embedding)、两层 LSTM 层和 Dropout 正则化的神经网络,用于捕捉文本序列中的语义特征:

model = Sequential([
    Embedding(max_words, 100, input_length=max_sequence_length),
    LSTM(128, return_sequences=True),
    Dropout(0.5),
    LSTM(64),
    Dropout(0.5),
    Dense(1, activation='sigmoid')
])
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

 

3.2.3 训练过程优化

  使用早停法(Early Stopping)防止过拟合,自动保存最优权重:

early_stopping = EarlyStopping(monitor='val_loss', patience=3, restore_best_weights=True)
history = model.fit(X_train_pad, y_train, epochs=10, batch_size=64, validation_split=0.2, callbacks=[early_stopping])

 

四、结果对比与分析

 

4.1 性能指标对比

 

 4.2 混淆矩阵

 

 

4.2 训练历史曲线 

 

 

五、随机样本预测示例 

# 随机选择5条新闻对比预测结果
np.random.seed(42)
random_indices = np.random.choice(len(X_test), 5, replace=False)
for i, idx in enumerate(random_indices):
    text = X_test.iloc[idx]
    true_label = y_test.iloc[idx]
    # 朴素贝叶斯与LSTM预测逻辑...
    print(f"新闻 {i+1}: 真实标签 {true_label}, 贝叶斯预测 {pred_bayes}, LSTM预测 {pred_lstm}")

 

 

 

六、总结与展望 

朴素贝叶斯:优点是训练速度快、计算资源需求低,适合小规模数据或实时预测场景。

LSTM:在准确率上有优势,能更好捕捉文本语义特征,但需要更高的计算成本。

改进方向:可尝试优化 LSTM 参数(如层数、神经元数量)、使用预训练词向量(如 GloVe)或结合注意力机制进一步提升性能。

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

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

相关文章

【LeetCode 热题 100】搜索插入位置 / 搜索旋转排序数组 / 寻找旋转排序数组中的最小值

⭐️个人主页:小羊 ⭐️所属专栏:LeetCode 热题 100 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 搜索插入位置搜索二维矩阵在排序数组中查找元素的第一个和最后一个位置搜索旋转排序数组寻找旋转排序数组中的最小值…

副业小程序YUERGS,从开发到变现

文章目录 我为什么写这个小程序网站转小程序有什么坑有什么推广渠道个人开发者如何变现简单介绍YUERGS小程序给独立开发者一点小建议 我为什么写这个小程序 关注我的粉丝应该知道,我在硕士阶段就已经掌握了小程序开发技能,并写了一个名为“约球online”…

基于LLM合成高质量情感数据,提升情感分类能力!!

摘要:大多数用于情感分析的数据集缺乏意见表达的上下文,而上下文对于理解情绪往往至关重要,并且这些数据集主要局限于几种情绪类别。像 GPT-4 这样的基础大型语言模型(Foundation Large Language Models,LLMs&#xff…

网络检测工具InternetTest v8.9.1.2504 单文件版,支持一键查询IP/DNS、WIFI密码信息

—————【下 载 地 址】——————— 【​本章下载一】:https://drive.uc.cn/s/295e068b79314 【​本章下载二】:https://pan.xunlei.com/s/VOQDXguH0DYPxrql5y2zlkhTA1?pwdg2nx# 【百款黑科技】:https://ucnygalh6wle.feishu.cn/wiki/…

【网络编程】十、详解 UDP 协议

文章目录 Ⅰ. 传输层概述1、进程之间的通信2、再谈端口号端口号的引出五元组标识一个通信端口号范围划分常见的知名端口号查看知名端口号协议号 VS 端口号 3、两个问题一个端口号是否可以被多个进程绑定?一个进程是否可以绑定多个端口号? 4、部分常见指令…

[目标检测] YOLO系列算法讲解

前言 目标检测就是做到给模型输入一张图片或者视频,模型可以迅速判断出视频和图片里面感兴趣的目标所有的位置和它 的类别,而当前最热门的目标检测的模型也就是YOLO系列了。 YOLO系列的模型的提出,是为了解决当时目标检测的模型帧率太低而提…

.NET NativeAOT 指南

目录 1. 引言 2. 什么是 .NET NativeAOT? 2.1 NativeAOT 的定义 2.2 NativeAOT 与传统 JIT 的对比 2.3 NativeAOT 的适用场景 3. NativeAOT 的核心优势 3.1 性能提升 3.2 简化部署 3.3 更小的应用体积 3.4 知识产权保护 4. NativeAOT 的基本用法 4.1 环境…

uniapp-商城-57-后台 新增商品(弹窗属性数据添加父级)

后台增加商品,需要添加相关的数据信息,这里还要添加属性,前面已经对相关的界面布局继续了编写。这里还要对页面添加的数据,置入到云数据库,继续永久保存,便于后期的使用。这里主要是讲属性数据 父级信息的添…

摩方 12 代 N200 迷你主机(Ubuntu 系统)WiFi 抓包环境配置教程

摩方12代N200迷你主机标配 Intel AX201无线网卡,支持 WiFi 6 协议(802.11ax)及蓝牙5.2。此网卡兼容主流抓包工具,但需注意: 驱动兼容性:Ubuntu 20.04及以上内核版本(5.4)默认支持AX2…

Unity(URP渲染管线)的后处理、动画制作、虚拟相机(Virtual Camera)

一、URP渲染管线 渲染管线是一系列渲染操作的集合,Unity提供了内置渲染管线(Built-In)和可编程渲染管线(SRP)两类渲染管线。内置渲染管线是Unity的默认渲染管线,其自定义选项有限。而可编程渲染管线可以通…

mac-M系列芯片安装软件报错:***已损坏,无法打开。推出磁盘问题

因为你安装的软件在Intel 或arm芯片的mac上没有签名导致。 首先打开任何来源操作 在系统设置中配置,如下图: 2. 然后打开终端,输入: sudo spctl --master-disable然后输入电脑锁屏密码 打开了任何来源,还遇到已损坏…

Echart地图数据源获取

DataV.GeoAtlas地理小工具系列 选择需要的区域地图,选中后输出即可: 地图钻取代码 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>map</title><style>html, body, #map{margin: 0;…

GNSS数据自动化下载系统的设计与实现

摘要 本文详细介绍了三种不同设计的GNSS数据自动化下载系统&#xff0c;分别针对IGS观测数据、GRACE-FO Level-1B数据以及通过代理服务器获取数据的需求场景。系统采用Python实现&#xff0c;具备断点续传、完整性校验、异常处理和进度显示等核心功能。实验结果表明&#xff0…

Unity3D仿星露谷物语开发43之农作物生长

1、目标 把防风草种子种在地里&#xff0c;并展示植物种子&#xff0c;防风草种子将随着时间变化而生长成植株。 2、创建Crop.cs脚本 在Assets -> Scripts下创建新的目录命名为Crop&#xff0c;在其下创建新的脚本命名为Crop.cs。 代码如下&#xff1a; using System.C…

从0到1上手Kafka:开启分布式消息处理之旅

目录 一、Kafka 是什么 二、Kafka 的基础概念 2.1 核心术语解读 2.2 工作模式剖析 三、Kafka 的应用场景 四、Kafka 与其他消息队列的比较 五、Kafka 的安装与配置 5.1 环境准备 5.2 安装步骤 5.3 常见问题及解决 六、Kafka 的基本操作 6.1 命令行工具使用 6.1.1 …

Python爬虫如何应对网站的反爬加密策略?

在当今的互联网环境中&#xff0c;网络爬虫已经成为数据采集的重要工具之一。然而&#xff0c;随着网站安全意识的不断提高&#xff0c;反爬虫技术也越来越复杂&#xff0c;尤其是数据加密策略的广泛应用&#xff0c;给爬虫开发者带来了巨大的挑战。本文将详细介绍Python爬虫如…

第一次经历项目上线

这几天没写csdn&#xff0c;因为忙着项目上线的问题&#xff0c;我这阶段改了非常多的前端bug哈哈哈哈&#xff0c;说几个比较好的bug思想&#xff01; 这个页面算是我遇到的比较大的bug&#xff0c;因为我一开始的逻辑都写好了&#xff0c;询价就是在点击快递公司弹出弹框的时…

Conda配置完全指南——Windows系统Anaconda/Miniconda的安装、配置、基础使用、清理缓存空间和Pycharm/VSCode配置指南

本文同步发布在个人博客&#xff1a; Conda配置完全指南Conda 是一个开源的跨平台包管理与环境管理工具&#xff0c;广泛应用于数据科学、机器学习及 Python 开发领域。它不仅能帮助用户快速安装、更新和卸载第三方库&#xff0c;还能创建相互隔离的虚拟环境&#xff0c;解决不…

Quasar组件 Carousel走马灯

通过对比两个q-carousel组件来&#xff0c;了解该组件的属性 官方文档请参阅&#xff1a;Carousel 预览 源代码 <template><div class"q-pa-md"><div class"q-gutter-md"><q-carouselv-model"slide"transition-prev&quo…

风控域——风控决策引擎系统设计

摘要 本文详细介绍了风控决策引擎系统的设计与应用。决策引擎系统是一种智能化工具&#xff0c;可自动化、数据驱动地辅助或替代人工决策&#xff0c;广泛应用于金融、医疗、营销、风控等领域。文章阐述了决策引擎的核心功能&#xff0c;包括自动化决策、动态规则管理、实时处…