R最簡文本挖掘之---凡人修仙傳

       最近一直迷戀文本挖掘,其實大數據在非結構化的處理上主要要解決的一個問題就是文本挖掘(就像你看Hadoop第一個例子就是countWord),主要仍是之前看小說看的多,有時候就想總結一下,看看每一個做者都喜歡用哪些詞彙。java

         文本挖掘要解決幾個問:app

        一、中文詞彙,這個咱們有強大的搜狗(R能夠直接用搜狗詞庫,福音啊);dom

        二、詞庫中沒有的詞彙,這個就須要咱們手動去錄入了;函數

        三、同義詞,同義詞須要咱們手工去解決,例如人名,齊天大聖和宇帝是同一我的(都是我,這裏請加一個表情);oop

        四、沒有了,開搞。大數據

        首先要導幾個包,沒有的自行install,有的直接library。主要是rJava,Rwordseg,wordcloud(注意大小寫,rJava安裝要注意一下,你的jdk位數和R的位數最好一致,不一致的話在RStudio中自行設置),rJava是鏈接java的(廢話),這裏面其實就是鏈接你的java庫,供Rwordseg包調用的;Rwordseg包就牛逼了,LiJian大師開發,能夠去他博客踩踩,提供了分詞的一堆功能,後面用到了在講;wordcloud是畫詞雲的,如今的數據挖掘可不比之前了,搞完要作可視化,畫的漂漂亮亮,老闆纔給錢。開發

        導入完詞典,就能夠開始咱們的分詞大業了;博客

        將要分詞的文本加載到R中,咱們使用很是簡單的read方法:string

        read.csv(path, stringsAsFactors=FALSE, header=FALSE)
        而後調用Rwordseg包中的分詞函數segmentCN:數據挖掘

        pwords <- unlist(lapply(X=people, FUN=segmentCN))
        分詞結束後就是統計每一個詞有幾個了:

        v <- table(unlist(pword))
        爲了方便咱們去掉單字和較少的詞彙,咱們把結果放到一個data.frame中去過濾:

        d <- data.frame(詞彙=names(v), 詞頻=v)
        而後過濾那些沒用的:

        d <- subset(d, nchar(as.character(d$詞彙))>1 & d$詞頻.Freq>=100)
        最後就是畫詞雲了

        wordcloud(d$詞彙, d$詞頻.Freq, random.order=FALSE, random.color=TRUE);
        搞定?等等,發現沒有男主角和女主角的名字哇?
        那是由於詞典裏面沒有,咱們要手動錄入詞典裏面沒有的詞彙,也是Rwordseg包裏面的函數:

        insertWords()

         怎麼樣,搞定了沒有,任意你感興趣的書籍均可以本身挖一遍,是否是很爽。

         PS:文本大小15M,慢到你懷疑是否是失敗了,沒有截圖,由於不當心把Rstudio關了,沒耐性在跑一次了

相關文章
相關標籤/搜索