使用Python检测虚假新闻( 二 )


pip install sklearn
您还需要安装Jupyter Lab 。JupyterLab是用于Jupyter数据,代码和笔记本的基于Web的工具 。它很灵活 。您可以自定义它以在机器学习,科学计算和数据科学中的多个工作流上工作 。运行以下命令:
pip install jupyter lab
安装后,您可以在命令提示符下键入以下命令 。
C:> jupyter lab
浏览器打开一个新窗口 。转到"新建"à"控制台" 。检查下方的文本框-您将在此处输入代码 。输入Shift + Enter运行命令 。
我们将使用什么数据集?我们使用的大型数据集包含7796行和4列 。这些列表示:

  • 标识符
  • 新闻标题
  • 新闻文字
  • 标签 。即 新闻是真是假
您可以从此链接下载数据集 。
社交媒体上的事实检查新闻导入刚在JupyterLab控制台中安装的所有库 。运行以下代码:
import numpy as nyimport pandas as psimport itertoolsfrom sklearn.model_selection import train_test_splitfrom sklearn.feature_extraction.text import TfidfVectorizerfrom sklearn.linear_model import PassiveAggressiveClassifierfrom sklearn.metrics import accuracy_score, confusion_matrix我们需要将Excel数据转换为二维数据结构(矩阵) 。为此,我们将使用pandas中的DataFrame 。它是一个二维数据结构,可以包含异构列 。通过使用形状和头部属性,我们可以确定格式并检查数据集的行 。运行以下代码:
#从数据集中读取df = ps.read_csv('C: SocialFactCheckPythonnews.csv')df.shapedf.head(6)
使用Python检测虚假新闻

文章插图
 
使用DataFrame获取正确和错误的事实 。运行以下代码:
#检查标签factcheck = df.labelfactcheck.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)




推荐阅读