python红楼梦人物词频统计_用R进行文本分析初探——以《红楼梦》为例
剛剛接觸R語言和文本分析,為了將二者結合,試著對《紅樓夢》進行分析,首先對《紅樓夢》進行分詞處理,并統計詞頻,同時畫出標簽云。
其實文本分析還可以分析其它很多東西,我的下一步打算分析新浪微博。現在先寫一個小的分析,作為學習用。
文本分析是指對文本的表示及其特征項的選取;文本分析是文本挖掘、信息檢索的一個基本問題,它把從文本中抽取出的特征詞進行量化來表示文本信息。
一.需要加載的包
需要用到rJava,Rwordseg,wordcloud
安裝步驟:
1.安裝java:
http://www.java.com/zh_CN/download/windows_xpi.jsp
2.安裝rJava:
在R的命令框輸入
install.packages("rJava")
錯誤解決方案:
錯誤1.錯誤: ‘rJava’程輯包或名字空間載入失敗,
解決方案:換路徑
錯誤2.
解決方案:
在R中輸入
Sys.setenv(JAVA_HOME=‘C:/Program Files/Java/jre1.8.0_73‘)? #注意:要根據你的java路徑更改
3.安裝Rwordseg:
下載地址:
https://r-forge.r-project.org/R/?group_id=1054
點這兒下載Rwordseg
解壓后將文件放入R下library文件夾下
4.安裝wordcloud
在R的命令框輸入
install.packages("wordcloud")
利用Rwordseg分詞包進行分詞
二.分析過程
(一)基礎導入
library(rJava)
library(Rwordseg)
library(RColorBrewer)
library(wordcloud)
(二)讀入數據
將需要分析的文本放入記事本中,保存到相應路徑,并在R中打開。這兒我導入的是《紅樓夢》的文本。
lecture
(三)優化詞庫
對于文言文和人物名字分詞結果不是很理想的問題,有一個很好的解決方案,就是導入搜狗細胞詞庫(http://pinyin.sogou.com/dict/),以本例作為例子,分別導入了文言文常用詞庫、紅樓夢常用詞庫、紅樓夢成員名字詞庫,這三個詞庫,讓分詞效果更為理想。
installDict("C:\\Users\\Administrator\\Desktop\\hongloumeng.scel","hongloumeng1")
installDict("C:\\Users\\Administrator\\Desktop\\紅樓夢群成員名字詞庫.scel","hongloumeng2")
installDict("C:\\Users\\Administrator\\Desktop\\常用文言文詞庫.scel","wenyanwen")
(四)分詞+統計詞頻
words=unlist(lapply(X=res, FUN=segmentCN))#unlist將list類型的數據,轉化為vector#lapply()返回一個長度與X一致的列表,每個元素為FUN計算出的結果,且分別對應到X中的每個元素。
word=lapply(X=words, FUN=strsplit, " ")
v=table(unlist(word))#table統計數據的頻數
(五)對詞頻進行排序
#降序排序
v=rev(sort(v))
(六)創建數據框
d=data.frame(詞匯=names(v), 詞頻=v)
(七)過濾掉1個字的結果和詞頻小于100的結果
篩選標準大家可以根據自己的需求進行修改
d=subset(d, nchar(as.character(d$詞匯))>1 & d$詞頻>=100)
(八)詞頻結果輸出
根據自己的具體需求改變路徑和文件名稱
write.csv(d, file="E:/Rtagcloud/hongloumengfcresult.csv", row.names=FALSE)
詞頻統計結果(節選)如下:
(九)畫出標簽云
1.讀入詞頻統計數據
路徑和文件名稱根據自己的需求更改
mydata
2.設置字體類型和字體顏色
mycolors
windowsFonts(myFont=windowsFont("銳字巔峰粗黑簡1.0"))
字體下載地址:
http://www.zhaozi.cn/
大家可以根據自己的喜好選擇喜歡的字體
brewer.pal配色如下,大家可以根據喜好選擇:
3.畫出標簽云
wordcloud(mydata$詞匯,mydata$詞頻,random.order=FALSE,random.color=TRUE,colors=mycolors,family="myFont")
所有代碼:
Sys.setenv(JAVA_HOME=‘C:/Program Files/Java/jre1.8.0_73‘)
library(rJava)
library(Rwordseg)#讀入數據
lecture
head(lecture)
獲取數據集長度
n=length(lecture[,1]);print(n)#文本預處理
res=lecture[]#分詞+頻數統計
installDict("C:\\Users\\Administrator\\Desktop\\hongloumeng.scel","hongloumeng1")
installDict("C:\\Users\\Administrator\\Desktop\\紅樓夢群成員名字詞庫.scel","hongloumeng2")
installDict("C:\\Users\\Administrator\\Desktop\\常用文言文詞庫.scel","wenyanwen")
words=unlist(lapply(X=res, FUN=segmentCN))#unlist將list類型的數據,轉化為vector#lapply()返回一個長度與X一致的列表,每個元素為FUN計算出的結果,且分別對應到X中的每個元素。
word=lapply(X=words, FUN=strsplit, " ")
v=table(unlist(word))#table統計數據的頻數#降序排序
v=rev(sort(v))
d=data.frame(詞匯=names(v), 詞頻=v) #創建數據框#過濾掉1個字和詞頻小于200的記錄
d=subset(d, nchar(as.character(d$詞匯))>1 & d$詞頻>=100)#輸出結果
write.csv(d, file="E:/Rtagcloud/hongloumengfcresult.csv", row.names=FALSE)#畫出標簽云
library(RColorBrewer)
library(wordcloud)
mydata
mycolors
windowsFonts(myFont=windowsFont("銳字巔峰粗黑簡1.0"))
wordcloud(mydata$詞匯,mydata$詞頻,random.order=FALSE,random.color=TRUE,colors=mycolors,family="myFont")
原文:http://www.cnblogs.com/zzhzhao/p/5299876.html
總結
以上是生活随笔為你收集整理的python红楼梦人物词频统计_用R进行文本分析初探——以《红楼梦》为例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: web后端--Django学习笔记04
- 下一篇: 【Python Intelhex- HE