tmcn包目前托管在在R-forge 上開發和釋出。下載下傳方式以及Rforge相關連結:
install.packages("tmcn", repos = "http://R-Forge.R-project.org")
複制
tmcn 包是一個進行中文文本挖掘的R包。包含了中文編碼處理、文字操作、 文本挖掘模型和算法的一些函數。主要針對目前可用的 R 資源的不足而開發的。
目前最常用的文本挖掘包是 tm 包,該包已經成了事實上的分析标準, 幾乎所有的其他 R 包都是基于這個架構的。但是 tm 包具有一些缺陷, 在R中進行分析的時候不是很友善。
最明顯的問題是中文支援得不夠好, 其函數的設計并沒有考慮到國際化的需求和 UTF-8 的支援,很多函數操作中文時不友善。 此外,tm 包的開發大量使用了 S3 的面向對象方法,其最大的價值是為後續的開發者提供了接口, 但是這些對象對于使用者來說并沒有什麼便利,增加了學習的複雜度, 而且由于 S3 封裝性上天然的缺陷,初學者容易出錯而且提示不清楚。另外, tm 包及相關體系完全基于文檔詞條矩陣的資料結構,在大量資料的工程化實作方面非常便利, 但是所有的這些包包括 tm 在内并沒有簡單的能夠高性能運算的機制, 該設計的優勢在R中完全沒有被展現。
基于目前 R 中可用的文本挖掘資源的不足,tmcn 試圖去解決這些問題, 先從中文支援開始,然後逐漸更新去解決各種問題,但是也會考慮到 tm 的架構, 在架構之外進行一些有益的補充。
(摘錄自tmcn官方首頁:http://jianl.org/cn/R/tmcn.html)
後續的李艦老師還基于tmcn子產品開發了,CRF子產品以及word2vec子產品。
CRF子產品可見李艦老師R語言大會分享内容;
word2vec子產品,可見筆者部落格:重磅︱文本挖掘深度學習之word2vec的R語言實作
NLP︱R語言實作word2vec(詞向量)經驗總結(消除歧義、詞向量的可加性)
————————————————————————————————————————
一、字元編碼UTF-8 GBK unicode
GB2312(CP936)+改進=GBK--→unicode--→UTF-8
1、GBK
1993年,Unicode 1.1版本推出,收錄中國大陸、中國台灣、日本及南韓通用字元集的漢字,總共有20,902個。
中國大陸訂定了等同于Unicode 1.1版本的“GB 13000.1-93”“資訊技術通用多八位編碼字元集(UCS)第一部分:體系結構與基本多文種平面”。
由于GB 2312-80隻收錄6763個漢字,有不少漢字,如部分在GB 2312-80推出以後才簡化的漢字(如“啰”),部分人名用字(如中國前總理朱镕基的“镕”字),中國台灣及中國香港使用的繁體字,日語及北韓語漢字等,并未有收錄在内。于是廠商微軟利用GB 2312-80未使用的編碼空間,收錄GB 13000.1-93全部字元制定了GBK編碼。
根據微軟資料,GBK是對GB2312-80的擴充,也就是CP936字碼表(Code Page 936)的擴充(之前CP936和GB 2312-80一模一樣),最早實作于Windows 95簡體中文版。雖然GBK收錄GB 13000.1-93的全部字元,但編碼方式并不相同;因為GBK向下相容GB2312,而GB 13000.1-93等同于Unicode 1.1,二者的編碼方式完全不相容。
漢字内碼擴充規範,稱GBK,全名為《漢字内碼擴充規範(GBK)》
(來自維基百科)
列舉幾個GBK的編碼:
81 0 1 2 3 4 5 6 7 8 9 A B C D E F
4 丂 丄 丅 丆 丏 丒 丗 丟 丠 両 丣 並 丩 丮 丯 丱
5 丳 丵 丷 丼 乀 乁 乂 乄 乆 乊 乑 乕 乗 乚 乛 乢
6 乣 乤 乥 乧 乨 乪 乫 乬 乭 乮 乯 乲 乴 乵 乶 乷
7 乸 乹 乺 乻 乼 乽 乿 亀 亁 亂 亃 亄 亅 亇 亊
8 亐 亖 亗 亙 亜 亝 亞 亣 亪 亯 亰 亱 亴 亶 亷 亸
9 亹 亼 亽 亾 仈 仌 仏 仐 仒 仚 仛 仜 仠 仢 仦 仧
A 仩 仭 仮 仯 仱 仴 仸 仹 仺 仼 仾 伀 伂 伃 伄 伅
B 伆 伇 伈 伋 伌 伒 伓 伔 伕 伖 伜 伝 伡 伣 伨 伩
C 伬 伭 伮 伱 伳 伵 伷 伹 伻 伾 伿 佀 佁 佂 佄 佅
D 佇 佈 佉 佊 佋 佌 佒 佔 佖 佡 佢 佦 佨 佪 佫 佭
E 佮 佱 佲 併 佷 佸 佹 佺 佽 侀 侁 侂 侅 來 侇 侊
F 侌 侎 侐 侒 侓 侕 侖 侘 侙 侚 侜 侞 侟 価 侢
複制
2、UTF-8
網際網路的普及,強烈要求出現一種統一的編碼方式。UTF-8就是在網際網路上使用最廣的一種Unicode的實作方式。其他實作方式還包括UTF-16(字元用兩個位元組或四個位元組表示)和UTF-32(字元用四個位元組表示),不過在網際網路上基本不用。重複一遍,這裡的關系是,UTF-8是Unicode的實作方式之一。
GBK轉化為UTF-8一定要經過unicode的過程。
————————————————————————————————————————
二、tmcn包的内容
tmcn内容大緻包括,格式轉化、字元操作
1、GBK字元集
#GBK字元集
data(GBK)
head(GBK)
複制
GBK py0 py Radical Stroke_Num_Radical Stroke_Order Structure Freq
1 吖 a ā yā 口 3 丨フ一丶ノ丨 左右 26
2 阿 a ā ɑ ē 阝 2 フ丨一丨フ一丨 左右 526031
3 啊 a ɑ á à ǎ ā 口 3 丨フ一フ丨一丨フ一丨 左中右 53936
4 锕 a ā 钅 5 ノ一一一フフ丨一丨フ一丨 左中右 3
5 錒 a ā 釒 8 ノ丶一一丨丶ノ一フ丨一丨フ一丨 左右 0
6 嗄 a á shà 口 3 丨フ一一ノ丨フ一一一ノフ丶 左右 11
複制
2、格式轉化
檢驗編碼類型用的是:Encoding()函數,還有isUTF8(txt1) isGBK(txt2) isGBK(txt3)
isUTF8(txt1)
isGBK(txt2)
isGBK(txt3)
複制
正常的字元格式轉化用iconv
txt1 <- c("\u4E2D\u56FDR\u8BED\u8A00\u4F1A\u8BAE") #UTF-8編碼
txt2 <- iconv(txt1, "UTF-8", "GBK") #icov把txt1字元串從utf8轉化為GBK
複制
也可以通過Encoding來表示:
txt3 <- txt1
Encoding(txt3) <- "GBK" #改變編碼,encoding是檢驗編碼類型的
複制
tmcn中比較好的格式轉化的函數:
toUTF8(txt1) #其他格式(GBK UTF-8)輸出中文
catUTF8(txt1) #中文以及其他格式輸出UTF8
revUTF8("<U+4E2D><U+56FD>R<U+4F1A><U+8BAE>") #把UTF8變成中文
複制
toUTF8()比較棒!可以多加留意!
3、繁簡體以及拼音生成
#繁體與拼音改寫
toTrad(txt1) #繁體字
toTrad("中國R語言會議", rev = TRUE) #rev=TRUE代表由繁到簡,預設為FALSE為由簡到繁
toPinyin(txt1, capitalize = TRUE) #由中文變成拼音,capitalize預設為FALSE,代表首字元小寫
複制
4、字元操作
字元操作有根據正規表達式比對,以及修繕語料的前後空格。但是不能去掉中間的空格。
#字元操作
txt2 <- c(" Ben Franklin and Jefferson Davis", "\tMillard Fillmore")
#根據正規表達式比對
strextract(txt2, "(?<first>[[:upper:]][[:lower:]]+)", perl = TRUE) #根據正規表達式比對内容
#修繕語料兩邊(去掉文章前後的空格,換行符)
strstrip(c("\taaaa ", " bbbb "," 有這麼坑爹的嗎?","真、 的這麼坑爹嗎?"))
複制
————————————————————————————————————————
三、李艦老師在R語言大會展示内容的摘錄
李健老師在2013年的R語言大會就已經把R語言的NLP相關的包都羅列并翻譯了一遍,真是厲害。原官方網站連結可見:https://cran.r-project.org/web/views/NaturalLanguageProcessing.html
分析架構部分
1、openNLP
可以單句識别、句分解、句結構分析,建構文法樹等;相對比較底層的一般文本挖掘任務,該包基礎上進行二次開發比較好。
而且該包對中文的支援不是特别好。
筆者做過測試,可見部落格:
R+openNLP︱openNLP的六大可實作功能及其在R語言中的應用
2、qdap
一個綜合了定量分析以及定性分析的大雜燴,包含了一些自然語言的函數。
3、koRpus
綜合文本分析的包,詞頻分析較多;可讀性分析以及語種識别比較有特色。
詞分析
4、RKEA
提供了KEA的接口可以用來進行關鍵詞提取。
5、wordcloud
畫詞雲,現在已經更新了,可見我的部落格:R語言︱文本挖掘——詞雲wordcloud2包
6、zipfR
提供了一些關于詞頻分布的統計模型,尤其是詞頻分布中最常用的個zipf定律。
7、wordnet包
提供了英文文本資料庫的接口
8、koNLP
一個韓文的自然語言處理的包
9、snowball snowballC Rstem
詞幹提取的包
語義分析
10、topicmodels lda
topicmodels提供了c接口使用LDA和相關的主題模型。lda也是主題模組化。
11、RTextTools
自動文本分類
12、skmeans
幾種模糊KMeans算法。
13、textcat
可以進行基于n-gram短語的文本聚類
14、movMF
提供了基于機率模型,基于vMF分布的文本聚類方法
15、lsa
潛語義分析,對文檔詞條矩陣進行奇異值分解來降維,然後計算相似度。進行文本相似性分析。
16、kernlab
提供了一些核機器學習的方式進行文本分類、聚類、新穎性檢測降維等。
17、textir
提供了一些函數進行文本和語義挖掘。
————————————————————————————————————————
參考文獻:tmcn官方首頁:http://jianl.org/cn/R/tmcn.html
第六屆中國R語言大會李艦老師分享内容:chrome-extension://ikhdkkncnoglghljlkmcimlnlhkeamad/pdf-viewer/web/viewer.html?file=http%3A%2F%2Fcos.name%2Fwp-content%2Fuploads%2F2013%2F11%2FChinaR2013SH_Nov03_07_LiJian.pdf
每每以為攀得衆山小,可、每每又切實來到起點,大牛們,緩緩腳步來俺筆記葩分享一下吧,please~