首页 > 代码库 > 【机器学习实践五】机器学习眼中的《人民的名义》

【机器学习实践五】机器学习眼中的《人民的名义》

一、背景

技术分享
最近热播的反腐神剧“人民的名义”掀起来一波社会舆论的高潮,这部电视剧之所能得到广泛的关注,除了老戏骨们精湛的演技,整部剧出色的剧本也起到了关键的作用。笔者在平日追剧之余,也尝试通过机器学习算法对人民的名义的部分剧集文本内容进行了文本分析,希望从数据的角度得到一些输入。

本文使用阿里云机器学习PAI,主要针对以下几个方面进行了实验:

  • 分词以及词频统计
  • 每一章的关键词提取
  • 每一章的文本摘要
  • 每一章文本之间的相似度分析

实验流程以及数据可以在阿里云机器学习PAI的社区直接使用,只要点击“去PAI平台创建”按钮即可在自己的项目下生成实验。社区部分截图:
技术分享

二、数据集介绍

数据源:本文数据为人民的名义部分剧集文本,一共分成1-9个章节。
具体字段如下:

字段名 含义 类型 描述
id 文章唯一标识 string 文章标识
content 文章内容 string 部分剧集内容

数据截图:
技术分享

三、数据探索流程

首先,实验流程图:
技术分享

1.分词以及停用词

分词是文本分析的基础,但是在“人民的名义”这样的文本中会有很多特有名词,是分词算法很难区分的。比如“侯亮平”、“沙瑞金”、“大风厂”等,所以我们需要在split word组件中加入一个词库,帮助分词组件可以对人名做正确的分词处理。加入的词库fufeitest.splite_w如下图:

技术分享

另外,文本中一些“的”、“地”、“得”这样的助词以及各种标点符号也需要去掉,这些词是没有意义的,对文本分析有干扰,这些词可以通过“停用词过滤”组件去除。最终通过分词以及停用词过滤组件操作之后,文本内容被整理成了如下图形态:

技术分享

2.关键词提取及词频统计

通过“词频统计”组件可以查看每一章中各个词语出现的频率,如图所示,id为1的文章中每个词语出现的次数:

技术分享

“关键词”提取组件可以返回每个文章中关键的词语以及权重,(如果我们在停用词过滤那里处理的更细致,这部分效果会更好),通过这个结果可以看到每一章的关键人物有哪些,以及他们的权重排名:
技术分享

3.文本摘要

“文本摘要”组件可以帮助您快速的浏览每一章节的关键内容,返回的是全文最关键的句子,我这里设置的是返回前三关键的句子:

技术分享

截取的是第9章的摘要内容,如果看过这个剧,通过这个摘要可以大致了解到这是在讲汉东省委关于干部任用的会议的那一集。

4.相似文章分析

通过“Doc2Vec”组件可以将文本文章映射成高维向量化,将文本按照语义变成数学向量,结果如下:
技术分享

然后可以通过”语义向量距离”组件挖掘出不同文章向量的距离,这里面的隐含关系是文章向量距离越近,那么语义越相近。我们以第9章为例:
技术分享
第9章与第8章的向量距离最小,言外之意就是这两章的语义相近,这一点也比较容易理解,因为相连的两章在意义上肯定上是有一定的关联性。

四、总结

本文通过对“人民的名义”部分章节文本的分析,帮助大家了解机器学习PAI上面的部分文本算法的用法。如果向更深入的了解相关的内容,欢迎到PAI的社区来讨论,我们会定时组织活动。

社区:PAI社区公众号

产品页:阿里云数加机器学习平台

<script type="text/javascript"> $(function () { $(‘pre.prettyprint code‘).each(function () { var lines = $(this).text().split(‘\n‘).length; var $numbering = $(‘
    ‘).addClass(‘pre-numbering‘).hide(); $(this).addClass(‘has-numbering‘).parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($(‘
  • ‘).text(i)); }; $numbering.fadeIn(1700); }); }); </script>

    【机器学习实践五】机器学习眼中的《人民的名义》