feedback

意见

反馈

back-to-up

回到

顶部

识别假新闻,机器也能够练出火眼金睛 | DT×NYCDSA

数据侠

· Julia & Mike

Julia & Mike   2017-12-21

在今年的年度词汇评选中,《柯林斯英语词典》选择了“虚假新闻”(Fake News)这个词语。数据显示, “虚假新闻” 的使用频率自2016年以来增长了365%。在大数据的浪潮下,互联网上开始充斥着越来越多的虚假信息。数据侠Julia Goldstein和Mike Ghoul这次尝试从自然语言处理入手,利用数据训练找出假新闻的规律。

“假的”比“真的”在网络上更受欢迎

虚假新闻是指有目的的宣传信息或那些惊悚、煽动的流言蜚语。在传统媒体时代就已经存在,但随着社交媒体的兴起,这些虚假新闻也在“病毒式”的疯狂传播。

美国总统特朗普绝对算是这个词汇的“推动者”,他上任后与美国媒体关系恶化,并经常指责美国主流媒体对他的报道是“虚假新闻”。尽管他在推特上声称“虚假新闻”这个词“是他的伟大创造之一”,但其实虚假新闻早就存在。

科技公司们不得不对此作出应对。谷歌已经调整了它的新闻排名方法,让更有声望的媒体机构能够排在搜索结果中更靠前的位置,而那些过往曾传播过虚假新闻的的网站,则被禁止出现在搜索结果中。Facebook也新设置了负责事实核实的部门。

Buzzfeed分析了2016年美国总统大选期间的20篇在社交媒体平台被分享次数最多的虚假新闻和真实新闻报道,他们发现,在Facebook上,人们对虚假新闻的参与度更高。

(图片说明:在去年美国大选期间,网民在Facebook上与假新闻的互动数。“互动数”一般是指点赞数、评论数与转发数的总和。上图展示五篇最受欢迎的假新闻在Facebook上的互动程度;下图显示对于最受欢迎的20篇大选文章,假新闻的互动程度比主流新闻更高。)

(图片说明:假新闻数据分析的英文流程图,从左到右依次是:数据收集、文本分析、文本特征转换、分类、主题建模、叠加建模。)

所以,我们希望使用自然语义处理方法(NLP)来识别和分类互联网上的虚假新闻。首先我们收集数据,对文章进行文本预处理,将文本转换为特征,以供我们进行监督式学习或无监督式学习建模。

数据收集与预处理

判断“虚假新闻”并无绝对的标准,除非事后有确凿的证据。因此我们选择直接使用一个已有的Kaggle 数据集,这个数据集已经收集并对虚假新闻进行了区分。

它使用了一个浏览器插件“B.S. Detector”,这个插件会对一个网页中所有链接进行检查,将它们与一份第三方提供的域名名单进行对比,找到那些来源不靠谱的文章。由于这些虚假新闻报道都来自于新闻汇总网站webhose.io上2016年11月的新闻,所以我们在收集作为对比的真实新闻时,也使用了同一网站和同样的时间跨度。此外,为了进一步确保数据库中的真实新闻没有混入虚假新闻,我们还手动做了筛选。

我们最终版的数据库包括超过23000篇真实新闻报道和11000篇虚假新闻文章。

一个文本分类模型的表现很大程度依赖于语料库里的词汇以及这些词汇生成的特征。常用词(Common Words)或者被称作停用词(Stopwords),以及其他“噪音”因素虽能提高特征的维度,但往往在区分文档时并无帮助。我们使用两个python语言包,spaCy和gensim,来进行断词(Tokenize)并完成以下的文本预处理过程。

这些步骤可以帮助缩小语料库的大小,并在进行特征转换前增加一些有助于理解上下文的语境(Context)信息。词形还原(Lemmatization)过程将每个词语简化为它的词根形式,这样许多不同词语都可以归为同一个较简单的单词。N-grams将相邻的词组归为一个单一特征,这样可以让一些单独出现时且无太多含义的词语拥有上下文意义。在我们的项目中,我们尝试了两个词一组和三个词一组的方法。

数据处理:文本特征转换与建模

文本预处理后,需要首先进行文本转特征的操作。相关方法包括TF-IDF或Word2Vec。

TF-IDF全称为Term Frequency - Inverse Document Frequency 。Term Frequency意为词频,Inverse Document Frequency意为逆文档频率,它是一种加权方法,旨在反映一个词汇在一个文档的语料库里的重要性。基本规则是,一个字词的重要性会随它在文档中的出现次数增加而提高,但同时会随其在语料库中出现的频率上升而下降。TF-IDF对提取的描述性词汇是一种很好的分析标准,但它并没有将词语的位置或语境考虑进内。

使用这种方法我们发现,无论在真实还是虚假新闻中,“特朗普“都是重要性最高的词汇,而”克林顿““FBI”和“电子邮件”也排名靠前。

(图片说明:真新闻与假新闻中最“重要”的词汇排名)

我们还使用了Word2Vec技术将文本转化为特征,同时保留单词之间在语料库中的原始关系。Word2Vec并非一种单一的算法,而是结合了两种技术——CBOW(continuous bag of words)和skipgram模型。这两种都属浅层神经网络,它们将字词从文本转换成向量空间中的向量。两种方法都用词组的重要性权重来代表词语向量。

训练模型中使用的数据越多,词语向量的质量越好,所以我们使用了已经在谷歌新闻数据库(约有1000亿单词)训练过的词语向量。这个模型包括了拥有300个维度向量的300万词组和搭配。我们还对每篇文章的所有词语向量进行平均,得出代表每个文档的单一向量。

由于数据中的真实新闻和虚假新闻数量并不对等,我们需要使用混淆矩阵(Confusion Matrix)对预测的新闻分类进行评估。由于我们的目标是识别虚假新闻文章,那些正确分类为虚假新闻的被定义为True Positive(真正,TP,可理解为判断为真的正确率),被错误分类为真实新闻的虚假新闻则为False Negatives(假负,FN,也可称作漏报率)。我们正确识别的真实新闻是True Negative(真负,TN,可称为判断为假的正确率),错误识别的真实新闻是False Positives(假正,FP,可称作误报率)

我们的目标是尽可能减少FN和FP。F1分数(F1 Score)可以帮助在精确率和灵敏度/召回率之间达成平衡。因此我们在交叉检验调节模型参数时使用了F1 Score作为优化参数。

最后我们使用ROC AUC Score对模型进行可视化。其中ROC曲线以TP率(灵敏度/召回率)为y轴,以FP率作为x轴。

TF-IDF模型结果

在一系列尝试后,我们发现逻辑回归(Logistic Regression)和支持向量机(Support Vector Machine)模型在使用TF-IDF进行文本转特征中产出的结果最优。而逻辑回归模型训练起来更迅速。在下面的ROC曲线中可以看到,逻辑回归模型有很高的敏感度(也就是它能很好地预测虚假新闻),而且有很低的FP率(将真实新闻判断为虚假新闻的比例不是很大)。

(图片说明:ROC训练集与测试集曲线)

我们同样使用了Word2Vec训练模型,但结果则有些难看。

Topic Modeling主题建模

鉴于这些新闻覆盖的话题十分广泛,我们使用无监督学习方法来更好地理解数据。主题建模能够帮助我们描述和总结一个语料库里的文章,同时不用逐篇阅读。它的原理是,分析词汇在每个文档中出现的频率来发现字词共同出现背后的模式。

而在自然语义处理过程中,LDA(Latent Dirichlet Allocation,隐含狄利克雷分布)是最常用的主题建模模型之一。LDA假设文档是由各种主题混合所成,而主题则由与这一主题相关的各类字词混合而成。另外,LDA认为这些混合方式遵循狄利克雷分布。根据这一理论,我们可以认为每一个文档主要围绕几个主题,而每一个主题又与几个字词相关。

(图片说明:LDA主题建模模型逻辑过程)

上面这张图描述了这一过程。对于每一个文档,这个模型会根据各种主题的分布选出其中一个主题,然后再从这一主题中根据单词分布选择出一个单词。该模型会随机初始化,在每一篇文章的迭代主题和相关词汇搜索中,更新主题和单词。超参数(Hyper-parameters)Alpha和Beta可以随时调整,来分别控制每一个文档中的主题分布以及单词分布。Alpha值高意味着文档彼此间看起来会更相似,而Beta值高则意味着主题彼此之间更相似。

LDA是完全的非监督机器学习模型,但使用者必须为模型提供特定数量的主题来描述整个文档集。对于我们的数据集,我们选择了20个主题。如下所示,主题并未命名,但我们可以从与这些主题相关的单词来更好理解每个主题。

(图片说明:作者为LDA提供的20个主题分布)

上图中被红色标记的主题2显示这个主题与美国大选相关。泡状图中每两个主题之间的距离代表它们彼此的相似度。比如,主题15与主题2相聚很远,前者(见下图)看起来与艺术相关。

最终我们使用这7个模型的预测结果,整合了一个叠加模型(Stacked Model)。叠加模型通常会比单一模型表现出色,因为它可以识别各个模型的优势和劣势。我们还把主题模型的结果、文章长度及是否有作者等信息添加为新特征。

这些特征与逻辑回归模型结合,得出了很不错的结果——全部2208个样本中仅有34个虚假新闻被错误识别。我们的AUC分值为0.9876。

结论

虚假新闻的问题正变得越发严重,各大科技公司也为此头疼。

没有语境、不依靠人工操作很难判断新闻的真假。我们最终的叠加模型在使用现有数据时表现优异,但若使用不同时间维度、不同主题分布的新数据,这个模型表现很可能会变差。下面这个图表展示了我们数据集里“最假”的单词,也就是假新闻比真新闻更频繁使用的单词。

像 “希拉里”、”克林顿”和”电邮”这些单词,在虚假新闻里使用的频率是真实新闻的两倍。所以当对相关的真实新闻进行判断时,我们的模型很可能会遇到麻烦,因为这些词在虚假新闻中出现的太过频繁。

此外,写作风格在区分虚假新闻和真实报道时也很关键。如果有更多时间,我们可以重新分析我们的文本预处理策略,让写作风格相关因素也可以被考虑进去(比如大小写、标点符号等),从而提高模型的预测水平。

(本文编译自文章 Identifying "Fake News" With NLP

数据侠门派

本文数据侠Julia Goldstein有5年的商业领域的数据分析及可视化经验。作为分析师和管理咨询师,她负责项目管理、提供解决方案等。Julia希望可以将自己的技术能力、沟通技巧以及商业理解力进一步融合。Julia本科毕业于汉密尔顿大学数学专业,现在Unified担任分析工程师。

 

Mike Ghoul是一名策略分析师,掌握数据科学技巧并热衷于解决各种难题。Mike拥有5年金融服务领域经验,曾在摩根斯坦利和巴克莱银行任职。Mike本科毕业于圣约翰大学风险管理专业,获得最优等学位荣誉。

关于DT×NYCDSA

DT财经与纽约数据科学学院是战略合作伙伴。DT×NYCDSA 系合作开设的专栏系列。

关于纽约数据科学学院:

纽约数据科学学院(NYC Data Science Academy)成立于2014年,是美国行业领先的数据科学教学机构。学院提供最高质量的数据科学和数据工程培训,致力于推进全球数据科学和大数据应用进程、以及向企业界输送数据分析人才。

加入数据侠

数据侠计划是由第一财经旗下DT财经发起的数据社群,包含数据侠专栏、数据侠实验室系列活动和数据侠联盟,旨在聚集大数据领域精英,共同挖掘数据价值。申请入群请添加微信公号dtcaijing002并备注“数据社群”,合作请联系datahero@dtcj.com。

(了解更多有趣又有料的商业数据分析,欢迎关注DT财经微信公众号“DTcaijing”,下载“DT·一财”APP)

分享这篇文章到