爬取某课堂评论分类

举报
Famine_wang 发表于 2018/12/31 14:54:34 2018/12/31
【摘要】 本项目对课堂评论进行了分类

1、项目目

本项目实现了对网易云课堂课程下的学生对该课程的评论数据进行爬取,并保存到本地csv数据库中,以便对评论数据进行分析,实现对部分闲聊贴和学习帖的分类功能。

2、项目开发工具和设备

(1) 电脑或笔记本;

(2) 开发工具Pycharm或者spyder

3、项目使用知识点

 

(1) Beautifulsoup:爬虫部分实现使用技术

Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。

Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。

Beautiful Soup已成为和lxml、html6lib一样出色的python解释器,为用户灵活地提供不同的解析策略或强劲的速度。

(2) TextRank:文本分词技术

 TextRank 算法是一种用于文本的基于图的排序算法。其基本思想来源于谷歌的 PageRank算法, 通过把文本分割成若干组成单元(单词、句子)并建立图模型, 利用投票机制对文本中的重要成分进行排序, 仅利用单篇文档本身的信息即可实现关键词提取、文摘。和 LDA、HMM 等模型不同, TextRank不需要事先对多篇文档进行学习训练, 因其简洁有效而得到广泛应用。

(3) Bayes' theorem:通过贝叶斯算法将分词转化成权值矩阵进行运算

Bayes' theorem)是概率论中的一个定理,它跟随机变量条件概率以及边缘概率分布有关。在有些关于概率的解释中,贝叶斯定理(贝叶斯公式)能够告知我们如何利用新证据修改已有的看法。这个名称来自于托马斯·贝叶斯

通常,事件A在事件B(发生)的条件下的概率,与事件B在事件A(发生)的条件下的概率是不一样的。然而,这两者是有确定的关系的,贝叶斯定理就是这种关系的陈述。贝叶斯公式的一个用途在于通过已知的三个概率函数推出第四个。

(4) K-means:通过k-means算法将计算权值矩阵实现评论分类功能

K-means算法是一种源于信号处理中的一种向量量化方法,现在则更多地作为一种聚类分析方法流行于数据挖掘领域。k-平均聚类的目的是:把n个点(可以是样本的一次观察或一个实例)划分到k个聚类中,使得每个点都属于离他最近的均值(此即聚类中心)对应的聚类,以之作为聚类的标准。这个问题将归结为一个把数据空间划分为沃罗诺伊图的问题

(5) Matplotlib:数据可视化,数据生成图表显示

   matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。

(6) WordCloud:数据可视化,将知识贴权值高的词生成词云便于理解

一个在Python中生成词云的包。

 

4、数据获取

  4.1 网址及介绍

1)数据来源

     网上爬取:http://*********.163.com/爬取网站链接)

2)数据内容

     a)文件名

        comment.txt

     b)具体值

        

图片1.png


c) 数据处理

处理过程:首先将评论字数过少的评论以及杂乱的评论当作噪点去除,然后使用分词技术将评论中的识别度最高(特殊名词,动词类)的八个词语截取出来作为句子的特征值。

  4.2 数据结构

共有几个属性:八个

 

具体属性:

1)动词

2)专业名词

    

共有几条记录:66

 

    5条记录

      

图片2.png


5、项目具体实现

  5.1 算法介绍

  1)处理过程

该算法首先通过人工识别一些比较容易识别的句子得出句子A集合及分类以及人工不易识别的句子B集合,然后将这些句子中的词语使用贝叶斯算法来得出词语的权值,贝叶斯公式如下(A为句子的分类,B为词语是否在句子中出现):

图片3.png

使用贝叶斯算法识别出的词典如图:

图片4.png 

后将无法识别的句子B集合中的词语分别查找上文的词典的权值并修改为权值,修改后对应句子词语的权值如下图:

图片5.png 

然后对这些句子分类为训练集和测试集,用测试集进行K-means聚类,寻找到合适的簇点后对训练集进行分类,分类结果如下:

图片6.png 

如下是人工手动分类的结果:

图片7.png 

对比以后能看出这样聚类对于人工不好分类的句子能好的的进行分类。

  2)算法介绍

k-means算法是一种聚类算法,所谓聚类,即根据相似性原则,将具有较高相似度的数据对象划分至同一类簇,将具有较高相异度的数据对象划分至不同类簇。聚类与分类最大的区别在于,聚类过程为无监督过程,即待处理数据对象没有任何先验知识,而分类过程为有监督过程,即存在有先验知识的训练数据集。 
  k-means算法中的k代表类簇个数,means代表类簇内数据对象的均值(这种均值是一种对类簇中心的描述),因此,k-means算法又称为k-均值算法。k-means算法是一种基于划分的聚类算法,以距离作为数据对象间相似性度量的标准,即数据对象间的距离越小,则它们的相似性越高,则它们越有可能在同一个类簇。数据对象间距离的计算有很多种,k-means算法通常采用欧氏距离来计算数据对象间的距离。

k-means算法以距离作为数据对象间相似性度量的标准,通常采用欧氏距离来计算数据对象间的距离。下面给出欧式距离的计算公式: 

spacer.gif图片8.png            
其中,DD表示数据对象的属性个数。

k-means算法聚类过程中,每次迭代,对应的类簇中心需要重新计算(更新):对应类簇中所有数据对象的均值,即为更新后该类簇的类簇中心。定义第kk个类簇的类簇中心为CenterkCenterk,则类簇中心更新方式如下: 

图片9.pngspacer.gif

其中,CkCk表示第kk个类簇,|Ck||Ck|表示第kk个类簇中数据对象的个数,这里的求和是指类簇CkCk中所有元素在每列属性上的和,因此CenterkCenterk也是一个含有DD个属性的向量,表示为Centerk=(Centerk,1,Centerk,2,...,Centerk,D)Centerk=(Centerk,1,Centerk,2,...,Centerk,D)。 
  k-means算法需要不断地迭代来重新划分类簇,并更新类簇中心一般情况,有两种方法来终止迭代:一种方法是设定迭代次数TT,当到达第TT次迭代,则终止迭代,此时所得类簇即为最终聚类结果;另一种方法是采用误差平方和准则函数,函数模型如下:

spacer.gifspacer.gif

其中,KK表示类簇个数。当两次迭代JJ的差值小于某一阈值时,即ΔJ<δΔJ<δ时,则终止迭代,此时所得类簇即为最终聚类结果。 
  k-means算法思想可描述为:首先初始化KK个类簇中心;然后计算各个数据对象到聚类中心的距离,把数据对象划分至距离其最近的聚类中心所在类簇中;接着根据所得类簇,更新类簇中心;然后继续计算各个数据对象到聚类中心的距离,把数据对象划分至距离其最近的聚类中心所在类簇中;接着根据所得类簇,继续更新类簇中心;……一直迭代,直到达到最大迭代次数TT,或者两次迭代JJ的差值小于某一阈值时,迭代终止,得到最终聚类结果。

图片10.png

5.2 程序流程图(10分) 

  5.3 结果输出

评论分类:标签为知识贴与闲聊贴两类

图片11.png 

 

6、结果图表展示

   1)评论分类:标签为知识贴与闲聊贴两类

图片12.png 

2)生成知识贴词云:

 

图片13.png 

 

 

 

 

7、项目完成总结

 由以上分类结果,可以实现网易云课堂中的主题帖分类,便于教授进行针对性评论。节省时间,提高了教学效率,也解决了学生的疑难问题。

文章面向当前大数据时代下在线教育发展的迅猛趋势与国内外数据挖掘、机器学习研究背景,广泛调研和深入分析了面向大型在线开放课程的数据挖掘的重要理论价值及现实意义,具有一定的实际应用价值。


【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。