开发者学堂课程【PAL 平台学习路线:机器学习入门到应用:机器学习 PAI 文本分析-新闻自动分类系】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/855/detail/14238
机器学习PAI文本分析-新闻自动分类系
内容介绍:
一、文本分类算法简介
二、LDA 算法介绍
三、KMeans 算法介绍
四、PAI 平台实现文本分类并讲解具体流程
五、学习推荐
文本分析分为以下俩部分进行讲解:
(1)如何基于文本算法做自动新闻分类系统
(2)如何些新闻的关键词抽取,相似性分析,文本摘要的操作
一、文本分类算法简介
1.文本分类算法的思路和使用场景:
随着互联网发展,现在网络上有大量的文本数据,无论是我们平时使用的一些媒体的app(今日头条,新浪微博),线下传统的新闻媒体(新华社),都有很多文本数据,之前这些媒体对文本数据有大量的需要处理的需求,例如文本打标,文本关键内容提取,文本分类,之前用人肉的方式进行,会消耗大量的人工的资源,而且效率较低;现在随着文本智能算法的发展,也在探索如何通过智能算法做自动的文本分析。
常见的文本分析分为三种:
(1)文本分类(新闻分类的系统);
(2)文本打标签(长文本、短文本的提取关键词,提取摘要);
(3)文本情感分析(需要判断文本的正负情感关系)
文本分类方式的主要的思想:
(1)基于语义向量距离︰将文本按照语义映射成高维特征向量空间中,通过向量距离计算进行分类。
(2)基于文本关键词、主题︰首先提取文本的关键词、主题等信息,然后通过这些词语的对照关系进行分类。
2.基于主题的分文本分类方式如何实现
文本方分类有很多种方法,基于主题只是其中的一种。
(1)前提条件:如果是主题相似的一类文本,潜意识中认为它是类别相同的。平时我们看一些新闻媒体时,发现无论是新闻媒体,体育新闻或者娱乐新闻,主题都有一定的相似性。
比如说体育新闻,主题可能会有一些相似的词语;
娱乐新闻,主题也会有一部分相似的词语。
(2)案例:三篇短文本文章
第一篇:中国足球队重进世界杯
第二篇:下面我们直播网球比赛
第三篇:妈妈做的饭真好吃
主题算法可以把每篇文章对应的主题提取出来。
第一篇:提取出的是足球和体育
第二篇:提取出的是网球、体育
第三篇:提取出的是饮食和妈妈
根据之前的假设,主题相似的文章属于同类别。
根据聚类算法,把第一篇和第二篇文章归为一类,因为他们都有相同的主题;第三篇文章单独归为一类,和前面文章类别不同,是第二类。
二、LDA 算法介绍
1.涉及到的问题:
(1)如何使用主题算法,把主题挑选出来。
(2)如果使用聚类算法把主题相似的文章进行分类。
2.LDA 算法的原理
(1) LDA 算法通过下图公式帮助提取主题的概率分布:
(2)公式解读:
左侧公式:基于该文档有哪些词语(原始数据)
文档:所有文章的总和。
原始数据:所有文章以及其中的一些词语。
右侧公式:
P(词语|主题):是第一个概率分布式,这些文档中会有哪些主题;
P(主题|文档):这些主题中会出现哪些词语;
右侧俩个概率密度相乘,可得到左侧公式。
(3)该公式基于贝叶斯的原理,可以通过磁带模型(文章)生成的逻辑来解释:
● 当我们写一篇文章的时候,我们首先要考虑的是,选择一个主题。在右侧的这个公式可了解应从文档中选择一个合适的主题(通过主题的概率分布来获得)。
● 然后主题选定之后,写字的时候,从主题中选择相应的词语来写,每个主题中都有特定的词语的分布。以体育主题为例,它里面可能会有篮球,足球,网球;会有一些运动明星,例如李娜,姚明这样的词语。每种词语都有特定的概率密度。
● 循环遍历整篇文章,例如我们要写一篇500个词的作文,就把上面的1和2步骤遍历500遍,整篇文章生成。
我们写文章的过程中就是三步不停迭代的过程;首先选择一个主题,然后,在主题中选择相应的词语,这样的不断的循环递归的过程,就把一个文章生成了,基于这样的磁带模型,我们就可以把主题的概率密度提取出来。
(4) 原理是:通过原始数据的概率分布,把文档中含有主题的概率分布计算出来。
三、KMeans 算法
我们已经通过 LDA 算法把文本的主题都挑选出,然后学习如何 KMeans 算法把主题进行自动的聚类
1.KMeans 算法步骤
第一步:设置分类 K 值, K 值指的是最终要聚类的个数,需要事先设置。
第二步:设置初始质心簇的位置
第三步:不断迭代寻找新分类簇的簇心点
第四步:收敛完成聚类
2.举例:
以下图二维簇为例,假设数据是干净的,只有绿色点的二维数据的分布。
如何通 KMeans 算法将数据进行自动的分类:
(1)首先设置分类k值(最终想分成几类)是2。
(2)设置初始质心簇的位置,设两个类别每个质心簇是黑××(两个初始的质心簇的位置)
(3)如何循环迭代进行收敛:
第一步是寻找这两个质心簇之间的垂直线,将两个质心簇进行均匀分类,首先做一条直线,把红线上侧和红线下侧分割开。分类的依据是基于两个质心簇的欧式距离。
第二步是用俩部分点,红线上侧点和红线下侧点是两个新的质心簇,在两个新的质心簇中找到各自的新的簇心(红色方块),基于新的簇心做新的分类直线。新的分类之后,在新的分类再找新的簇心。通过不断的迭代,直到完成收敛。
(4)收敛完成聚类
绿色的数据会被分为两类。
基于前面的主题模型会通过计算把所有的主题变为向量,基于KMeans 算法会做自动的聚类。
四、PAI 平台实现文本分类并讲解具体流程
1.业务逻辑图如下图,数据源进取:
一部分数据源用来评估,另一部数据源会做分词->过滤(把其中的字:的,地,得;标点符号:逗号,句号,叹号,无用的信息过滤)->词向量生成(把常用的文本词语转换成数值的向量)-> LDA 算法(把里面的主题挑选出来。例如:第一篇文章对应哪些主题,对应哪些主题各自的概率分布是多少?)-> KMeans 聚类算法(进行基于主题的自动分类)->评估(通过评估数据对分类结果进行评估)
2.基于 PAI 平台搭建的整套业务逻辑
3.在 PAI 平台中针对每个组件进行介绍:
试验可以在 PAI 的首页进行,通过【文本分类】新闻分类的案例进行自动创建,包含真实的数据和整个的试验流程。
点击运行,就会生成一个运行好的案例。
4.步骤组件的功能
(1)输入的数据源:右击->查看数据
数据源分三个字段:
第一个字段是种类,在新闻上可看到。数据分为几大种(女性,体育,娱乐,社会军事),数据种类打标好为供给人们作为评估,在真实分类的要完成的结果是不参考该分类结果,打标结果的情况下将文章进行自动归类,例如体育归为一类,女性归为一类。
第二个标题是 title(新闻的标题),例如:全国10个城市男人最有魅力基因。
第三个字段 content 表示的是新闻内容。
总结:整个的数据是有三部分组成,一个是种类(用来评估)第二个是标题,第三个每个标题对应的内容。
(2) 左边的分支用来做评估:
输入的数据源:右击->查看数据
增加一个序号列,因为在最后进行数据挖掘(文本分析)的过程中,会将所有文字转换成数值向量,所以需要增加 id 作为主 key 帮助评估最终的分类结果。
类型转换:将刚才的增加的序号列转换为 Strim 类型。
(3)分词操作:(文本分析最基础的步骤)
分词结果 右击 Split Word-1->查看数据
基于文本内容进行分词,将每个词中间进行逗号分隔。
例如:第一个文本(总 奖金额 为 71.3万) ,将文字按逗号分隔。
(4)停用词过滤
作用;把停用词表中(逗号,句号,的,地,得)没有概念,没有意义的词去除。
Stop-words 右击->查看数据
停用词过滤的过滤结果
在文章内容中已经没有,的或标点符号,干扰项都已经去掉
(5)词频统计:
方便于下一步的三元组转 kv-1 进行前期的数据整理.
词频统计-1右击->查看数据
第一个数据桩,id 对应文章,例如第零篇文章有哪些词,这些词出现的个数有多少?通过词频统计组件,都可以生成。
(6)三元组转 kv-1
三元组转kv-1 是帮助词频统计结果进行词语转向量.
三元组转kv-1 右击->查看数据
例如:id 对应的文章,第213篇文章,把每一个词都进行了编码,例如:编码为337的词出现一次,编码为412的词出现一次,编码为667个词出现三次。通过三元组转 kv 的形式,把文章进行 strim 型转数值。
(7)进行 LDA 算法的计算,LDA 算法 id 的输入源就是已经转好的三元组转kv-1 的数据。
可以选择生成的主题个数,主题个数下的参数是计算迭代的参数。
PLDA-右击->查看数据
主题在第5个输出桩,每个输出桩意义不同,可以通过文档进行查看。第5个输出桩主要展示每篇文章映射到50个主题的维度(topic1,topic.....)共有50个主题个数, LDA 算法设置的50个主题个数,将每个文章50个主题都映射到50个主题向量维度上,每一行代表一篇文章,参数是这篇文章属于这个主题的概率。
得到了下图矩阵,需比较两篇文章之间的距离(每两个向量之间距离)可计算出这两篇文章语意的距离,可得出这俩篇文章否属于同一种类,如果这两个向量的距离非常近,说明这两篇文章属于同类别的概率恨大。
(8)合并列
把刚才的 PLDA 的主 key 拿到,通过合并列组建,可得到每篇文章以及它对应主题的分布。
合并列-1右击->查看数据
文章是通过判断append_id的唯一标识来记录
(9) KMean 算法
通过KMeans 算法,对上面的矩阵进行计算,进行自动归档
KMeans算法-1右击->查看数据
左侧表示文章的类别。
右侧是它属于的类别,KMeans设置为30类。
最终结果:聚类簇为1时有110和187俩篇文章,
聚类簇为2时有101,13和249三篇文章,
聚类簇为6时有135,52,232,138四篇文章,
观察聚类簇为6时是否为同一类型文章,文章id分别是135,52,232,138
(10)点击测滤与映射,通过评估的组件,把三篇文章 sweep 出来。
测滤与映射-1右击->查看数据
这四篇文章属于同一类,都是体育类。那说明分类的结果是准确的。
在平时的计算过程中聚类有一定的随机性,可以通过聚类的参数调节,例如聚类簇数,主题数,迭代的参数进行效果的优化。
通过 LDA 算法,主题模型,对于新闻进行自动分类,挑选出于同一类别,发现都是体育类,证明分类结果正确。
五、学习推荐
1.实验可在http://yq.aliyun.com/articles/59205的地址中找到详细的文档,也可以在 PAI 的首页 demo 中点击进行自动的生成和实验。
2.推荐教材以及 PAI 的使用地址:
(1)推荐学习材料:.
《机器学习实践》
《统计学习方法》
(2)吴恩达的机器学习相关课程
推荐实验环境:机器学习PAl https://data.aliyun.com/product/learn