R+tmcn筆記︱tmcn包的基本內容以及李艦老師R語言大會展示內容摘錄
每每以為攀得眾山小,可、每每又切實來到起點,大牛們,緩緩腳步來俺筆記葩分享一下吧,please~
———————————————————————————
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語言大會分享內容;
————————————————————————————————————————
一、字元編碼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的擴充套件,也就是
漢字內碼擴充套件規範,稱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
Apá3Tùƒ:̨?1gmu"•©|±ÿ¥È–可以單句識別、句分解、句結構分析,構建語法樹等;相對比較底層的一般文字挖掘任務,該包基礎上進行二次開發比較好。而且該包對中文的支援不是特別好。2、qdap一個綜合了定量分析以及定性分析的大雜燴,包含了一些自然語言的函式。
3、koRpus
綜合文字分析的包,詞頻分析較多;可讀性分析以及語種識別比較有特色。
詞分析
4、RKEA
提供了KEA的介面可以用來進行關鍵詞提取。
5、wordcloud
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~
———————————————————————————