爬取某課堂評(píng)論分類(lèi)
1、項(xiàng)目目標(biāo)

本項(xiàng)目實(shí)現(xiàn)了對(duì)網(wǎng)易云課堂課程下的學(xué)生對(duì)該課程的評(píng)論數(shù)據(jù)進(jìn)行爬取,并保存到本地csv數(shù)據(jù)庫(kù)中,以便對(duì)評(píng)論數(shù)據(jù)進(jìn)行分析,實(shí)現(xiàn)對(duì)部分閑聊貼和學(xué)習(xí)帖的分類(lèi)功能。
2、項(xiàng)目開(kāi)發(fā)工具和設(shè)備
(1)?電腦或筆記本;
(2)?開(kāi)發(fā)工具Pycharm或者spyder
3、項(xiàng)目使用知識(shí)點(diǎn)
(1)?Beautifulsoup:爬蟲(chóng)部分實(shí)現(xiàn)使用技術(shù)
Beautiful Soup提供一些簡(jiǎn)單的、python式的函數(shù)用來(lái)處理導(dǎo)航、搜索、修改分析樹(shù)等功能。它是一個(gè)工具箱,通過(guò)解析文檔為用戶提供需要抓取的數(shù)據(jù),因?yàn)楹?jiǎn)單,所以不需要多少代碼就可以寫(xiě)出一個(gè)完整的應(yīng)用程序。
Beautiful Soup自動(dòng)將輸入文檔轉(zhuǎn)換為Unicode編碼,輸出文檔轉(zhuǎn)換為utf-8編碼。你不需要考慮編碼方式,除非文檔沒(méi)有指定一個(gè)編碼方式,這時(shí),Beautiful Soup就不能自動(dòng)識(shí)別編碼方式了。然后,你僅僅需要說(shuō)明一下原始編碼方式就可以了。
Beautiful Soup已成為和lxml、html6lib一樣出色的python解釋器,為用戶靈活地提供不同的解析策略或強(qiáng)勁的速度。
(2)?TextRank:文本分詞技術(shù)
TextRank?算法是一種用于文本的基于圖的排序算法。其基本思想來(lái)源于谷歌的?PageRank算法, 通過(guò)把文本分割成若干組成單元(單詞、句子)并建立圖模型, 利用投票機(jī)制對(duì)文本中的重要成分進(jìn)行排序, 僅利用單篇文檔本身的信息即可實(shí)現(xiàn)關(guān)鍵詞提取、文摘。和 LDA、HMM 等模型不同, TextRank不需要事先對(duì)多篇文檔進(jìn)行學(xué)習(xí)訓(xùn)練, 因其簡(jiǎn)潔有效而得到廣泛應(yīng)用。
(3)?Bayes' theorem:通過(guò)貝葉斯算法將分詞轉(zhuǎn)化成權(quán)值矩陣進(jìn)行運(yùn)算
Bayes' theorem)是概率論中的一個(gè)定理,它跟隨機(jī)變量的條件概率以及邊緣概率分布有關(guān)。在有些關(guān)于概率的解釋中,貝葉斯定理(貝葉斯公式)能夠告知我們?nèi)绾卫眯伦C據(jù)修改已有的看法。這個(gè)名稱(chēng)來(lái)自于托馬斯·貝葉斯。
通常,事件A在事件B(發(fā)生)的條件下的概率,與事件B在事件A(發(fā)生)的條件下的概率是不一樣的。然而,這兩者是有確定的關(guān)系的,貝葉斯定理就是這種關(guān)系的陳述。貝葉斯公式的一個(gè)用途在于通過(guò)已知的三個(gè)概率函數(shù)推出第四個(gè)。
(4)?K-means:通過(guò)k-means算法將計(jì)算權(quán)值矩陣實(shí)現(xiàn)評(píng)論分類(lèi)功能
K-means算法是一種源于信號(hào)處理中的一種向量量化方法,現(xiàn)在則更多地作為一種聚類(lèi)分析方法流行于數(shù)據(jù)挖掘領(lǐng)域。k-平均聚類(lèi)的目的是:把n個(gè)點(diǎn)(可以是樣本的一次觀察或一個(gè)實(shí)例)劃分到k個(gè)聚類(lèi)中,使得每個(gè)點(diǎn)都屬于離他最近的均值(此即聚類(lèi)中心)對(duì)應(yīng)的聚類(lèi),以之作為聚類(lèi)的標(biāo)準(zhǔn)。這個(gè)問(wèn)題將歸結(jié)為一個(gè)把數(shù)據(jù)空間劃分為沃羅諾伊圖的問(wèn)題。
(5)?Matplotlib:數(shù)據(jù)可視化,數(shù)據(jù)生成圖表顯示
matplotlib?是python最著名的繪圖庫(kù),它提供了一整套和matlab相似的命令A(yù)PI,十分適合交互式地進(jìn)行制圖。而且也可以方便地將它作為繪圖控件,嵌入GUI應(yīng)用程序中。
(6)?WordCloud:數(shù)據(jù)可視化,將知識(shí)貼權(quán)值高的詞生成詞云便于理解
一個(gè)在Python中生成詞云的包。
4、數(shù)據(jù)獲取
4.1 網(wǎng)址及介紹
(1)數(shù)據(jù)來(lái)源
網(wǎng)上爬取:http://*********.163.com/(爬取網(wǎng)站鏈接)
(2)數(shù)據(jù)內(nèi)容
a)文件名
comment.txt
b)具體值
c) 數(shù)據(jù)處理
處理過(guò)程:首先將評(píng)論字?jǐn)?shù)過(guò)少的評(píng)論以及雜亂的評(píng)論當(dāng)作噪點(diǎn)去除,然后使用分詞技術(shù)將評(píng)論中的識(shí)別度最高(特殊名詞,動(dòng)詞類(lèi))的八個(gè)詞語(yǔ)截取出來(lái)作為句子的特征值。
4.2 數(shù)據(jù)結(jié)構(gòu)
共有幾個(gè)屬性:八個(gè)
具體屬性:
1)動(dòng)詞
2)專(zhuān)業(yè)名詞
共有幾條記錄:66
前5條記錄
5、項(xiàng)目具體實(shí)現(xiàn)
5.1 算法介紹
1)處理過(guò)程
該算法首先通過(guò)人工識(shí)別一些比較容易識(shí)別的句子得出句子A集合及分類(lèi)以及人工不易識(shí)別的句子B集合,然后將這些句子中的詞語(yǔ)使用貝葉斯算法來(lái)得出詞語(yǔ)的權(quán)值,貝葉斯公式如下(A為句子的分類(lèi),B為詞語(yǔ)是否在句子中出現(xiàn)):
使用貝葉斯算法識(shí)別出的詞典如圖:
后將無(wú)法識(shí)別的句子B集合中的詞語(yǔ)分別查找上文的詞典的權(quán)值并修改為權(quán)值,修改后對(duì)應(yīng)句子詞語(yǔ)的權(quán)值如下圖:
然后對(duì)這些句子分類(lèi)為訓(xùn)練集和測(cè)試集,用測(cè)試集進(jìn)行K-means聚類(lèi),尋找到合適的簇點(diǎn)后對(duì)訓(xùn)練集進(jìn)行分類(lèi),分類(lèi)結(jié)果如下:
如下是人工手動(dòng)分類(lèi)的結(jié)果:
對(duì)比以后能看出這樣聚類(lèi)對(duì)于人工不好分類(lèi)的句子能好的的進(jìn)行分類(lèi)。
2)算法介紹
k-means算法是一種聚類(lèi)算法,所謂聚類(lèi),即根據(jù)相似性原則,將具有較高相似度的數(shù)據(jù)對(duì)象劃分至同一類(lèi)簇,將具有較高相異度的數(shù)據(jù)對(duì)象劃分至不同類(lèi)簇。聚類(lèi)與分類(lèi)最大的區(qū)別在于,聚類(lèi)過(guò)程為無(wú)監(jiān)督過(guò)程,即待處理數(shù)據(jù)對(duì)象沒(méi)有任何先驗(yàn)知識(shí),而分類(lèi)過(guò)程為有監(jiān)督過(guò)程,即存在有先驗(yàn)知識(shí)的訓(xùn)練數(shù)據(jù)集。
k-means算法中的k代表類(lèi)簇個(gè)數(shù),means代表類(lèi)簇內(nèi)數(shù)據(jù)對(duì)象的均值(這種均值是一種對(duì)類(lèi)簇中心的描述),因此,k-means算法又稱(chēng)為k-均值算法。k-means算法是一種基于劃分的聚類(lèi)算法,以距離作為數(shù)據(jù)對(duì)象間相似性度量的標(biāo)準(zhǔn),即數(shù)據(jù)對(duì)象間的距離越小,則它們的相似性越高,則它們?cè)接锌赡茉谕粋€(gè)類(lèi)簇。數(shù)據(jù)對(duì)象間距離的計(jì)算有很多種,k-means算法通常采用歐氏距離來(lái)計(jì)算數(shù)據(jù)對(duì)象間的距離。
k-means算法以距離作為數(shù)據(jù)對(duì)象間相似性度量的標(biāo)準(zhǔn),通常采用歐氏距離來(lái)計(jì)算數(shù)據(jù)對(duì)象間的距離。下面給出歐式距離的計(jì)算公式:
其中,DD表示數(shù)據(jù)對(duì)象的屬性個(gè)數(shù)。
k-means算法聚類(lèi)過(guò)程中,每次迭代,對(duì)應(yīng)的類(lèi)簇中心需要重新計(jì)算(更新):對(duì)應(yīng)類(lèi)簇中所有數(shù)據(jù)對(duì)象的均值,即為更新后該類(lèi)簇的類(lèi)簇中心。定義第kk個(gè)類(lèi)簇的類(lèi)簇中心為CenterkCenterk,則類(lèi)簇中心更新方式如下:
其中,CkCk表示第kk個(gè)類(lèi)簇,|Ck||Ck|表示第kk個(gè)類(lèi)簇中數(shù)據(jù)對(duì)象的個(gè)數(shù),這里的求和是指類(lèi)簇CkCk中所有元素在每列屬性上的和,因此CenterkCenterk也是一個(gè)含有DD個(gè)屬性的向量,表示為Centerk=(Centerk,1,Centerk,2,...,Centerk,D)Centerk=(Centerk,1,Centerk,2,...,Centerk,D)。
k-means算法需要不斷地迭代來(lái)重新劃分類(lèi)簇,并更新類(lèi)簇中心。一般情況,有兩種方法來(lái)終止迭代:一種方法是設(shè)定迭代次數(shù)TT,當(dāng)?shù)竭_(dá)第TT次迭代,則終止迭代,此時(shí)所得類(lèi)簇即為最終聚類(lèi)結(jié)果;另一種方法是采用誤差平方和準(zhǔn)則函數(shù),函數(shù)模型如下:
其中,KK表示類(lèi)簇個(gè)數(shù)。當(dāng)兩次迭代JJ的差值小于某一閾值時(shí),即ΔJ<δΔJ<δ時(shí),則終止迭代,此時(shí)所得類(lèi)簇即為最終聚類(lèi)結(jié)果。
k-means算法思想可描述為:首先初始化KK個(gè)類(lèi)簇中心;然后計(jì)算各個(gè)數(shù)據(jù)對(duì)象到聚類(lèi)中心的距離,把數(shù)據(jù)對(duì)象劃分至距離其最近的聚類(lèi)中心所在類(lèi)簇中;接著根據(jù)所得類(lèi)簇,更新類(lèi)簇中心;然后繼續(xù)計(jì)算各個(gè)數(shù)據(jù)對(duì)象到聚類(lèi)中心的距離,把數(shù)據(jù)對(duì)象劃分至距離其最近的聚類(lèi)中心所在類(lèi)簇中;接著根據(jù)所得類(lèi)簇,繼續(xù)更新類(lèi)簇中心;……一直迭代,直到達(dá)到最大迭代次數(shù)TT,或者兩次迭代JJ的差值小于某一閾值時(shí),迭代終止,得到最終聚類(lèi)結(jié)果。
5.2?程序流程圖(10分)
5.3?結(jié)果輸出
評(píng)論分類(lèi):標(biāo)簽為知識(shí)貼與閑聊貼兩類(lèi)
6、結(jié)果圖表展示
(1)評(píng)論分類(lèi):標(biāo)簽為知識(shí)貼與閑聊貼兩類(lèi)
(2)生成知識(shí)貼詞云:
7、項(xiàng)目完成總結(jié)
由以上分類(lèi)結(jié)果,可以實(shí)現(xiàn)網(wǎng)易云課堂中的主題帖分類(lèi),便于教授進(jìn)行針對(duì)性評(píng)論。節(jié)省時(shí)間,提高了教學(xué)效率,也解決了學(xué)生的疑難問(wèn)題。
文章面向當(dāng)前大數(shù)據(jù)時(shí)代下在線教育發(fā)展的迅猛趨勢(shì)與國(guó)內(nèi)外數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)研究背景,廣泛調(diào)研和深入分析了面向大型在線開(kāi)放課程的數(shù)據(jù)挖掘的重要理論價(jià)值及現(xiàn)實(shí)意義,具有一定的實(shí)際應(yīng)用價(jià)值。
數(shù)據(jù)挖掘 機(jī)器學(xué)習(xí)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。