检测假新闻:比较不同的分类方法的准确率(上)

简介: 检测假新闻:比较不同的分类方法的准确率

这些推特是真的还是假的?

640.png

640.png

他们肯定是假的。在7月15日时,Twitter出现了一个大问题,大账户被黑客入侵,要求比特币捐款,并承诺将捐款金额翻倍。所以即使这些推特是真实的,它们也包含了虚假信息。

这不是第一次,也可能不是最后一次。但是,我们能阻止它吗?我们能阻止这种情况发生吗?


问题

问题不仅仅是黑客进入账户并发送虚假信息。这里更大的问题是我们所说的“假新闻”。假新闻是那些虚假的新闻故事:故事本身是捏造的,没有可证实的事实、来源或引用。

当有人(或机器人之类的东西)冒充某人或可靠来源虚假传播信息时,也可以被认为是假新闻。在大多数情况下,制造虚假信息的人都有一个目的,可以是政治上的、经济上的,或者是为了改变人们对某个话题的行为或想法。

现在有无数的假新闻来源,大部分来自编程的机器人,他们不知道疲倦(他们是机器呵呵),继续24/7传播假信息。

引言中的推文只是这个问题的基本例子,但过去5年里更严肃的研究表明,虚假信息的传播与选举、公众对不同话题的看法或感受之间存在很大的相关性。

这个问题是真实的,很难解决,因为机器人越来越好,在欺骗我们。我们需要更好的系统来帮助我们了解假新闻的模式,以改善我们的社交媒体、交流方式,甚至是防止世界的混乱。

目的

在这篇短文中,我将解释几种通过从不同文章中收集数据来检测假新闻的方法。但同样的技术可以应用于不同的场景。

我将解释用于加载、清理和分析数据的Python代码。然后我们会做一些机器学习模型来执行分类任务(假的或假的)


数据

数据来自Kaggle,你可以在这里下载:

https://www.kaggle.com/clmentbisaillon/fake-and-real-news-dataset

有两个文件,一个是真实新闻,一个是假新闻(都是英文),总共有23481条“假”推文和21417条“真实”文章。

所有的数据和代码可以在这个GitHub中找到:

https://github.com/FavioVazquez/fake-news


用Python解决问题

数据读取和拼接

首先,我们将数据加载到Python中:

fake = pd.read_csv("data/Fake.csv")
true = pd.read_csv("data/True.csv")

然后我们添加一个标志来跟踪真假:

fake['target'] = 'fake'
true['target'] = 'true'

现在进行数据的合并:

data = pd.concat([fake, true]).reset_index(drop = True)

我们将对数据进行洗牌以防止偏差:

from sklearn.utils import shuffle
data = shuffle(data)
data = data.reset_index(drop=True)

进行数据清理

删除日期(我们不会将其用于分析):

data.drop(["date"],axis=1,inplace=True)

删除标题(我们只使用文本):

data.drop(["title"],axis=1,inplace=True)

转换文本为小写:

data['text'] = data['text'].apply(lambda x: x.lower())

删除标点符号:

import stringdef punctuation_removal(text):
    all_list = [char for char in text if char not in string.punctuation]
    clean_str = ''.join(all_list)
    return clean_strdata['text'] = data['text'].apply(punctuation_removal)

删除停止词

import nltk
nltk.download('stopwords')
from nltk.corpus import stopwords
stop = stopwords.words('english')data['text'] = data['text'].apply(lambda x: ' '.join([word for word in x.split() if word not in (stop)]))

数据探索

每个主题有多少篇文章?

print(data.groupby(['subject'])['text'].count())
data.groupby(['subject'])['text'].count().plot(kind="bar")
plt.show()

640.png

有多少文章?

print(data.groupby([‘target’])[‘text’].count())
data.groupby([‘target’])[‘text’].count().plot(kind=”bar”)
plt.show()


目录
相关文章
|
4月前
|
机器学习/深度学习 传感器 自动驾驶
狂风暴雨依旧YOLO | 全新数据集,全新任务,促进极端降雨条件下目标检测的优化和发展
狂风暴雨依旧YOLO | 全新数据集,全新任务,促进极端降雨条件下目标检测的优化和发展
189 0
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
基于聚类和回归分析方法探究蓝莓产量影响因素与预测模型研究附录
k均值聚类模型多元线性回归模型随机森林模型在数据分析项目中,选择合适的模型是至关重要的。本项目中,我们采用了三种不同的模型来分析蓝莓的生长条件和产量,以确保从不同角度全面理解数据。一、K均值聚类模型K均值聚类模型是一种无监督学习方法,用于根据数据的相似性将样本分成不同的组。在这个项目中,我们使用K均值聚类模型来识别具有相似特征的蓝莓品种。通过聚类分析,我们将蓝莓分为4个类别,每个类别代表了不同的生长条件和产量特性。这种分类有助于我们理解在不同环境条件下,哪些因素对蓝莓产量有显著影响。
基于聚类和回归分析方法探究蓝莓产量影响因素与预测模型研究附录
|
4月前
|
移动开发
R语言线性回归模型拟合诊断异常值分析家庭燃气消耗量和卡路里实例带自测题
R语言线性回归模型拟合诊断异常值分析家庭燃气消耗量和卡路里实例带自测题
|
4月前
|
机器学习/深度学习 自然语言处理
专治大模型说胡话,精确率100%!华科等提出首个故障token检测/分类方法
【4月更文挑战第29天】华中科技大学等机构研究者提出首个针对大语言模型故障token的检测与分类方法,精确率高达100%,显著提升文本质量。该方法利用上下文信息及注意力机制的神经网络,有效识别语法、语义和事实错误,但在逻辑和风格错误检测上仍有待改进。虽然计算成本高且无法实时干预生成过程,但为优化LLM提供了新途径。[论文链接](https://arxiv.org/abs/2404.09894)
49 1
|
10月前
|
机器学习/深度学习 自然语言处理 算法
【网安AIGC专题11.1】11 Coreset-C 主动学习:特征选择+11种采样方法+CodeBERT、GraphCodeBERT+多分类(问题分类)二元分类(克隆检测)非分类任务(代码总结)
【网安AIGC专题11.1】11 Coreset-C 主动学习:特征选择+11种采样方法+CodeBERT、GraphCodeBERT+多分类(问题分类)二元分类(克隆检测)非分类任务(代码总结)
167 0
|
10月前
|
SQL 机器学习/深度学习 开发框架
【网安AIGC专题10.25】8 CoLeFunDa华为团队:静默漏洞检测(识别+多分类)+数据增强、样本扩充+对比学习+微调+结果分析(降维空间,分类错误样本归纳,应用场景优势,有效性威胁分析)
【网安AIGC专题10.25】8 CoLeFunDa华为团队:静默漏洞检测(识别+多分类)+数据增强、样本扩充+对比学习+微调+结果分析(降维空间,分类错误样本归纳,应用场景优势,有效性威胁分析)
236 0
|
缓存 算法 Python
概率图推断之信念传播
变量消除算法有个致命的缺陷:每次查询都要要从头开始重新启动算法。这样会非常浪费资源,并且在计算上很麻烦。 这个问题也很容易避免。通过在第一次运行变量消除算法后缓存这些因子,我们可以轻松地计算新的边缘概率查询,基本上不需要额外的成本。 实现上面的功能有2中算法:信念传播(BP)和全联结树算法,本文先介绍信念传播算法。
189 0
概率图推断之信念传播
|
数据可视化 计算机视觉
其实没有NMS检测也可以很强很快 | O2F样本匹配助力目标检测逃离NMS时代(二)
其实没有NMS检测也可以很强很快 | O2F样本匹配助力目标检测逃离NMS时代(二)
187 0
|
机器学习/深度学习 算法 固态存储
其实没有NMS检测也可以很强很快 | O2F样本匹配助力目标检测逃离NMS时代(一)
其实没有NMS检测也可以很强很快 | O2F样本匹配助力目标检测逃离NMS时代(一)
156 0
|
机器学习/深度学习 存储 自然语言处理
大规模蛋白质翻译后修饰提取模型BioBERT,具有远程监督和置信度校准
大规模蛋白质翻译后修饰提取模型BioBERT,具有远程监督和置信度校准
211 0