R語言做文字挖掘 Part3文字聚類

2021-06-29 04:11:23 字數 3442 閱讀 2746

part3文字聚類

分類演算法:

聚類演算法:

文字分類聚類會要用到這些演算法去實現,暫時不用深究演算法細節,r中已經有成熟的可以直接呼叫的這些演算法了。大概說下分類和聚類的差異,照我的理解,分類演算法和聚類演算法最後實現的效果是相同的,都是給乙個集合劃分成幾個類別。不同的是分類演算法是根據已知的確定類別去做劃分,所以分類需要訓練集,有訓練、測試、**這個過程;而聚類則未規定類別,它是基於給定集合的裡面的內容,根據內容的相似度去給集合劃分成指定的幾個類(你可以指定劃分成多少個類,而不是指定有哪些類),這些相似度的測量就是聚類演算法的核心,這個度量標準可以是歐幾里得距離、是曼哈頓距離、是切比雪夫距離等等。它們分別叫做有監督分類和無監督分類,這種說法不是很確切,參考這個文章分類與聚類,監督學習與無監督學習,有其差異的說明。

聚類演算法是針對數值型變數的,先要將文字資料轉換為matrix—資料矩陣。過程如下,這裡需要用到tm軟體包,先安裝該軟體包並載入。tm包中的corpus()方法就是用來將文字轉換為語料庫的方法。documenttermmatrix()方法,顯然就是將語料庫轉換為文件-詞條矩陣,然後再將文件-詞條矩陣轉換為普通矩陣,過程如下:

library(tm)

corpus

hlzj.dtm

hlzj.matrix

補充說明:這個過程可能會遇到很多問題,沒有詳細的說明,附上兩個參考:

用tm進行文字挖掘、

r語言文字挖掘。

接下來就是做聚類了,聚類演算法有很多,常見的幾種做聚類的方法

1.      kmeans()

方法的介紹參考:執行結果kmeansres是乙個list,names方法可以檢視到kmeansres的所有維度或者說元件,其中第乙個cluster就是對應的分類結果,我們可以檢視到前三十個聚類的結果,第一排對應著行號,第二排對應著聚類的結果1-5分別代表1-5類。然後我們可以將原始微博和聚類結果賦值給乙個新的list變數,這樣我們就能看到聚類結果和每條微博對應的關係了。最後將這個新的list變數hlzj.kmeansres匯出到本地,就能很方便地檢視到聚類結果了。當然我們也可以通過fix()方法檢視hlzj.kmeansres的內容,如圖所示,content是原微博內容,type是聚類結果。每個類別對應的文字資料的特點就要靠我們自己來總結了,這是聚類的乙個不足的地方。

k 

kmeansres

mode(kmeansres)#kmeansres的內容

[1]"list"

names(kmeansres)
[1]"cluster"     "centers"     "totss"       "withinss"   

[5]"tot.withinss" "betweenss"    "size"         "iter"       

[9]"ifault"

head(kmeansres$cluster,10)
1 2  3  4 5  6  7 8  9 10

1 1  1  2 1  5  2 1  1  5

kmeansres$size #每個類別下有多少條資料
[1]  327  1159   63  63   27

2.      hclust()。方法詳細介紹,過程不再細說這個方法可以用plot()來檢視聚類結果圖,但是在資料量挺多的時候,圖的上面的內容都擠在一起看不清楚了,這種情況下,還是直接檢視聚類結果比較好。同樣,將原始資料hlzj和分類結果放在一起hlzj.hclustres來看。可以看出類跟kmeans的聚類結果有些接近,說明微博的特徵還是挺明顯的。

3.      kernel聚類,方法specc()軟體包kernlab中的specc()方法可以實現kernel聚類演算法。檢視這個包的說明文件,見鏈結這是本機的幫助文件,不知道大家的位址是不是都一致的,也可以輸入??kernel檢視幫助文件能看到。網上能夠找到的翻譯後的方法說明這個聚類結果五個分類的統計如下,第四個類別有1402個,其他分類分別是135,55,24和23,所以截圖中看到前面23個都是4類下,用這個聚類可能效果不是很理想。具體實現過程如下:

4.      除此之外。fpc軟體包中的dbscan()方法可以實現dbscan聚類,還有其他的聚類方法,就不一一介紹了,優劣取捨要在實際應用中去控制了。

R語言做文字挖掘 Part4文字分類

part4文字分類 part3文字聚類裡講到過,分類跟聚類的簡單差異。所以要做分類我們需要先整理出乙個訓練集,也就是已經有明確分類的文字 測試集,可以就用訓練集來替代 集,就是未分類的文字,是分類方法最後的應用實現。1.資料準備 訓練集準備是乙個很繁瑣的功能,暫時沒發現什麼省力的辦法,根據文字內容去...

R語言 文字挖掘應用 標籤雲

雖然總有人對比python與r的實用性,但是作為資料分析的目標而言,工具不是重點,目標需求才是首要關注點,所以,今天嘗試用r自帶的一系列工具包來完成對於文字內容的挖掘,並利用標籤雲展示詞頻關係。工具包 程式設計環境 r編譯直譯器 rstudio 介面簡潔,操作方便,整合大量實用功能 挖掘展示過程 大...

css3文字效果

text shadow 在css3中我們可以給單調的文字加上陰影效果,賦予文字美感 text shadow h shadow v shadow blur color h shadow 必須 水平陰影的位置,允許負值 v shadow 必需 垂直陰影的位置,允許負值 blur 可選 模糊的距離 銳化陰...