假新闻识别,从0到95% - 机器学习实战

我们使用机器学习和自然语言处理开发了一个假新闻检测器,其在验证集上的准确率超过了95%。 在现实世界中,准确率应该会比95%低一些,特别是随着时间的推移,假新闻的创作方式也会有所改变。

由于自然语言处理和机器学习方面发展迅猛,因此我想也许可以搞一个能够识别假新闻的模型,从而遏制假新闻泛滥所造成的灾难性后果 。

可以说,要制作自己的机器学习模型,最困难的部分就是收集训练数据。 我花了几天和几天的时间来收集2017/2018赛季所有NBA球员的照片, 以期训练一个人脸识别模型 。 我不知道我会潜入一个长达数月之久的痛苦过程,暴露出一些真正黑暗而令人不安的事情,这些事情仍然作为新闻和真实的信息被传播。

如果你希望马上学习机器学习方面的技能和知识,我推荐你使用汇智网的Python机器学习在线运行环境

假新闻的定义

我的第一个障碍是意外的。 在对假新闻做了一些研究之后,我很快发现错误信息有很多不同的类别。 有些文章是公然虚构的,有些文章则提供了真实的事件但进行错误的解读,有些文章属于伪科学,有些宣扬片面观点的文章也伪装成新闻,文章是讽刺的,有些文章主要内容就是一些推特和引用其他人的话。 我搜索了一下,发现一些人试图将网站分为“讽刺”,“虚假”,“误导”等类别。

我认为这是一个很好的开始,因此继续前进,并开始访问这些被标记的网站,试图寻找一些例子。 几乎是马上,我发现了一个问题: 一些被标记为“虚假”或“误导”的网站有时也会有真实的文章。 所以我知道如果不做一个完整的检查就没有办法去刮。

于是我开始问自己,我的模型是否应该考虑到讽刺和意见,如果是的话,他们应该被认为是虚假的、真实的还是属于自己的类别?

情绪分析

在假新闻网站上泡了大约一周后,我开始怀疑自己是否把问题过度复杂化了。 也许我只需要使用现成的机器学习模型来进行情感分析,看看是否存在一种模式? 我决定构建一个快速的小工具,使用网络爬虫来抓取文章标题、描述、作者和内容,并将抓取结果输入到情感分析模型。 我使用了Textbox ,这个在线服务很方便,并且很快就可以返回结果。

Textbox会返回一个你可以解释为正向或负向的情绪分数。 然后,我搞了一个粗糙的小算法来为不同类型的文本(标题、内容、作者等等)的情绪添加权重,并将它们加在一起,看看能不能得到一个有意义的全局得分。

一开始它表现的很好,但当我试过第七或第八篇文章之后,这个小算法开始胡言乱语了:它的表现离我想要建立的假新闻检测系统还差的很远。

失败。

自然语言处理

这部分就是我的朋友大卫·埃尔南德斯 ( David Hernandez)所建议的:利用真实的文本训练出一个模型。 为了做到这一点,我们需要为不同的类别中提供大量样本实例。

为了试图理解假新闻的模式所投入的精力,让我已经相当疲惫了,所以我们决定只抓取那些已知属于虚假、真实或讽刺等分类的网站,看看我们能否快速构建一个数据集。

在运行了几天的粗糙的抓取工作之后,我们得到了一个自认为足够大的数据集来训练一个模型。

结果是废话。 深入查看训练数据后,我们意识到,这些网站从未像我们想的那样,整齐地落入预先规划的小类别。 其中一些网站把假新闻和真实的新闻混在一起,另一些网站则只有一些来自其他网站的博客文章,有些网站的文章中90%的文字都是特朗普的推文。 所以我们意识到必须重新开始训练数据。

这是事情变糟的时候。

这是一个星期六,我开始了漫长的过程,阅读每篇文章然后才决定将其归入什么类别,并且笨拙地将文本复制、粘贴到电子表格中。 其中有一些黑暗的、令人恶心的、种族主义的、真正堕落的东西,开始时我试图忽略它们。 但经过数百篇这样的文章之后,它们开始接近我。 当我的视觉模糊,我对颜色的解读变得混乱起来的时候,我开始变得非常沮丧。 人类文明为何降到如此低的水平? 为什么人们不能批判性地思考? 我们真的有希望吗? 这个过程持续了几天,因为我努力为这个模型准备足够多的数据样本。

我发现自己在对假新闻的解读中浮现出来,当看到那些我有不同意见的文章时,就会生气,只为选出我认为是正确的文章而继续奋斗。 但是,什么是对,什么是错?

不过最终,我收集到了足够多的样本,然后非常放心地把它们发给大卫。

第二天,当我急切地等待结果时,他再次进行了训练。

我们达到了约70%的准确率。 起初我觉得这已经很好了,但是当使用开放选择的文章进行抽查后,我意识到这个模型一无是处。

失败。

Fakebox

回到绘图板。 我做错了什么? 是David指出来,简化问题可能是提高准确率的关键。 因此我的确思考了,到底什么才是我要解决的问题。 然后突然一激灵,也许不需要检测假新闻,只要检测真实的新闻就够了。 真实的新闻更容易分类,客观真实,几乎不需要解读。 而且还有很多可信的消息来源。

于是我回到互联网,开始重新收集训练数据。 我决定把所有新闻都归为两类: 真实的和不真实的。 不真实类将包括挖苦、片面观点、假新闻,以及其它没有遵守AP标准的内容。

我花了数周的时间来做这件事,每天都要花几个小时从The Onion到Reuters的各种网站上获得最新的内容。 我把成千上万的真实和非真实内容的样本放到一个巨大的电子表格中,每天我都会增加数百个。 最终,我认为样本已经足够来再次尝试。 于是我给David发了电子表格,然后就是焦急地等着结果。

当我看到准确度在95%以上时,我几乎跳了起来。 这意味着我们发现了一个模式,可以用来区分真实的新闻和那些你应当谨慎对待的新闻。

成功(某种程度)!

如果你喜欢这篇文章,请关注我的头条号:新缸中之脑!

原文: I trained fake news detection AI with >95% accuracy, and almost went crazy

发布了314 篇原创文章 · 获赞 159 · 访问量 48万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览