您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > Python

使用Python检测虚假新闻

时间:2020-06-14 12:18:01  来源:  作者:

数据科学, 社交媒体真假

盖尔·库泽尔·迈耶斯

使用Python检测虚假新闻

> Photo by Shahadat Rahman on Unsplash

 

社交媒体网络上充斥着假新闻。 有没有办法检测到它?

2016年总统大选最有争议的方面之一是它在Facebook上的批评。 社交媒体庞然大物引起了来自各个方面的批评。 批评人士认为,Facebook拒绝核实和审查其平台上所列新闻的真实性是危险的。

几年后,马克·扎克伯格(Mark Zuckerberg)出现在国会并回答了一系列问题。 美国国会议员指责Facebook首席执行官允许2020年大选之前传播政治信息。

在所有紧张局势中,扎克伯格因缺乏对政治广告活动的事实核实而感到震惊。

"我可以针对主要目标的共和党人投放广告,说他们投票赞成绿色新政吗?" —亚历山大·奥卡西奥·科尔特斯—

扎克伯格大吃一惊,很难回答。 这些事件表明,群众对采取行动打击假冒内容的意识日益增强。

使用Python检测虚假新闻

> Photo by Kon Karampelas on Unsplash

 

在社交媒体上消费新闻是一双刃剑-价格适中,易于访问且可传播大量信息。 人们保持与全球事务的最新状态,交流思想。

然而,通常,这种优势被用于病毒式营销。 尽管包含错误事实,但还是有意宣传低质量新闻。 社交媒体上的虚假新闻可以采用多种形式。 创建了几个恶意帐户来传播假新闻,例如巨魔,电子人用户和社交机器人。

假新闻的迅速传播可能对社会产生负面影响。 它可能会引起误解,甚至危及生命。 2016年总统大选期间最受欢迎的政治新闻是基于虚假事实本身。 因此,在真实媒体上查找基于事实的新闻绝对必要。

你应该知道什么

在继续前进之前,了解某些概念很重要:

特遣部队

在机器学习中,存在一个主要的难题:算法计算数字。 但是,自然语言主要包含文本。 因此,需要将该文本转换为数字,该过程通常称为文本矢量化。 它是机器学习的重要组成部分,有助于进行文本分析。 向量化算法会产生不同的结果,因此您需要仔细选择一个。

TF-IDF是一种统计量度,用于确定单词在文档集中放置时在文档中的相关性。 它是通过将以下两个指标相乘得出的:

·术语频率是单词在文档中出现的次数。

·反向文档频率是单词在一组文档中出现的次数。

您将使用TfidfVectorizer将文本转换为特征向量。

被动攻击性分类器

被动进取算法是在线学习算法。 它们用于从大量数据中学习。 例如,您的系统正在从Twitter 24/7收集推文,而您想根据该数据进行预测。 由于存储限制,这是不可行的。

您不能在内存中存储太多数据。 被动进取算法从这些示例中学习并在使用后立即将其丢弃,而无需将其存储在内存中。

这些算法之所以称为被动算法,是因为它们在分类结果保持正确之前是服从的。 一旦发现计算错误,他们就会变得积极,更新并调整模型。

混淆矩阵

如果输出应该生成两个或更多类,则在机器学习分类中使用它进行性能测量。 有四个可能的结果:

·True Positive-您预测为肯定,结果是真实的。

·True Negative-您预测为否定,事实证明这是事实。

·False Positive 误报-您预测为肯定,但事实证明是错的。

·False Negative-您的预测否定,事实证明是错误的。

问题

假设您已经在Python中构建了一个Web抓取应用程序,该应用程序会收集来自社交媒体网络(例如Facebook)的所有新闻链接。 您应该如何知道这些网站上的信息是来自真实事实?

我们已经在Python中建立了一个可以识别新闻链接是否真实的系统。 我们已经使用sklearn为数据集创建一个TfidfVectorizer。 Tfidf的目的是将文本转换为特征向量。 这使您可以将它们用作估计器的输入。

先决条件

打开命令行并下载并安装Numpy。 Numpy是数字python的缩写。 它为大量的多维数组和矩阵以及一些有用的数学函数提供支持。 运行以下命令:

pip install numpy

接下来,安装Pandas。 熊猫可以帮助您对数据执行各种操作,例如导入,准备,合并,重塑,联接,处理,分析和调整数据。 它围绕DataFrame对象进行组织。 运行以下命令:

pip install pandas

最后,是时候安装我们项目中最重要的库sklearn了。 它主要用于机器学习。 它包含内置的算法,这些算法包含用于模型选择,模式,聚类,回归和聚类的功能。 运行以下命令:

pip install sklearn

您还需要安装Jupyter Lab。 JupyterLab是用于Jupyter数据,代码和笔记本的基于Web的工具。 它很灵活。 您可以自定义它以在机器学习,科学计算和数据科学中的多个工作流上工作。 运行以下命令:

pip install jupyter lab

安装后,您可以在命令提示符下键入以下命令。

C:> jupyter lab

浏览器打开一个新窗口。 转到"新建"à"控制台"。 检查下方的文本框-您将在此处输入代码。 输入Shift + Enter运行命令。

我们将使用什么数据集?

我们使用的大型数据集包含7796行和4列。 这些列表示:

  • 标识符
  • 新闻标题
  • 新闻文字
  • 标签。即 新闻是真是假

您可以从此链接下载数据集。

社交媒体上的事实检查新闻

导入刚在JupyterLab控制台中安装的所有库。 运行以下代码:

import numpy as ny
import pandas as ps
import itertools
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import PassiveAggressiveClassifier
from sklearn.metrics import accuracy_score, confusion_matrix

我们需要将Excel数据转换为二维数据结构(矩阵)。 为此,我们将使用pandas中的DataFrame。 它是一个二维数据结构,可以包含异构列。 通过使用形状和头部属性,我们可以确定格式并检查数据集的行。 运行以下代码:

#从数据集中读取

df = ps.read_csv('C: SocialFactCheckPython  news.csv')
df.shape
df.head(6)
使用Python检测虚假新闻

 

使用DataFrame获取正确和错误的事实。 运行以下代码:

#检查标签

factcheck = df.label
factcheck.head(7)
使用Python检测虚假新闻

 

现在是常见的任务-将数据集分为两组:训练和测试。

#分割数据集

a_train,a_test,b_train,b_test = train_test_split(df ['text'],
	factcheck,
  test_size = 0.15,
  random_state = 8)

初始化一个TfidfVectorizer。 设置英语停用词并指定最大文档频率为0.65。 这表示将删除包含较高文档频率的术语。

我们总是过滤掉停用词以进行自然语言处理。 TfidfVectorizer用于将一组原始文档转换为TF-IDF功能矩阵。 随机状态用于指定随机生成的种子。 它确保火车分割测试始终是确定性的。

使用矢量化器来拟合和变换训练集和测试集。 .fit_transform学习词汇和反向文档频率。 作为响应,它创建术语文档矩阵。 .transform返回术语文档矩阵。 运行以下代码:

tfidf_vectorizer = TfidfVectorizer(stop_words =" english",max_df = 0.65)
tfidf_train = tfidf_vectorizer.fit_transform(a_train)
tfidf_test = tfidf_vectorizer.transform(a_test)

现在,您需要初始化PassiveAggressive分类器,该分类器将安装在tfidf_train和b_train上。 TfidfVectorizer有助于通过sklearn.metrics的准确性score()对测试集进行预测,并进行事实检查准确性。

在多标签分类中,准确性score()函数用于处理子集的准确性。 为样本预测的标签必须与其他子集中的相应标签完全匹配。

运行以下代码:

pclass = PassiveAggressiveClassifier(max_iter = 60)
pclass.fit(tfidf_train,b_train)
b_pred = pclass.predict(tfidf_test)
factcheckscore = accuracy_score(b_test,b_pred)
print(f’Fact-check Accuracy Is {round(factcheckscore*100,2)}%’)

这表明从假新闻中调用真实新闻时,我们的模型准确率为94.43%。 让我们看看它是对的。 运行以下代码:

使用Python检测虚假新闻

 

这意味着我们有456个真实阳性,442个真实阴性,27个假阳性和49个假阳性。

最后的想法

Python可用于检测社交媒体上的虚假新闻。 我们从包含政治新闻的数据集中提取数据,使用TfidfVectorizer将其转换为向量,运行
PassiveAggressiveClassifier,然后拟合模型。 最终,我们产生了94.43%的准确性。

(本文翻译自Gayle Kurtzer-Meyers的文章《Using Python to Detect Fake News》,参考:
https://medium.com/datadriveninvestor/using-python-to-detect-fake-news-7895101aebb8)



Tags:Python   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
大家好,我是菜鸟哥,今天跟大家一起聊一下Python4的话题! 从2020年的1月1号开始,Python官方正式的停止了对于Python2的维护。Python也正式的进入了Python3的时代。而随着时间的...【详细内容】
2021-12-28  Tags: Python  点击:(1)  评论:(0)  加入收藏
学习Python的初衷是因为它的实践的便捷性,几乎计算机上能完成的各种操作都能在Python上找到解决途径。平时工作需要在线学习。而在线学习的复杂性经常让人抓狂。费时费力且效...【详细内容】
2021-12-28  Tags: Python  点击:(1)  评论:(0)  加入收藏
Python 是一个很棒的语言。它是世界上发展最快的编程语言之一。它一次又一次地证明了在开发人员职位中和跨行业的数据科学职位中的实用性。整个 Python 及其库的生态系统使...【详细内容】
2021-12-27  Tags: Python  点击:(2)  评论:(0)  加入收藏
菜单驱动程序简介菜单驱动程序是通过显示选项列表从用户那里获取输入并允许用户从选项列表中选择输入的程序。菜单驱动程序的一个简单示例是 ATM(自动取款机)。在交易的情况下...【详细内容】
2021-12-27  Tags: Python  点击:(4)  评论:(0)  加入收藏
近日只是为了想尽办法为 Flask 实现 Swagger UI 文档功能,基本上要让 Flask 配合 Flasgger, 所以写了篇 Flask 应用集成 Swagger UI 。然而不断的 Google 过程中偶然间发现了...【详细内容】
2021-12-23  Tags: Python  点击:(6)  评论:(0)  加入收藏
有不少同学学完Python后仍然很难将其灵活运用。我整理15个Python入门的小程序。在实践中应用Python会有事半功倍的效果。01 实现二元二次函数实现数学里的二元二次函数:f(x,...【详细内容】
2021-12-22  Tags: Python  点击:(32)  评论:(0)  加入收藏
Verilog是由一个个module组成的,下面是其中一个module在网表中的样子,我只需要提取module名字、实例化关系。module rst_filter ( ...); 端口声明... wire定义......【详细内容】
2021-12-22  Tags: Python  点击:(8)  评论:(0)  加入收藏
运行环境 如何从 MP4 视频中提取帧 将帧变成 GIF 创建 MP4 到 GIF GUI ...【详细内容】
2021-12-22  Tags: Python  点击:(6)  评论:(0)  加入收藏
面向对象:Object Oriented Programming,简称OOP,即面向对象程序设计。类(Class)和对象(Object)类是用来描述具有相同属性和方法对象的集合。对象是类的具体实例。比如,学生都有...【详细内容】
2021-12-22  Tags: Python  点击:(9)  评论:(0)  加入收藏
所谓内置函数,就是Python提供的, 可以直接拿来直接用的函数,比如大家熟悉的print,range、input等,也有不是很熟,但是很重要的,如enumerate、zip、join等,Python内置的这些函数非常...【详细内容】
2021-12-21  Tags: Python  点击:(5)  评论:(0)  加入收藏
▌简易百科推荐
大家好,我是菜鸟哥,今天跟大家一起聊一下Python4的话题! 从2020年的1月1号开始,Python官方正式的停止了对于Python2的维护。Python也正式的进入了Python3的时代。而随着时间的...【详细内容】
2021-12-28  菜鸟学python    Tags:Python4   点击:(1)  评论:(0)  加入收藏
学习Python的初衷是因为它的实践的便捷性,几乎计算机上能完成的各种操作都能在Python上找到解决途径。平时工作需要在线学习。而在线学习的复杂性经常让人抓狂。费时费力且效...【详细内容】
2021-12-28  风度翩翩的Python    Tags:Python   点击:(1)  评论:(0)  加入收藏
Python 是一个很棒的语言。它是世界上发展最快的编程语言之一。它一次又一次地证明了在开发人员职位中和跨行业的数据科学职位中的实用性。整个 Python 及其库的生态系统使...【详细内容】
2021-12-27  IT资料库    Tags:Python 库   点击:(2)  评论:(0)  加入收藏
菜单驱动程序简介菜单驱动程序是通过显示选项列表从用户那里获取输入并允许用户从选项列表中选择输入的程序。菜单驱动程序的一个简单示例是 ATM(自动取款机)。在交易的情况下...【详细内容】
2021-12-27  子冉爱python    Tags:Python   点击:(4)  评论:(0)  加入收藏
有不少同学学完Python后仍然很难将其灵活运用。我整理15个Python入门的小程序。在实践中应用Python会有事半功倍的效果。01 实现二元二次函数实现数学里的二元二次函数:f(x,...【详细内容】
2021-12-22  程序汪小成    Tags:Python入门   点击:(32)  评论:(0)  加入收藏
Verilog是由一个个module组成的,下面是其中一个module在网表中的样子,我只需要提取module名字、实例化关系。module rst_filter ( ...); 端口声明... wire定义......【详细内容】
2021-12-22  编程啊青    Tags:Verilog   点击:(8)  评论:(0)  加入收藏
运行环境 如何从 MP4 视频中提取帧 将帧变成 GIF 创建 MP4 到 GIF GUI ...【详细内容】
2021-12-22  修道猿    Tags:Python   点击:(6)  评论:(0)  加入收藏
面向对象:Object Oriented Programming,简称OOP,即面向对象程序设计。类(Class)和对象(Object)类是用来描述具有相同属性和方法对象的集合。对象是类的具体实例。比如,学生都有...【详细内容】
2021-12-22  我头秃了    Tags:python   点击:(9)  评论:(0)  加入收藏
所谓内置函数,就是Python提供的, 可以直接拿来直接用的函数,比如大家熟悉的print,range、input等,也有不是很熟,但是很重要的,如enumerate、zip、join等,Python内置的这些函数非常...【详细内容】
2021-12-21  程序员小新ds    Tags:python初   点击:(5)  评论:(0)  加入收藏
Hi,大家好。我们在接口自动化测试项目中,有时候需要一些加密。今天给大伙介绍Python实现各种 加密 ,接口加解密再也不愁。目录一、项目加解密需求分析六、Python加密库PyCrypto...【详细内容】
2021-12-21  Python可乐    Tags:Python   点击:(8)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条