精华内容
下载资源
问答
  • 虚假新闻数据集
    万次阅读 热门讨论
    2019-04-02 10:01:26

    1.FakeNewsNet
    下载链接:https://github.com/KaiDMML/FakeNewsNet
    说明:该数据集包含新闻内容和正确标注真假新闻标签的社会语境特征。
    使用论文:
    (1)A Stylometric Inquiry into Hyperpartisan and Fake News
    (2)Exploiting Tri-Relationship for Fake News Detection
    2.BuzzFeedNews
    链接:https://github.com/BuzzFeedNews/2016-10-facebookfact-check/tree/master/data
    说明:该数据集包括完整的Facebook新闻发布于接近2016年美国大选从9月19日到23日以及9月26日和27日。
    3.LIAR
    链接:http://www.cs.ucsb.edu/~william/software.html
    说明:该数据集是从PolitiFact收集,包括简短陈述,例如新闻稿,电视
    或电台采访,竞选演讲等,并包含元数据。
    使用论文:
    (1)“Liar,LIar Pants on Fire”:A New Benchmark Dataset for Fake News Detection
    (2)Multi-Source Multi-Class Fake News Detection
    4.BS Detector
    链接:https://github.com/bs-detector/bs-detector

    更多相关内容
  • 虚假新闻识别检测数据集news.csv
  • 新闻数据集介绍创建该项目的目的是显示对假新闻的公共数据集的基本分析。 主要思想是使每个分析都具有可复制性,因此每个人都可以添加自己的分析并将其用于实验和数据挖掘。 每个数据集都有自己的经过简单分析的...
  • 该数据是一个假新闻标记数据,包括从244个网站上利用Chrome的BS Detector扩展工具识别出的假新闻数据
  • 一文看懂虚假新闻检测(附数据集 & 论文推荐)

    万次阅读 多人点赞 2019-02-19 08:37:22
    作者丨孙子荀单位丨腾讯科技高级研究员研究方向丨多模态内容质量本人过去几年一直从事内容质量方面的算法工作,近期出于兴趣对假新闻这个问题做了一些调研,简单总结一下提供读者参考...

    640


    作者丨孙子荀

    单位丨腾讯科技高级研究员

    研究方向丨多模态内容质量


    本人过去几年一直从事内容质量方面的算法工作,近期出于兴趣对假新闻这个问题做了一些调研,简单总结一下提供读者参考。


    在某种程度上假新闻的是一个微观领域问题,它和谣言分类,事实判断,标题党检测,垃圾内容挖掘等都比较类似,在宏观上说都属于内容质量的领域,所以很多方法其实是通用的框架。


    本文主要简单介绍了我们的做法和几篇具有典型代表的假新闻论文,从不同的方法路径去了解多模态、网络游走、特征挖掘等手段在假新闻领域上的一些实践。


    模型构建


    根据 [Kai Shu, 2017] 的划分,模型在这里主要有两类:1)基于内容的建模;2)基于社交网络的模型。


    1. 基于内容建模 


    有 1.1 面向知识和事实库的和 1.2 面向行文风格的。 


    1.1 面向知识库 


    事实检查系统有点类似谣言鉴别系统 ,对文章描述的观点和客观事物进行校真,类似 QA 系统是一个比较复杂的 NLP 领域,包括知识表示、知识推理。在知识库数据集上有集中划分方式: 


    1. 专家系统:各个领域的专家构建的知识库, 显然这种方式的效率和扩展性都非常差。 不过如果是垂直类目(生物,历史)那或许可以在某个客观事实比较多的类目下进行尝试;


    2. 集体智慧:用户集体知识的反馈来构建的一套知识库。 


    1 和 2 有了之后其实可以通过类似检索的方法,来对新的内容进行相似度判断,从而充分利用积累的历史内容提供出来的特征指示。 


    3. 基于算法分类:使用知识图谱或者事理图谱来对内容进行真实性判断,当前主要的开放知识图谱有 DB-pedia 和 Google Relation Extraction 数据集。 


    这个领域的问题,类似 NLP 的 QA 问题,有兴趣的同学可以参考 [Yuyu Zhang, 2017] 的 VRN变分推理网络。


    640?wx_fmt=png


    作者通过概率模型来识别问句中的实体,问答时在 KB 上做逻辑推理,且推理规则将被学习出来。即可用于做事实判断。


    当前这个方向技术落地成本高,难度较大,效果也不一定理想。


    1.2 面向内容风格 


    用文章内容本身的行文风格,通过上下文无关文法得到句子的句法结构,或者 RST 修辞依赖理论等其他 NLP 深度模型去捕捉句子文法信息。 


    根据捕捉文本信息描述种类的不同,作者分为两类,检测欺骗程度,检测描述的主观客观程度(越客观公正的可能性越大)两种。震惊体的标题党就属于这类。 


    其中,假新闻可能用到的特征,包括普通特征和聚合特征两大类。普通特征就是页面,文本,图片,标题等单纯的特征 embedding,聚合特征就是把各个普通特征进行组合和有监督的训练成一个一个子模型问题。然后这些子模型的输出又可以作为聚合特征用在假新闻领域。


    下图就是我们使用的主要特征集:


    640?wx_fmt=png


    其他:基于社交网络建模 


    分为两种,基于立场和基于传播行为的。 


    前者主要是基于用户对内容的操作(评论,点赞 ,举报等等)构建矩阵或者图模型。 


    而基于传播行为对对象建模,类似 PageRank 的行为传递。下面介绍的 News Verification by Exploiting Conflicting Social Viewpoints in Microblogs 一文就是这种类型 。 


    1. 对虚假新闻的传播游走轨迹跟踪, 以及通过图模型和演化模型中针对特定假新闻的进一步调查;


    2. 识别虚假新闻的关键传播者,对于减轻社交媒体的传播范围至关重要。


    假新闻研究方向


    [Kai Shu, 2017] 文章总结了假新闻的几个主要的研究方向。


    数据方面的研究工作:现在还没有标准的测评数据集,这是需要去建立的。再有就是通过传播特性去更早的检测假新闻。另外一个就是从心理学角度去做假新闻的意图检测,这个角度过去往往被忽略。 


    模型特征方面的研究工作:往往会使用用户的画像特征,内容特征(NLP、CV)结合深度学习,还有传播网络特征,比如用户和内容之间的关系构造出来的网络特征,网络本身的 embedding 表现。 


    模型方面的研究工作:第一个就是特征之间的组合。第二是预测目标的变化。第三不论是从内容源,还是文章风格,或者内容的反馈(评论,等互动行为)都有各自的限制,组合这些模型。最后就是空间变换,把特征变换到另外的 latent 语义空间尝试解决。


    数据集


    FakeNewsNet


    BuzzFeed 和 PolitiFact 两个平台的数据集,包括新闻内容本身(作者,标题,正文,图片视频)和社交上下文内容(用户画像,收听,关注等)。


    数据集可获取方式:


    https://github.com/KaiDMML/FakeNewsNet


    代表论文


    640?wx_fmt=png


    LIAR


    该数据集也是来自 PolitiFact,包括内容本身和内容的基础属性数据(来源,正文)。


    数据集可获取方式:


    http://www.cs.ucsb.edu/~william/data/liar_dataset.zip


    代表论文


    640?wx_fmt=png


    Twitter and Weibo DataSet


    一个比较全的数据集包括帖子 ID,发帖用户 ID,正文,回复等数据。


    数据集可获取方式:


    http://alt.qcri.org/~wgao/data/rumdect.zip


    代表论文


    640?wx_fmt=png


    Twitter15 Twitter16


    被上面的数据集使用。来自 Twitter 15、16 年的帖子,包括了帖子之间的树状收听,关注关系和帖子正文等。


    数据集可获取方式:


    https://www.dropbox.com/s/7ewzdrbelpmrnxu/rumdetect2017.zip?dl=0


    代表论文


    640?wx_fmt=png


    Buzzfeed Election Dataset & Political News Dataset


    Buzzfeed’s 2016 收集的选举假新闻,以及作者收集的 75个 新闻故事。假新闻,真新闻和讽刺新闻。


    数据集可获取方式:


    https://github.com/rpitrust/fakenewsdata1


    代表论文


    640?wx_fmt=png


    数据挖掘


    [Benjamin D. Horne and Sibel Adalı,2017] 通过手工构建了大量的特征,使用单因素方差分析和秩和检验对特征进行挖掘。 发现真新闻文章明显长于假新闻文章,假新闻很少使用技术词汇,更少的标点符号,更少的引号和更多的词汇是冗余的。另外标题也有明显的不同,假新闻的标题会更长,更喜欢增加名词和动词。真的新闻通过讨论来说服,假新闻通过启发来说服。 


    类似的内容分析还有:Automatic Detection of Fake News


    [z.zhao et, 2018] 发现大多数人转发(红点)真实新闻是从一个集中的来源(绿点)。而虚假新闻通过人们转发其他转发者来传播的。


    640?wx_fmt=png


    相关论文介绍


    在工业界比如互联网公司解决该类问题主要还是通过构建 pipeline,融合多个模型:内容向模型集,用户向模型集,结合号主发布者特征,内容产生的用户行为特征等综合构建一套体系进行解决。


    640?wx_fmt=png


    我们在实际控制的时候结合了几十个静态 + 动态特征模型和知识库进行召回 pop 人工验证。


    640?wx_fmt=png


    然而和工业界处理问题不同的是,顶会的相关论文主要根据数据集的特点,通过单模型进行建模解决。主要的参考的维度有:1)内容本体 ;2)内容生产源(源,内容发布者);3)内容阅读者(用户)及其行为(订阅,评论)三大类,多个小类的特征进行融合处理。


    比如通过端到端的深度学习,基于概率分布的特征挖掘,构建新颖的综合类目标函数等大一统的方式进行尝试解决。很多模型往往只能在小规模数据集上进行实践。我们介绍几篇学术领域相关较新论文。


    640?


    640?wx_fmt=png


    这篇是 CIKM 2017 的 long paper。作者认为通过构建社交图谱并不便利,构建一些假新闻的特征也需要大量人工知识。文章认为之前的检测方法不能很好的一次整合正文(text),反馈(response),源(source)三者的特征。论文的数据集来自 twitter 和 weibo,weibo 中的正文就是讨论的某个话题,而非一般的文章,反馈就是主题参与者的回复,源就是回复的用户。 


    整个架构由两个部分组成:Capture 模块用于提取一篇正文所有的反馈文本信息,通过 LSTM 来组装多个回复内容。 Scoure 模块通过构建用户关系网络降纬后计算得到一对si和y^i ,si用于后续网络计算,y^i 也可用于单独的用户分析。


    640?wx_fmt=png


    如上图的 Capture 部分用来抽取文章和用户的低维度表示 ,用一个 RNN 来抽取正文(text)的向量。


    640?wx_fmt=png


    η 表示订阅的数量 ,Xu 表示用户的全局特征,xτ 就是所有回复评论的文本特征。


    Score 部分,作者对于参与计算的用户特征构造,文中使用了用户之间共同订阅参与主题数量构建的矩阵,然后进行 SVD 降纬,获得对用户的表示 yi, 然后参与计算得到640?wx_fmt=png,之后通过一个 mj 的 mask 处理,和上一阶段得到的那些与正文 aj 产生关系的用户,对应的特征向量做求和平均之后得到文章打分向量 pj。


    Capture 得到的 vj 和 Score 的 pj 进行拼接,得到 cj,640?wx_fmt=png最终的 Loss 函数是二分类交叉熵损失 sigmoid 加上 L2 正则约束。


    640?wx_fmt=png


    不得不说作者把基于用户参与的内容对文章的刻画和用户之间的行为构建的网络对文章的刻画,二者蕴含的信息都转化成文章的向量同时进行反向传递的目标学习,这点具有很大的突破性。


    640?


    640?wx_fmt=png


    这篇是中科院计算机研究所的金志威和曹娟博士的研究工作,发表在 AAAI 2016。


    640?wx_fmt=png


    Step 1:作者通过一个 Topic 模型来进行冲突的观点挖掘。


    通过对发帖的支持和反对行为构造信用网络(Credibility NetWork),作者认为每一个帖子(tweet)都是由一组混合的主题 topic,和对某个特定主题 topic 多种观点 viewpiont 组成。 每一个主题-观点(topic-viewpoint )pair,它的分布参数来自 Dirichlet 分布640?wx_fmt=png。k 表示 topic 维度,l 表示 viewpoint 维度。


    1. 每一个帖子,组成它的所有 topic,符合一个参数为 θt 的 Dirichlet 分布640?wx_fmt=png。 


    2. 同样对所有可能的 topic,组成它的所有的 viewpoint 同样符合一个参数为 ψtk 的 Dirichlet 分布。


    然后怎么生成文章呢,就是通过 θt 为参数的多项式分布中得到主题,从 ψtk 的多项式分布中得到观点 Vtn,由于这里已经确定了 ψtk 的 k,就是主题 k=Ztn,所以就是640?wx_fmt=png,l 就是 Vtn。


    那最终一个 tweet 的 topic-viewpoint 生成的参数 Φkl 就可以写成640?wx_fmt=png,就是产生自多项式分布640?wx_fmt=png


    如果一个来自同一个主题下面的多个主题-观点 pair,之间距离非常大(设定值h) 。距离采用 Jensen-Shannon Distance(JSD),其实 JSD 是 KL Divergence(Dkl)的等价模式。 


    具体冲突观点挖掘如下: 


    1. 对一个新闻数据集建模,生成大量的 topic-viewpoint pair;


    2. 比较同一个 topic 生成的 topic-viewpoint 对的 JSD,建立链接关系; 


    3. 用 Wagstaff et al 2001 提到的带限制的 K-means 算法,把某个 topic 下的 viewpoint 观点聚合成两个彼此冲突的堆。


    Step 2:构建网络迭代学习


    接下来就是信用网络的定义。根据上面的主题模型挖掘,我们已经有了参数 θt(主题)和 ψtk(观点),就可以得到一个 tweet t 在 topic k 上的 viewpoint l 观点为640?wx_fmt=png,两两 tweet 的函数值定义为:640?wx_fmt=png, Djs 表示 Jensen-Shannon 距离。wij 就是 f(ti,tj) 的矩阵。


    文中定义 loss function 如下:


    640?wx_fmt=png


    其中640?wx_fmt=png的 C(ti) 表示 tweet ti 的信用值,是需要学习的参数。 具体求导和证明网络可收敛过程可以参考论文,最终得到每 k 轮迭代的表达式:


    640?wx_fmt=png


    640?


    640?wx_fmt=png


    论文开始先通过大量数据分析挖掘,发现帖子内容,作者和主题三者和新闻的真假有很强的关联性。于是把三者放入一个深度扩散网络中 ,同时最小化三者的目标。


    640?wx_fmt=png


    论文通过学习显式特征(Explicit)和潜在特征(Latent),潜在特征通过  GRU 的 Hidden 层和 Fusion 层得到:


    640?wx_fmt=png


    640?wx_fmt=png


    潜在特征通过 GRU 的 Hidden 层和 Fusion 层得到:


    640?wx_fmt=png


    论文提出了一个 GDU 单元,不仅可以针对帖子正文,还可以对作者,主题同时进行学习。


    640?wx_fmt=png


    640?wx_fmt=png


    其中,作者的 L(Tu) 如下:


    640?wx_fmt=png


    其他的 L(Tn) L(Ts) 是一样的形式。 


    最终的网络架构三者相互连接起来如下图:


    640?wx_fmt=png


    论文和其他方法进行了对比。整个方法有点类似图神经网络。


    640?


    640?wx_fmt=png


    这篇文章中了 WSDM '19 ,个人认为创新性很高。把作者(或者是发布者),新闻,社交网络的用户,和用户直接的订阅行为,构建了 5 个矩阵。


    640?wx_fmt=png


    640?wx_fmt=png


    新闻内容矩阵;用户矩阵;用户-新闻行为矩阵,作者-新闻发布关系矩阵。其中新闻内容矩阵,和用户矩阵,采用 NMF 进行分解。


    640?wx_fmt=png


    640?wx_fmt=png


    用户-新闻行为矩阵分解的目标是:高信用分的用户偏好分享真实新闻,低信用分用户偏好分享假新闻。


    640?wx_fmt=png


    作者-新闻发布关系矩阵分解的目标:基于新闻发布者的潜在特征,可以通过他发布的行为得到。文章把新闻发布者分为各种党派风格 o ,然后用分解后的矩阵拟合这个特征。


    640?wx_fmt=png


    通过和 Hadamard 正交矩阵做运算 ⊙ 来衡量误差大小。 


    最后通过把刚刚几个矩阵得到的分解矩阵进行运算,最终目标是:


    640?wx_fmt=png


    把所有的矩阵分解目标和最终目标拼接起来就得到的整体目标函数:


    640?wx_fmt=png


    具体求导过程需要一定数学知识,对这篇论文有兴趣的同学可以看原文。


    相关比赛


    Dean Pomerleau 和 Delip Rao 在 2017 年举办了假新闻挑战:Exploring how artificial intelligence technologies could be leveraged to combat fake news.


    比赛地址:


    http://www.fakenewschallenge.org/


    训练样本和预测输入都是一个长事件标题和一段正文内容。输出的目标是正文内容是对标题的:1)赞同,2)反对,3)讨论,4)不相关。


    640?wx_fmt=png


    组委会认为,观点检测任务和假新闻任务场景是有强相关的,仅仅相关或不相关会比较容易。通过正文来分析观点是否赞同标题的内容陈述。第一名采用了深度卷积神经网络和 GBDT 两个模型。第二名采用了多种模型得到特征(如 NMF,LDA ,LSI,unigrams 等等)加上多层 MLP。这次比赛其实只能算假新闻领域的一个子问题的尝试。 


    [Andreas Hanselowski, 2018] 这篇 COLING 的 Long Paper 中作者对这次比赛的前三名的方法和特征表现进行了分析,提出了自己的改进方案,取得了该任务 state-of-the-art 的表现。


    640?wx_fmt=png


    他们的框架把语义信息特征通过 stackLstm 表征,再加上对标题和正文的特征融合,实验表现在小样本的类别上有明显提升。


    参考文献


    [1]. Yuyu Zhang, Hanjun Dai, Zornitsa Kozareva, Alexander J. Smola, Le Song. "Variational Reasoning for Question Answering with Knowledge Graph". arXiv preprint arXiv:1709.04071, 2017.

    [2]. Zhiwei Jin, Juan Cao, Yongdong Zhang, and Jiebo Luo. "News Verification by Exploiting Conflicting Social Viewpoints in Microblogs". AAAI 2016. 

    [3]. Kai Shu, Suhang Wang, Huan Liu. "Beyond News Contents: The Role of Social Context for Fake News Detection". WSDM 2019.

    [4]. Kai Shu, Amy Sliva, Suhang Wang, Jiliang Tang, Huan Liu. "Fake News Detection on Social Media: A Data Mining Perspective". SIGKDD 2017.

    [5]. William Yang Wang. “Liar, Liar Pants on Fire”: A New Benchmark Dataset for Fake News Detection. ACL 2017.

    [6]. Natali Ruchansky, Sungyong Seo, Yan Liu. "CSI: A Hybrid Deep Model for Fake News Detection". CIKM 2017.

    [7]. Andreas Hanselowski, Avinesh PVS, Benjamin Schiller, Felix Caspelherr, Debanjan Chaudhuri, Christian M. Meyer, Iryna Gurevych. "A Retrospective Analysis of the Fake News Challenge Stance Detection Task". arXiv preprint arXiv:1806.05180, 2018.

    [8]. Benjamin D. Horne, Sibel Adali. "This Just In: Fake News Packs a Lot in Title, Uses Simpler, Repetitive Content in Text Body, More Similar to Satire than Real News". ICWSM 2017.


    640?



    点击以下标题查看更多往期内容: 





    640?#投 稿 通 道#

     让你的论文被更多人看到 



    如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢? 答案就是:你不认识的人。


    总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 


    PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得技术干货。我们的目的只有一个,让知识真正流动起来。


    来稿标准:

    • 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向) 

    • 如果文章并非首发,请在投稿时提醒并附上所有已发布链接 

    • PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志


    ? 投稿邮箱:

    • 投稿邮箱:hr@paperweekly.site 

    • 所有文章配图,请单独在附件中发送 

    • 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通




    ?


    现在,在「知乎」也能找到我们了

    进入知乎首页搜索「PaperWeekly」

    点击「关注」订阅我们的专栏吧



    关于PaperWeekly


    PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。


    640?

    ▽ 点击 | 阅读原文 | 获取最新论文推荐

    展开全文
  • 新闻分类器
  • 新闻数据集文本分类实战
  • 假新闻 使用django和python及数据集虚假新闻检测
  • 如今,社交媒体中的虚假新闻检测已得到广泛研究。 尽管大多数以前的工作都专注于不同的网络分析,但事实证明,新闻用户网络中个人的用户配置文件很有用,但在分析网络结构时却被忽略了。 因此,在本文中,我们旨在...
  • 本文对虚假新闻的检测进行了综述。我们的调查介绍了自动识别假新闻的挑战。我们系统地回顾了为这项任务所开发的数据集和NLP解决方案。我们还讨论了这些数据集和问题公式的限制、我们的见解和建议的解决方案。
  • SMP2020微博情绪分类数据集
  • 微博虚假新闻鉴别模型的设计与实现,李少愚1,徐鹏,本文主要针对当前微博虚假新闻泛滥的现状,对比国内外虚假新闻鉴别的同类型方法,从基于文本内容的角度提出并实现了以深度学习技
  • VOA-KG2txt,这是本文使用合成KG to text 的方式自己构建的虚假新闻数据集; 对比方法:[2] 和 [3]; document-level的检测结果分析: 如下表1所示,在两个数据集上,本文方法都高于另外两个baseline很多。 作者...

    本博客系博主根据个人理解所写,非逐字逐句翻译,预知详情,请参阅论文原文。

    论文标题:InfoSurgeon: Cross-Media Fine-grained Information Consistency Checking for Fake News Detection;

    作者:Yi R. Fung1, Chris Thomas2, Revanth Reddy1, Sandeep Polisetty3, Heng Ji1, Shih-Fu Chang2, Kathleen McKeown2, Mohit Bansal4, Avirup Sil5;

    • 1 University of Illinois at Urbana-Champaign
    • 2 Columbia University
    • 3 UMass Amherst,
    • 4 University of North Carolina at Chapel Hill,
    • 5 IBM

    发表地点:ACL 2021;

    论文下载链接:https://aclanthology.org/2021.acl-long.133.pdf

    代码链接:https://github.com/yrf1/InfoSurgeon

    摘要:

    为了对抗神经网络生成的虚假新闻(fake news),急需一种有效的机制。

    本文构造了一个新的知识元素级的基准数据集(benchmark at the knowledge element level),同时提出了一个知识元素(knowledge element, KE)级别的虚假新闻检测方法,通过检查跨模态信息的一致性实现对导致虚假的细粒度知识元素的检测。

    由于KE级别虚假新闻检测方向的训练数据缺乏,本文制定了一种新的数据合成方法,通过修改知识图谱中的知识元素来产生特定的、难以检测的、包含已知不一致性的,噪声训练数据。

    本文的虚假信息检测方法超过现有SOTA(准确率最多超过16.8%),且对于虚假信息的检测提供了细粒度的可解释性。

    本文动机及现有方法的问题:

    • 现有fake news detection方法大多使用word emb或者semantic emb构建基于document-level的检测模型。但是,虚假新闻fake news通常是对真实新闻real news进行了小幅度的修改得到的,比如夸大,伪造其中关键的知识元素;或者fn是由于没被证实(实时性);还有fn需要其他模态的补充信息才能验证其真假性(不一致性)。这些情况下,细粒度的fake使用document-level的模型就可能检测不出来了。
    • 通过挖掘多模态news的自身不一致性(比如图像内容和文本内容相悖),或者与既有事实的不一致性,来检测news里面的mis KEs。这种方式对于判定fake有更好的可解释性。
    • KE级的fake news一个大问题是缺乏训练数据,因此本文提出了一种方法,将real news构建为图,然后替换或者插入节点或者边,得到虚假的图,再将图转变为text,就实现有效的KE-level的training fake news的生成。

    本文主要贡献:

    • 通过将news表示为一个多模态知识图谱(knowledge graph, KG)的方式,检测其中mis的元素pieces,以带来强可解释性;
    • 本文模型同时利用fake news的source context,语义表示,多模态信息,和背景知识,实现fake news的检测;
    • 创建了一个benchmark数据集,KE level的;

    本文模型及方法:

    1. 问题定义:

    给定一条多媒体新闻X,如上图最左边所示,虚假新闻检测任务的目的就是判断该新闻的真假性。该新闻数据包含以下3个方面:

    1. 新闻的主体内容:body text bt;
    2. 若干图像 im_1,..., im_i,及其对应的若干标题 c_1, ..., c_i;
    3. 新闻的元数据metadata,m包含所属领域domain,发布时间date,作者author,标题headline;

    本文的虚假新闻检测目的是在两种level上检测新闻的真假性:

    • document-level:针对每一条多媒体新闻,检测该新闻整体的真假性;
    • knowledge element-level:检测一条新闻中,导致其虚假的特定的知识元素(本文将要检测的KE定义为信息网络中的实体entities,关系relations,事件events,以及子图subgraphs或者元路径metapaths,这些元素);

    2. 模型整体结构:

    如上图中间部分所示,本文将每一条多媒体新闻构造为一个多媒体知识图(multimedia knowledge graph)KG=(N, E),其中N是节点,由实体 t 构成;E是边,包含关系 r,事件元素角色 a。

     那么本文两种level的虚假新闻检测实际转化为:

    • document-level:检测一个多媒体知识图整体的真假性,使用准确率作为评估指标;
    • KE-level:检测知识图中边edge的真假性(因为实体本身是没有真假性之说的,所以实际反映真假的只有graph中的边关系),使用F-score作为评估指标;

    3. 模型特征初始化:

    如上图中间所示,本文模型同时从global context和local KG提取特征:

    3.1. global context是news所包含的原始数据:body text,image,cpations,metadata(是否只有节点,形成边吗?)。

    该部分的特征初始化方法:

    • body test和caption使用变体的BERT,对encoded token进一步学习句子级表示;
    • 对元数据metadata,将他们输入text encoder得到特征表示;
    • 对图像,拼接其object级特征和event级特征;
    • 上述数据提取的nodes间的edge,使用node features间基于attention的语义相似性构建;

    3.2. local KG是通过将news中提取的nodes与KG中实体nodes连接,构成最终graph。

    每个news构成一个KG,先用IE系统从news中提取实体关系等,然后进行entity  linking将提取的东西map到现有知识图库中(没见过的实体就用聚类去map)。

    该KG中所有节点和边的初始化特征由以下三个部分组成:

    • background embeddings:对于KG中的实体节点N_t,通过Freebase数据库找到它的wikipedia页面,然后将该页面第一段的文本输入基于LSTM的语义表示模型,得到N_t的特征表示;对于边edge而言,是将其连接的两个节点的wikipedia介绍一起输入LSTM型模型,得到edge的特征表示;对于没有wikipedia页面对应的节点和边,该部分向量置为0;
    • news embeddings:News-based node features are initialized from passing an LSTM through the word embeddings of the canonical entity mention extracted(这部分我没有看明白,但是博主猜测可能是用news中对于该实体节点或者关系边的相关text经过LSTM网络来获得他们的news embeddings);
    • source attribution:这是一个4维的二进制向量,代表该向量是来自新闻的哪一部分数据,body text,image, caption,还是metadata;

    4. 特征传递和联合学习:

    作者认为所构造的KG中non-fake的triplets(包含两个节点和一条边)想比较于fake的triplets而言,它的边与node关系更近。因此要学习节点之间连接的credibility来反映真假性。

    • 具体而言,针对global context subgraph中的节点u,利用其邻居节点v来传递和更新它的特征表示,具体公式如下(GNN类似):

    • 针对local KG网络,给定其中两个节点u和v,利用上述公式(1)计算他们之间的credibility。
    • 最后通过图注意力和消息传递机制,将global context和local KG的特征信息联合起来。(问题:一条新闻不是被构建成了一个多媒体的图吗?这里为什么又分成了两个图?这两个图还各自有自己的学习方法?然后再结合起来?

    5. 模型检测部分:

    • document-level检测:前面已经学到了graph中节点和边的特征表示,可以用avg或者max pooling从node/edge feature得到graph feature。然后对graph feature进行线性分类就可以实现真假性检测。另外本文在分类前还用了一些指示变量to strengthen signals,这些指示变量可以反映重复实体数目(增加指示变量这有什么好处?暂时不明白)。
    • KE-level检测:就是对KG中边进行分类,检测这些关系或者事件角色是否正常。

    6. 虚假新闻生成:

    由于KE级的虚假新闻标注数据太少,而人工标注成本太高,所以本文提出两种方法构建可控的合成的虚假新闻,并且能够为KE自动生成标签(有关真假的标签)。

    给定一个真实新闻集合X_{real},针对他们所构建的KG,作者有意地修改KG中的显著KEs,得到一个修改后的虚假的KG‘;那么,被修改的KEs就能够自动拥有其标签---fake,未被修改的KEs就是real的,同时在document-level上,修改后的KG’再转化为text之后,得到就是fake的新闻。

    6.1 合成的KG to text

    在KG的基础上修改特定KE实现虚假text的生成。具体包括修改实体,关系,和事件。

    • 实体替换:将原始实体替换为同类型的其他实体;
    • 增加新关系或者事件:对于KG中现有的实体,随机选择其一个关系或者事件,然后为该实体和关系添加一个新的实体(相当于给定头实体和关系,增加一个尾实体);
    • 子图替换:用另一个新闻中的子图替换当前新闻中的子图(包含特定的node的子图);

    本文同时考虑过去掉node或者edge,但是发现缺失信息对于检测任务而言太难了。所以最终没有选择去掉显著KEs的方式。

    最后,得到合成的KG’后,通过fine-tuning一个BART-large模型,生成对应的虚假新闻。如下图3所示,是一个实体替换的例子。

    6.2 合成的AMR to text

    前人工作发现caption对于检测虚假新闻非常有用,因此本文还通过现有的real news的captions来合成虚假新闻,通过修改caption中实体之间的关系。

    作者首先提取real news的captions的抽象语义表示(Abstract Meaning Representation ,AMR,能够捕获丰富的句子级语义特征)图,然后修改这些AMR graphs,最后将修改后的虚假AMR graph转化为text,得到虚假news。如下图4所示是一个例子。

    具体修改AMR graph的方式这里不再赘述,详细请看论文原文4.2章节。

    实验:

    数据集:

    • NYTimes-NeuralNews,这是一个多媒体的虚假新闻检测基准数据集,由[1],[2]文章提出;
    • VOA-KG2txt,这是本文使用合成KG to text 的方式自己构建的虚假新闻数据集;

    对比方法:[2] 和 [3];

    document-level的检测结果分析:

    如下表1所示,在两个数据集上,本文方法都高于另外两个baseline很多。

    作者认为,相比于tan 2020的方法,本文优势在于使用了多媒体结构推理,借助了额外的KG中background信息,还能捕获实体,关系这些结构信息。

    同时作者认为,VOA这个本文构建的数据集,本身对于infoSurgeon来说是有特定难度的,但是本文方法仍然表现最好。

    KE-level的检测结果:

    针对KE-level的虚假检测有利于虚假新闻检测的可解释性,能够告诉我们是什么导致了新闻的fake。

    但是由于数据的缺乏,目前只能在本文自己构建的VOA数据集上进行KE-level的检测实验。如下表2所示,与随机方法相比,本文方法明显性能更好。

    另一方面,整体检测准确率很低,是因为针对KE-level的虚假检测难度较大,需要higher-level的推理,基于多媒体和事实信息进行检测。

    消融实验分析和样例展示(论文5.4章节):

    如下表3所示,分别给出仅使用KG,semantic features,和指示值的本文变体模型所得的虚假新闻检测结果,从中可以看出语义特征对检测虚假最有效(就是news的text,image和captions这些semantic features),KG对细粒度的虚假KE检测有辅助作用。

    如下表4所示,是一个 虚假新闻的例子,Tan 2020的方法认为该新闻是real,而本文的方法正确识别出了该新闻为fake的,并且从KE-level定位出它的错误在于“twin towers”这个实体。附录中有其他此类样例,感兴趣的可以去论文原文查看。

    对生成文本的人工图灵测试:

    为了测试本文KG-to-text生成新闻的质量,作者进行了人工测试。随机选取了100篇新闻,一半real一半fake,让16个人判断这些新闻的真假。

    最后的结果是:整体的判断准确率是61.6%,真新闻的判断准确率是81.2%,假新闻的判断准确率只有41.9%。有三分之一的假新闻几乎一半的人都判断错误了。

    实验结果表明,本文自动生成的虚假新闻对于人类而言是较难判断的(也就是具有较高质量的text)。

    总结及展望:

    本文提出了一个新的方法在检测多媒体虚假新闻任务上能达到92%-95%的准确率,充分利用跨模态的不一致性和KE-level的关系,实现细粒度的可解释性的虚假新闻检测。

    在未来,作者们计划从更多的模态上进行虚假内容的检测,比如结合text,image,video,audio等各种信息;从multiple documents或者在常识knowledge上进行一致性推理;推广到open-domain的document 检测上,比如多源的,多语言的,多文化的。

    长远来看,作者计划创造更多人工生成的数据,能够包含更多类型的虚假,比如实体新颖性,新闻价值等。

    注意:为了避免不怀好意的人创造更多虚假新闻,本文不公开虚假新闻的生成器部分模型;同时公开虚假新闻检测方面模型,以供大家更好地打击虚假新闻。详见论文原文第8章节。

    个人理解和问题:

    1.本文实验上只选用了两个数据集,其中一个还是自己创建的,不能体现本文模型针对不同数据集,在不同领域新闻上的泛化性。为什么不多用几个数据集呢?

    2.本文对比方法只选用了两个,现有的虚假新闻检测的多模态模型已经很多了,为什么不进行对比呢?

    参考文献:

    [1] Ali Furkan Biten, Lluis Gomez, Marc¸al Rusinol, and Dimosthenis Karatzas. 2019. Good news, everyone! context driven entity-aware captioning for news images. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 12466–12475.

    [2] Reuben Tan, Bryan Plummer, and Kate Saenko. 2020. Detecting cross-modal inconsistency to defend against neural fake news. In Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing (EMNLP), pages 2081–2106, Online. Association for Computational Linguistics.

    [3] Rowan Zellers, Ari Holtzman, Hannah Rashkin, Yonatan Bisk, Ali Farhadi, Franziska Roesner, and Yejin Choi. 2019. Defending against neural fake news. In Advances in Neural Information Processing Systems, pages 9054–9065

    展开全文
  • 虚假新闻识别检测分类

    千次阅读 2021-12-02 22:39:33
    在这个社交媒体和互联网的世界中,我们接触到各种新闻和文章,但其中一些...想对媒体产生的新闻进行鉴别,实现对虚假新闻和真实新闻的检测分类识别,以便用户对获取到的新闻进行清晰的认知,排除虚假新闻对用户的影响。

    虚假新闻检测

    一、项目主题

    ​ 针对媒体出现的虚假新闻和真实新闻进行检测识别。

    动机:在这个社交媒体和互联网的世界中,我们接触到各种新闻和文章,但其中一些新闻和文章是假的,是为了好玩或出于恶意而制作的,这对社会是非常有害的。想对媒体产生的新闻进行鉴别,实现对虚假新闻和真实新闻的检测分类识别,以便用户对获取到的新闻进行清晰的认知,排除虚假新闻对用户的影响。

    方法:采用监督学习模式,使用 T f i d f V e c t o r i z e r , C o u n t V e c t o r i z e r , P a s s i v e A g g r e s s i v e C l a s s i f i e r TfidfVectorizer,CountVectorizer,PassiveAggressiveClassifier TfidfVectorizerCountVectorizerPassiveAggressiveClassifier ,贝叶斯分类器对文本进行分类。

    数据集datasethttps://download.csdn.net/download/weixin_51206814/54260176

    代码链接https://download.csdn.net/download/weixin_51206814/55499702

    项目实例:在实验过程中,参考以下论文实例。

    • [1]许丽,焦博,赵章瑞.基于TF-IDF的加权朴素贝叶斯新闻文本分类算法[J].网络安全技术与应用,2021(11):31-33.
    • [2]陈翠娟.改进的多项朴素贝叶斯分类算法和Python实现[J].景德镇学院学报,2021,36(03):92-95.

    二、实验报告

    2.1 方法介绍

    2.1.1 贝叶斯分类文本

    ​贝叶斯分类算法是一种以统计学为基础的分类算法。朴素贝叶斯分类算法是对传统贝叶斯分类算法进行朴素的假设,所谓朴素就是假设数据类别之间彼此独立,互不产生任何影响。首先要计算属于某一 类的先验概率,然后再利用贝叶斯定理计算其属于此类的后验概率,对各类后验概率的大小进行比较就可进行分类。贝叶斯公式也称为贝叶斯法则,它是关于随机事件 A A B B 的条件概率和边缘概率的。任何事件的发生都不是完全偶然的,往往都是以其他事件的发生为基础的。条件概率研究的就是在事件 A A A 发生的基础上,事件 B B B 发生的概率。贝叶斯法则是根据已知先验概率求后验概率。后验概率就是一种条件概率,一般的条件概率是由因求果,后验概率则是知果求因。

    ​在对新闻文本的表示中,使用一个 n n n 维向量的形式在多维空间进行表示,对文本的每个词赋予一个权重,在本实验中采用 T F − I D F TF-IDF TFIDF 来计算特征词的权重,下一部分将对这个 T F − I D F TF-IDF TFIDF 进行详细解释。特征权重就是该词对应空间向量的一个维度坐标,可以进行如下表示:
    ​新闻文本 f i f_i fi 在向量空间中就可以表示为:
    V ( f i ) = ( W i 1 , W i 2 , ⋯   , W i n ) V(f_i)=(W_{i1},W_{i2},\cdots,W_{in}) V(fi)=(Wi1,Wi2,,Win)
    ​其中, f i f_i fi 是数据集中第 i i i 篇新闻文本, i = 1 , 2 , ⋯   , m ; n i=1,2,\cdots,m;n i=1,2,,m;n f i f_i fi 中含有的特征词个数, W i j W_{ij} Wij 是新闻文本 f i f_i fi 中特征词 t j t_j tj 的特征权重, j = 1 , 2 , ⋯   , n j =1,2,\cdots,n j=1,2,,n

    ​对于文本分类来说,设训练数据集 F = { f 1 , f 2 , ⋯   , f m } F =\{f_1,f_2,\cdots,f_m\} F={f1,f2,,fm},训练集数据分为 k k k 类,记为 C i , i = 1 , 2 , ⋯   , k C_i,i=1,2,\cdots,k Cii=1,2,,k。类 C i C_i Ci 的先验概率为 P ( C i ) P(C_i) P(Ci) ,则文本 d d d 的后验概率为:
    P ( C k ∣ d ) = P ( d ∣ C k ) P ( C k ) P ( d ) P(C_k|d) = \frac{P(d|C_k)P(C_k)}{P(d)} P(Ckd)=P(d)P(dCk)P(Ck)
    ​有朴素贝叶斯算法的独立性假设:各个特征词之间是相互独立。可以得到条件概率:
    P ( d ∣ C k ) = P ( ( W i 1 , W i 2 , ⋯   , W i n ) ∣ C k ) = ∏ i = 1 n P ( W i n ∣ C k ) 代 入 上 式 可 得 : P ( C k ∣ d ) = P ( C k ) ∏ i = 1 n P ( W i n ∣ C k ) P ( d ) P(d|C_k) =P((W_{i1},W_{i2},\cdots,W_{in})|C_k)=\prod_{i=1}^nP(W_{in}|C_k)\\ 代入上式可得:P(C_k|d)=\frac{P(C_k)\prod_{i=1}^n P(W_{in}|C_k)}{P(d)} P(dCk)=P((Wi1,Wi2,,Win)Ck)=i=1nP(WinCk)P(Ckd)=P(d)P(Ck)i=1nP(WinCk)
    ​由于 P ( d ) P(d) P(d) 是确定不变的,因此在比较后验概率的时候只需要比较分子部分即可。即:
    C k = a r g   max ⁡ P ( C k ) ∏ i = 1 n P ( W i n ∣ C k ) C_k =arg\ \max P(C_k)\prod_{i=1}^nP(W_{in}|C_k) Ck=arg maxP(Ck)i=1nP(WinCk)
    P ( W i n ∣ C k ) P(W_{in}|C_k) P(WinCk) 中,实际可以将其看作是 T F − I D F TF-IDF TFIDF 的值,用 T F − I D F TF-IDF TFIDF 的值代替概率进行计算。(个人理解)

    2.1.2 采用TF-IDF文本特征提取

    T F TF TF 指词频,表示某个词在文章中出现的频次; I D F IDF IDF 指逆文档频率,表示包含该词的文档数占语料库文档数的比例。
    词 频 ( T F ) = 某 词 出 现 在 文 章 中 的 次 数 逆 文 档 频 率 ( I D F ) = l o g ( 语 料 库 文 档 总 数 + 1 包 含 该 词 的 文 档 数 + 1 ) + 1 T F − I D F = T F × I D F 词频(TF) = 某词出现在文章中的次数 \\ 逆文档频率(IDF) =log(\frac{语料库文档总数+1}{包含该词的文档数+1})+1\\ TF-IDF = TF \times IDF (TF)=(IDF)=log(+1+1)+1TFIDF=TF×IDF
    ​对于不单独使用词频是由于一些普遍出现的词,在文章出现的次数一般也越高,那么词频就会较高,从词频角度分析,看起来似乎是更重要的特征,但因为这个词普遍出现,这个词可能不是非常的重要,那么单独采用词频 ( T F ) (TF) (TF) 进行向量化特征表示就无法反应这一点。

    ​使用 T F − I D F TF-IDF TFIDF 的基本思想:如果某个词语在某篇文档中出现的频率很高,从 T F TF TF 的角度来说就是, T F TF TF 很高,但是在语料库内的其他文档中出现的频率很低,从 I D F IDF IDF 角度来说,就是 I D F IDF IDF 高,则认定此词语在某种程度上可作为该文档的特征词,具备类别区分能力,可作为分类的依据。一个字词的重要性与它在某份文件中出现的次数正相关,字词在文件中出现的次数越多重要性越大,但同时与它在语料库中出现的频率呈负相关,语料库中出现的次数越多,则该字词的重要性越小。

    ​在对文本特征提取的过程中,可以采用 T f i d f V e c t o r i z e r TfidfVectorizer TfidfVectorizer 或者 C o u n t V e c t o r i z e r CountVectorizer CountVectorizer ,两种方法区别不大,本实验主要采用 T f i d f V e c t o r i z e r TfidfVectorizer TfidfVectorizer ,下面介绍一下在使用 T f i d f V e c t o r i z e r TfidfVectorizer TfidfVectorizer 对文本特征进行提取的过程。

    • 使用 T f i d f V e c t o r i z e r TfidfVectorizer TfidfVectorizer 需要调用机器学习 s k l e a r n sklearn sklearn 的库,下面是调库语句。

      from sklearn.feature_extraction.text import TfidfVectorizer
      
    • 定义语料库的语句,为了便于观察原理过程,语料库加入了两个句子。

      corpus=["I come to China to travel",
      "This is a car polupar in China"]
      
    • 定义完语料库后,调用 T f i d f V e c t o r i z e r TfidfVectorizer TfidfVectorizer ,出于数据集是英文文本,设置停用词 “ e n g l i s h english english”,将包含在 n l t k . c o r p u s nltk.corpus nltk.corpus 的英语停止词中的单词进行删除,这些词包括介词、连词、冠词、to be 等没有意义的词。对语料库根据 T f i d f V e c t o r i z e r TfidfVectorizer TfidfVectorizer 参数规则进行操作,比如滤除停用词等,拟合原始数据,生成文档中有价值的词汇表,结合 f i t _ t r a n f o r m fit\_tranform fit_tranform 完成向量化。
      上图是滤除停用词后的结果,可以看见将语料库中的一些冠词、连词等删除,同时对这些词语按字母序排序,得到一个 “ v o c a b u l a r y vocabulary vocabulary” ,得到这个后,对语料库里的句子文本进行处理,结合 f i t _ t r a n f o r m fit\_tranform fit_tranform 对词语进行向量化。结果如下:

      上图 ( 0 , 4 ) (0,4) (0,4) 表示第 0 0 0 个字符串,词汇表里第 4 4 4 个单词的 T F − I D F TF-IDF TFIDF 值。计算过程为:单词 t r a v e l travel travel 在第 0 0 0 个字符串也就是语料库的第一个句子中,词频为 T F = 1 TF=1 TF=1 ,逆文档频率 I D F = l o g 2 + 1 1 + 1 + 1 = l o g 3 2 + 1 = 1.40546108 IDF = log\frac{2+1}{1+1}+1 = log\frac{3}{2}+1=1.40546108 IDF=log1+12+1+1=log23+1=1.40546108 T F − I D F = T F × I D F = 1 × 1.40546 = 1.40546108 TF-IDF=TF\times IDF=1\times 1.40546 = 1.40546108 TFIDF=TF×IDF=1×1.40546=1.40546108。其他单词同理。
      结合 t o a r r a y ( ) toarray() toarray() 转成数据矩阵形式进行显示,这个矩阵是一个稀疏矩阵,如图, ( 0 , 0 ) (0,0) (0,0)位置的值为 0 0 0 ,解释为第 0 0 0 个字符串,词汇表里第 0 0 0 个单词,也就是 c a r car car,实际中根本没有在语料库第一句中出现,因此值为 0 0 0。由于当文本量庞大的时候,矩阵将会变得十分巨大,不利于显示,因此后续不做输出。

      下面是实现上述过程的示例代码。

      tv_fit = tv.fit_transform(corpus)
      tv.get_feature_names_out()#生成提取的文本滤除停用词后的单词
      print("tv.get_feature_names_out")
      print(tv.get_feature_names_out())#将单词输出
      # print("tv.vocabulary")
      dict = tv.vocabulary_#生成词汇表
      print(dict)#输出词汇表
      print("tv_fit")
      print(tv_fit)#输出向量化后的结果
      re = tv_fit.toarray()
      print(re)#输出转矩阵后的结果
      

    2.1.3 PassiveAggressiveClassifier 分类模型

    P a s s i v e   A g g r e s s i v e Passive\ Aggressive Passive Aggressive,是经典的 o n l i n e online online 线性分类器,它可以不断的整合新样本去调整分类模型,增强模型的分类能力。这样的模型在处理数据量庞大的数据集时,能够解决对数据读取时占用大量内存,使内存受限的情况,避免内存占用过大,解决内存问题。

    P a s s i v e   A g g r e s s i v e   C l a s s i f i e r Passive\ Aggressive\ Classifier Passive Aggressive Classifier 的具体实现和参考算法。(可以参考 https://blog.csdn.net/weixin_38493025/article/details/80728688 )
    算法伪代码:

    I n p u t : a g g r e s s i v e n e s s   p a r a m e t e r   C > 0 Input: aggressiveness\ parameter\ C > 0 Input:aggressiveness parameter C>0

    I n i t i a l i z e : W = ( 0 , 0 , ⋯   , 0 ) Initialize: W = (0,0,\cdots ,0) Initialize:W=(0,0,,0)

    F o r   t = 1 , 2 , ⋯ For \ t =1,2,\cdots For t=1,2,

    • r e c i v e   i n s t a n c e : X t ∈ R recive \ instance : X_t \in R recive instance:XtR

    • p r e d i c t   c o r r e c t   l a b e l : y t ∈ { − 1 , + 1 } predict\ correct \ label :y_t\in\{-1,+1\} predict correct label:yt{1,+1}

    • s u f f e r   l o s s : ℓ t = max ⁡ { 0 , 1 − y t ( W t ⋅ X t ) } suffer \ loss : \ell_t=\max\{0,1-y_t(W_t\cdot X_t)\} suffer loss:t=max{0,1yt(WtXt)}

    • u p d a t e update update

      • 1.   s e t 1. \ set 1. set
        τ t = ℓ t ∣ ∣ X t ∣ ∣ 2 τ t = min ⁡ { C , ℓ t ∣ ∣ X t ∣ ∣ 2 } τ t = ℓ t ∣ ∣ X t ∣ ∣ 2 + 1 2 C \tau_t = \frac{\ell_t}{||X_t||^2} \\ \tau_t = \min\{C,\frac{\ell_t}{||X_t||^2}\} \\ \tau_t = \frac{\ell_t}{||X_t||^2+\frac{1}{2C}} τt=Xt2tτt=min{C,Xt2t}τt=Xt2+2C1t

      • 2.   u p d a t e 2.\ update 2. update
        W t + 1 = W t + τ t y t X t W_{t+1} = W_t+\tau_t y_t X_t Wt+1=Wt+τtytXt

    2.2 实验设计

    2.2.1 数据处理

    ​对数据集进行读取,并且对数据集的列表数和个数进行统计,输出数据集中的前五行数据进行展示。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qtDbKcc1-1638544404355)(C:\Users\laiping\AppData\Roaming\Typora\typora-user-images\image-20211202163342090.png)]
    ​观察数据可以看见,有 4 4 4 列数据共 6335 6335 6335 条,标签 l a b e l label label 分为 “ F A K E FAKE FAKE” 和 “ R E A L REAL REAL” 两类,获取标签。然后对数据集进行分割,分割为训练集和测试集,采用对 “ t e x t text text” 和 “ l a b e l label label” 列数据进行分割,分割的测试集大小为 0.2 0.2 0.2 r a n d o m _ s t a t e random\_state random_state 是随机数种子,设置的数字相同能保证每次拆分的数据集是一样的。

    x_train,x_test,y_train,y_test=train_test_split(df['text'], labels, test_size=0.2, random_state=12)
    

    ​对数据集进行分类后,对 “ t i t l e title title” 内容进行文本特征提取,采取 T f i d f V e c t o r i z e r TfidfVectorizer TfidfVectorizer 或者 C o u n t V e c t o r i z e r CountVectorizer CountVectorizer 建立特征权重。拟合和变换训练集,变换测试集,建立数据特征矩阵。使用" f i t _ t r a n s f o r m fit\_transform fit_transform" 加载数据并将数据转化为数据矩阵形式。

    # TfidfVectorizer 形式
    # tfidf_vectorizer = TfidfVectorizer(analyzer = 'word',stop_words = 'english',norm = None)
    # CountVectorizer 形式
    tfidf_vectorizer =  CountVectorizer()
    tfidf_train=tfidf_vectorizer.fit_transform(x_train) 
    tfidf_test=tfidf_vectorizer.transform(x_test)
    

    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    ​上图为生成的词汇表和特征向量化、矩阵的结果。

    2.2.2 调用模型

    ​了解到有两种模型可供使用对于新闻文本分类,两种分类模型都能避免内存爆炸的情况出现,两种模型都能不断的整合新数据调整分类模型,能达到提高分类能力的结果。

    2.2.2.1 PassiveAggressiveClassifier 分类模型

    ​调用机器学习 “ s k l e a r n sklearn sklearn” 里的 “ l i n e a r _ m o d e l linear\_model linear_model” 里的 “ P a s s i v e A g g r e s s i v e C l a s s i f i e r PassiveAggressiveClassifier PassiveAggressiveClassifier” 分类模型,设置参数 m a x _ i t e r max\_iter max_iter ,可以调整迭代次数观察对于最后准确率的影响(迭代次数设置越大,分类准确率越大)。

    #max_iter 迭代次数越大,分类准确率就越大
    pac = PassiveAggressiveClassifier(max_iter=50)
    
    2.2.2.2 贝叶斯分类模型对文本进行分类

    ​贝叶斯分类模型分为三种, G a u s s i a n N B GaussianNB GaussianNB 就是先验为高斯分布的朴素贝叶斯, M u l t i n o m i a l N B MultinomialNB MultinomialNB 就是先验为多项式分布的朴素贝叶斯, B e r n o u l l i N B BernoulliNB BernoulliNB 就是先验为伯努利分布的朴素贝叶斯。

    • G a u s s i a n N B GaussianNB GaussianNB 贝叶斯

      • pac = GaussianNB()
        #由于TF-IDF得到的是稀疏矩阵,使用todense变得密集
        tfidf_train = tfidf_train.todense()
        tfidf_test = tfidf_test.todense()
        
    • M u l t i n o m i a l N B MultinomialNB MultinomialNB 贝叶斯

      • pac = MultinomialNB()
        
    • B e r n o u l l i N B BernoulliNB BernoulliNB 贝叶斯

      • pac = BernoulliNB()
        

    ​ 这是贝叶斯三种模型的调用代码,分别调用完模型后,进行模型训练。

    pac.fit(tfidf_train,y_train)
    
    2.2.2.3 使用模型进行预测

    ​ 在调用模型对训练集进行训练过后,需要对测试集进行预测,然后将实际结果与预测结果进行对比。

    y_pred=pac.predict(tfidf_test)#预测测试集
    #print(y_pred)
    #print(y_test)
    

    ​ 在数据量小的时候,可以将测试集的实际结果与预测结果进行输出观察预测情况对比。

    ​ 完成预测后,比较测试集实际结果,计算正确率和混淆矩阵并对结果进行分析。

    2.3 结果与分析

    2.3.1 准确率对比

    • P a s s i v e A g g r e s s i v e C l a s s i f i e r PassiveAggressiveClassifier PassiveAggressiveClassifier 分类模型

      采用 T f i d f V e c t o r i z e r TfidfVectorizer TfidfVectorizer​ 的情况,调整 t e s t _ s i z e test\_size test_size r a n d o m _ s t a t e random\_state random_state m a x _ i t e r max\_iter max_iter 三个参数比较最后分类正确率。

      n u m b e r number number t e s t _ s i z e test\_size test_size r a n d o m _ s t a t e random\_state random_state m a x _ i t e r max\_iter max_iter a c c u r a c y accuracy accuracy
      10.275091.32%
      20.375090.22%
      30.475089.94%
      40.2125090.45%
      50.2205092.19%
      60.2305090.84%
      70.2710091.55%
      80.2715091.79%
      90.2720091.63%

      分析上表格可以看出,在训练集较少的情况下对测试集进行测试,可能会得到不太好的预测结果,另外 r a n d o m _ s t a t e random\_state random_state m a x _ i t e r max\_iter max_iter 两个参数从上表来看对结果的影响并无太大关系,但从实际分析,迭代次数会影响分类效果。

      绘出准确率与迭代次数之间的折线图。观察下图可以看出迭代次数会影响分类效果。

    • 贝叶斯模型

      • G a u s s i a n N B GaussianNB GaussianNB 贝叶斯

        n u m b e r number number t e s t _ s i z e test\_size test_size a c c u r a c y accuracy accuracy
        10.280.98%
        20.379.22%
        30.479.95%
      • M u l t i n o m i a l N B MultinomialNB MultinomialNB 贝叶斯

        n u m b e r number number t e s t _ s i z e test\_size test_size a c c u r a c y accuracy accuracy
        10.290.13%
        20.389.37%
        30.488.6%
      • B e r n o u l l i N B BernoulliNB BernoulliNB 贝叶斯

        n u m b e r number number t e s t _ s i z e test\_size test_size a c c u r a c y accuracy accuracy
        10.282.08%
        20.382.22%
        30.482.56%

    ​ 从上述三种模型分类的结果分析,采用 M u l t i n o m i a l N B MultinomialNB MultinomialNB 多项式贝叶斯分类的准确率最高,主要跟先验概率的分布有关系。

    ​ 通过上述四种模型准确率对比,绘出四种模型准确率柱状图,可以清晰看出四种模型的差异。

    2.3.2 混淆矩阵

    ​ 在结果的部分,采用混淆矩阵的形式对模型预测结果进行可视化以及结果呈现。

    ​ 混淆矩阵( c o n f u s i o n   m a t r i x confusion\ matrix confusion matrix),又称为可能性表格或是错误矩阵。它是一种特定的矩阵用来呈现算法性能的可视化效果,通常是监督学习,其每一列代表预测值,每一行代表的是实际的类别。这个名字来源于它可以非常容易的表明多个类别是否有混淆(也就是一个 c l a s s class class 被预测成另一个 c l a s s class class)。

    ​ 在预测分析中,混淆表格(有时候也称为混淆矩阵),是由 f a l s e   p o s i t i v e s false \ positives false positives f a l s e   n e g a t i v e s false\ negatives false negatives t r u e   p o s i t i v e s true \ positives true positives t r u e   n e g a t i v e s true \ negatives true negatives 组成的两行两列的表格。它允许我们做出更多的分析,而不仅仅是局限在正确率。准确率对于分类器的性能分析来说,并不是一个很好地衡量指标,因为如果数据集不平衡(每一类的数据样本数量相差太大),很可能会出现误导性的结果。

    ​ 在二分类的模型中,混淆矩阵把预测情况与实际情况的所有结果进行组合,形成了真正 ( t r u e   p o s i t i v e ) (true \ positive) (true positive)、假正 ( f a l s e   p o s i t i v e ) (false\ positive) (false positive)、真负 ( t r u e   n e g a t i v e ) (true \ negative) (true negative) 和假负 ( f a l s e   n e g a t i v e ) (false\ negative) (false negative) 四种情形,分别由 T P 、 F P 、 T N 、 F N TP、FP、TN、FN TPFPTNFN 表示( T T T 代表预测正确, F F F 代表预测错误)。

    • P a s s i v e A g g r e s s i v e C l a s s i f i e r PassiveAggressiveClassifier PassiveAggressiveClassifier 分类模型的混淆矩阵在这里插入图片描述
    • M u l t i n o m i a l N B MultinomialNB MultinomialNB贝叶斯分类模型的混淆矩阵
      在这里插入图片描述在这里插入图片描述

    2.3.3 分析

    使用贝叶斯模型的优点:

    • 在于能够使用较小的空间获得更好的算法效率,空间开销小,具有稳定的分类效率,占用比较小的空间内存量,并且对缺失数据不太敏感。

    使用贝叶斯模型的缺点:

    • 需要提前知道先验概率,同时贝叶斯的假设是每个特征属性是独立,因此在属性有关联时就会使分类效果不好。
    展开全文
  • WSDM Cup 2019:ByteDance-虚假新闻分类该存储库包含在WSDM cup 2019任务1上提交1st place源代码。问题ByteDance是一家位于中国的全球互联网技术公司。他们的目标是建立一个全球性的内容平台,使人们能够以不同的...
  • 虚假新闻检测器使用LSTM-RNN 通过使用LSTM(长期短期记忆)递归神经网络,开发了深度学习模型来识别文章何时可能是假新闻。 数据集 数据集在kaggle网站上给出 任务 在nltk Framework的帮助下,通过删除标点符号,...
  • 众包收集虚假新闻数据。 已经准备好的数据。 属性:新闻:新闻文章编号。 标题:新闻文章的标题文本:文章的文本; 可能是不完整的标签:将文章标记为可能不可靠的标签。 假:不可靠,真实:可靠 造型 :fireworks...
  • 数据竞赛task1

    2020-01-07 20:51:20
    1载入数据并展示 2缺失值分析 3特征分布 4Label分布
  • 现在大多数人更喜欢互联网获取... 在这项工作中,我们使用模型集成技术来提高使用 LIAR 数据集预测假新闻的准确性。 我们还尝试将问题陈述简化为二元分类,并部署了相同的集成技术,以便为准确计算提供更好的现实方法。
  • 作者丨Nikola M. Zivkovic编辑丨极市平台导读本文分享了23个优秀的公共数据集,除了介绍数据集和数据示例外,还介绍了这些数据集各自可以解决哪些问题。本文最初发布于 rub...
  • 虚假新闻现场指南探讨了使用数字方法在线跟踪“虚假新闻”的产生,传播和接收的情况。 本文档是一个由现场指南的前三章组成的示例。 这些章节涵盖了跟踪“假新闻”在Facebook和Web上的发行以及其跟踪器签名和技术...
  • 任务描述 虚假新闻文本检测:文本是新闻信息的主要载体,对新闻文本的研究有助于虚假新闻的有效识别。...虚假新闻文本检测任务中,训练共包含38,471条新闻,其中包含真实新闻19,186条,虚假新闻19...
  • 多视角证据融合的虚假新闻甄别.docx
  • 虚假新闻检测论文调研 Evidence Inference Networks for Interpretable Claim Verification 基本信息 发表刊物和年份:2021 AAAI 摘要 现有方法的缺点 现有的方法构造了适当的交互模型(文本与文本,文本与评论,...
  • 假新闻Confia 基于新闻传播和用户声誉的虚拟媒体虚假新闻检测研究剧本这些脚本旨在创建用于数据挖掘和训练分类器的一组数据集数据集基于从Twitter提取到文件结构中的现有内容。Jupyter笔记本笔记本打算从以前创建...
  • Abs_text_summarization 一种基于深度学习的模型,该模型以抽象方式自动总结文本。 该模型通过使用递归神经网络(RNN),注意力机制和波束搜索... 该模型在有关真实和虚假新闻的公开数据集上进行了测试,验证和评估。
  • 基于NLP的COVID-19虚假新闻检测

    万次阅读 2020-06-28 22:09:58
    本文为大家介绍了基于自然语言处理的COVID-19虚假新闻检测方法以及可视化方法,并结合真实的新闻数据集以及完整的代码复现了检测以及可视化的过程。 最近有这样一则新闻:一半的加拿大人被COVID-19的阴谋论所愚弄,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,736
精华内容 694
关键字:

虚假新闻数据集