1. 程式人生 > >R語言學習-詞頻分析

R語言學習-詞頻分析

切分 mov ace pos document segment vector 庫類 con

概念

1、語料庫-Corpus

  語料庫是我們要分析的所有文檔的集合,就是需要為哪些文檔來做詞頻

2、中文分詞-Chinese Word Segmentation

  指的是將一個漢字序列切分成一個一個單獨的詞語。

3、停用詞-Stop Words

  數據處理的時候,自動過濾掉某些字或詞,包括泛濫的詞如Web、網站等,又如語氣助詞如的、地、得等。

需要加載的包

1、tm包

  安裝方式:install.packages("tm")

  語料庫:

      Corpus(x,readerControl)

        x-語料庫的數據源,可以使用目錄數據源-DirSource,或者向量數據源-VectorSource

        readerControl-語料庫的讀取控制器,是一個list;參數reader-文本為reader,pdf為readPDF等,參數language為文本語言,默認為“en”

舉例:

#按目錄讀入語料庫,就是把數據讀取出來
C000007 <- Corpus(
  DirSource(
    ‘SogouC.mini/Sample/C000007‘ //這個是相對路徑,絕對路徑為:C:\Users\22636\Desktop\R語言資料\2.1\SogouC.mini\Sample\C000007
  ),
  readerControl = list(language="UTF-8")
)

  語料庫處理:

        tm_map(x,FUN)

          x-上面的語料庫

          FUN-使用哪個處理函數,函數如下

            tolower-轉成小寫

            removeWords-移除分詞,一般用語移除停用詞

            stripWhitespace-移除空白字符

            PlainTextDocument-處理HTML或者XML文檔

            segmengCN-中文分詞函數,來自Rwordseg包

2、tmcn包-停用詞包

  安裝方式:install.packages("tmcn", repos="http://R-Forge.R-project.org");

  安裝後使用stopwordsCN()

3、Rwordseg包

  安裝方式:

      install.packages("rJava")
      install.packages("Rwordseg", repos="http://R-Forge.R-project.org")//如果這個不行則用下面的
      #install.packages("Rwordseg", repos="http://R-Forge.R-project.org", type="source")

  分詞方法:

      segmentCN(strwords,outfile="",returnType=c("vector","tm"))

        strwords-需要分詞的字符串或者文件路徑

        outfile-分詞後輸出的路徑,默認為輸入文件的同級目錄

        returnType-返回值類型,默認是數組,可以選擇為tm包的語料庫類型

  安裝/卸載字典:

      installDict(dictpath,dictname)

      uninstallDict(dictname)

        dictpath-字典文件路徑

        dictname-字典名字

      字典下載:http://pinyin.sogou.com/dict/

  顯示字典列表

      listDict()

舉例:

  segmentCN("真武七截陣和天罡北鬥陣哪個厲害")

輸出:  

  [1] "真" "武" "七" "截" "陣" "和" "天罡" "北鬥"
  [9] "陣" "哪個" "厲害"

加載字典:

  installDict(‘金庸武功招式.scel‘, ‘金庸武功招式‘)

輸出:

  [1] "真武七截陣" "和" "天罡北鬥陣" "哪個"
  [5] "厲害"

當然也可以使用路徑的方式來進行分詞,如下面則是根據路徑來針對文檔裏面的語句進行分詞,並且分詞後會在同目錄下生成分詞後的新文檔:

data <- segmentCN(
  ‘SogouC.mini/Sample/C000007/10.txt‘
)

4、TM包和Rwordseg包組合使用

#加載tm和tmcn包

library(tm)
library(tmcn)

#按目錄讀入語料庫
C000007 <- Corpus(
  DirSource(
    ‘SogouC.mini/Sample/C000007‘
  ),
  readerControl = list(language="UTF-8")
)

stopwordsCN()

#加載rwordreg包

library(Rwordseg)

C000007 <- tm_map(C000007, stripWhitespace) //先把c000007語料庫中的空格移除
C000007 = tm_map(C000007, content_transformer(segmentCN), returnType=‘tm‘) //用segmentcn方式進行分詞

R語言學習-詞頻分析