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