2014年9月20日 星期六

[R] tm package version 0.6 大解析(text mining文字探勘套件)

        有在玩text mining的同好,最近不知道有沒有碰過類似的問題,就是很多以前用tm套件的程式跑不出來或有問題(先前文章[R] TEXT MINING(文字探勘、文本分析練習)就有使用這個套件)。這是因為tm套件在今年的6/1號升級到了0.6版(http://cran.r-project.org/web/packages/tm/index.html)改變了包裝corpus的方式(http://cran.r-project.org/web/packages/tm/news.html)很多東西都必須rebuild才能正常運作(其實這也是我個人的血淚經驗).




先來做一個簡單的corpus:

用inspect可以看到這個corpus有兩個文件.
(熟悉tm套件的人應該有發現現在物件結構長得跟以前不太一樣,但是結構的事晚點再看,以下先來示範如果用以前的程式碼會發生什麼事情)

這是一個很簡單的範例,將文件中的“今天”,代換成“昨天”,用inspect看還一切正常,接著我們要把文件轉換成文字矩陣:

這時候會發現轉不過去(晴天霹靂!!!
原因在於0.6版的tm套件改變了包裝文件的方式...
我們先來看一下新的文件結構長什麼樣子:

怕了吧?看起來超複雜的XD
簡單來說就是現在包裝文件的方式變成像書本一樣,每個文件分別存放在一個獨立的textDocument的list裏面,美個textDucument又分別裝著content和meta檔,content裝著文件內容,meta裝著類似作者,標題,建立日期等一些關於文件說明的部分.

過去的tm_map功能能夠自動存取每個文件的內容,但是現在如果直接套用tm_map(如上面的範例)會強至將文件變成單純的chr,喪失文件屬性:

如果現在要對文件內容作調整(無論是分詞還是替換單字),要引用新的function==> content()或是content_transformer():

這樣就可以在保有原本corpus屬性下調整內容,自然也可以順利轉成文字矩陣:

希望能幫助到有在玩text mining但是最近無法使用的朋友XD