Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >R+tmcn笔记︱tmcn包的基本内容以及李舰老师R语言大会展示内容摘录

R+tmcn笔记︱tmcn包的基本内容以及李舰老师R语言大会展示内容摘录

作者头像
悟乙己
发布于 2019-05-26 13:34:42
发布于 2019-05-26 13:34:42
1.9K00
代码可运行
举报
文章被收录于专栏:素质云笔记素质云笔记
运行总次数:0
代码可运行

tmcn包目前托管在在R-forge 上开发和发布。下载方式以及Rforge相关链接

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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的编码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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字符集

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#GBK字符集
data(GBK)
head(GBK)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  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)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
isUTF8(txt1)
isGBK(txt2)
isGBK(txt3)

常规的字符格式转化用iconv

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
txt1 <- c("\u4E2D\u56FDR\u8BED\u8A00\u4F1A\u8BAE")  #UTF-8编码
txt2 <- iconv(txt1, "UTF-8", "GBK")                 #icov把txt1字符串从utf8转化为GBK

也可以通过Encoding来表示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
txt3 <- txt1
Encoding(txt3) <- "GBK"                             #改变编码,encoding是检验编码类型的

tmcn中比较好的格式转化的函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
toUTF8(txt1)        #其他格式(GBK UTF-8)输出中文
catUTF8(txt1)       #中文以及其他格式输出UTF8
revUTF8("<U+4E2D><U+56FD>R<U+4F1A><U+8BAE>")  #把UTF8变成中文

toUTF8()比较棒!可以多加留意!

3、繁简体以及拼音生成

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#繁体与拼音改写
toTrad(txt1)                        #繁体字
toTrad("中國R語言會議", rev = TRUE) #rev=TRUE代表由繁到简,默认为FALSE为由简到繁
toPinyin(txt1, capitalize = TRUE)   #由中文变成拼音,capitalize默认为FALSE,代表首字符小写

4、字符操作

字符操作有根据正则表达式匹配,以及修缮语料的前后空格。但是不能去掉中间的空格。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#字符操作
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~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年09月07日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
GBK标准入门介绍与学习总结
也是出于这样的考虑中国国家标准总局于1981年制定并实施了 GB 2312-80 编码,即中华人民共和国国家标准简体中文字符集。后来厂商微软利用GB2312-80未使用的编码空间,收录GB 13000.1-93全部字符制定了GBK编码。
全栈工程师修炼指南
2020/10/23
9600
MySQL字符编码指南--基础篇
要了解MySQL的字符编码,解决乱码问题,必须先了解字符编码。我们知道所谓信息,在计算机中不过是一串的位(bit:0 or 1),每8个bit组成了一个字节,而这些字节到底表示什么,取决于读到这些对象的上下文,1个字节序列,可以表示整数,字符串或者机器指令,当然也可以表示中文,日文,甚至上古文字。
DBA成江东
2023/07/15
9340
MySQL字符编码指南--基础篇
从"锟斤拷"到字符编码
我们经常看一些谍战剧,谍战剧里敌特、地下党员以及八路军各部间发送情报的时候,一般都是通过电报发送的,电报在传递的过程中,需要发报员用电键发出长短不一的电码,收报员就会听到电报机发出的滴滴滴答答答的声音。其实电报发出的声音都是"滴"和"答"的组合,"答"的声音是"滴"的三倍长。
Java3y
2019/08/29
1.2K0
从"锟斤拷"到字符编码
字符集与字符编码总结
转载请注明出处。请前往 Tiga on Tech 查看原文以及更多有趣的技术文章。
Tiga
2020/01/23
1.3K0
字符集与字符编码总结
关于字符编码的那些事
一、编码是什么 编码为了某种目的把信息从一种形式集合转换为另一种形式集合的过程,古时的鸣金收兵,从某种意义上讲也是一种编码,将帅发出了退兵的命令,为了让更多的人能够知道这个命令,传令兵把这个信息转换为了锣声,传递了出去 与编码相对的还有解码,解码是根据某种规则将信息恢复到原状的过程,士兵之前都接收过训练,在听到锣声之后,明白到锣声代表退兵,便开始执行这一命令。 旗语,电报中的莫斯电码等等,这些东西里面也包含了编码 二、关于字符集和字符编码 因为计算机中的信息都是用二进制数表示的,所以我们必须将汉字、英文按照
magicsoar
2018/02/06
1K0
关于字符编码的那些事
编码、R 与 Windows (一)
本期大猫将开个新帖介绍R中的编码问题。就像导言中说的,编码是一个常常被忽视的“小问题”——直到他给你造成成吨的伤害Orz。它尤其频繁出现于数据传输中,例如你在澳大利亚的机器上建立的SAS数据集死活没法在中国的SAS中打开,或是R 操作台打印中文总是乱码等等(关于中文编码请阅读大猫上一期《我知道你不知道GB2312》)。大猫新开这个系列的目的就是帮助大家在最短时间搞明白你所要知道的关于编码的一切。最重要的是,这篇文章不会过于详细的探讨这些编码背后的原理,而是明确告诉大家在什么样的时候应该用什么样的编码(相信这是大家最希望了解的)。至于这些编码背后的复杂原理以及历史,大猫会在最后放上链接,有兴趣的小伙伴可以自行阅读。由于尽量追求通俗易懂,下面内容可能无法在技术上保证100%的严谨,但是大猫保证,以下95%的论述都是正确的!
用户7652506
2020/10/23
1.2K0
编码、R 与 Windows (一)
python encode和decode函数说明
如上面代码,str\str1\str2均为字符串类型(str),给字符串操作带来较大的复杂性。
极简小课
2022/06/21
2.5K0
python encode和decode函数说明
python encode和decode函数说明[通俗易懂]
如上面代码,str\str1\str2均为字符串类型(str),给字符串操作带来较大的复杂性。
全栈程序员站长
2022/09/07
1.5K0
精述字符编码
带你了解ASCII,Latin1,ANSI,Unicode,UCS-2,UCS-4,UTF-8,UTF-16,UTF-32,GB2312,GB13000,GBK,GB18030,BIG5,BMP,Code Page,BOM,MBCS,Little Endian,Big Endian,内码,外码。
恋喵大鲤鱼
2018/08/03
1.6K0
精述字符编码
字符编码那点事:快速理解ASCII、Unicode、GBK和UTF-8
原作者:阮一峰(ruanyifeng.com),现重新整理发布,感谢原作者的无私分享。
JackJiang
2018/08/29
2.3K0
Python 有关 Unicode UTF-8 GBK 编码问题详解
Unicode 也叫万国码、单一码,是计算机科学领域里的一项业界标准,包括字符集、编码方案等。对于世界上所有的语言文字在 unicode 中都可以查看到。
读懂原理
2022/07/01
1.9K0
Python 有关 Unicode UTF-8 GBK 编码问题详解
python 字符编码处理总结
python中经常遇到这样那样的字符编码问题,尤其在处理网页源码时(特别是爬虫中):
昱良
2018/09/29
6340
关于字符编码
在计算机中,所有的数据在存储和运算时都是使用二进制数表示。为了互相通信,就必须使用相同的编码规则。ANSI (American National Standard Institute)在1967年发表了一套单字节字符编码方案 - ASCII (American Standard Code for Information Interchange)。后来ISO (International Organization for Standardization) 和IEC (International Electrotechnical Commission)将其定为国际标准 - ISO/IEC 646
Taishan3721
2021/12/02
9220
关于字符编码
Java IO
Java 的 I/O 操作类在包 java.io 下,大概有将近 80 个类,但是这些类大概可以分成四组,分别是:
翎野君
2023/05/12
3360
Java IO
你还在为Python中文乱码而感到烦恼?今天老司机给你讲讲!
有没有遇到过这样的问题,读取文件被提示“UnicodeDecodeError”、爬取网页得到一堆乱码,其实这些都是编码惹的祸,如果不能真正理解编码的问题所在,就像开车没有带导航,游泳没有带有度数的眼镜。如果你正在为此而 头疼,不妨来看看这篇文章,里面或许有你要的答案。
QQ1622479435
2018/07/21
1.3K0
详解Python字符串编码格式
最早的字符串编码是美国标准信息交换码ASCII,仅对10个数字、26个大写英文字母、26个小写英文字母及一些其他符号进行了编码。ASCII采用1个字节来对字符进行编码,最多只能表示256个符号。 随着信息技术的发展和信息交换的需要,各国的文字都需要进行编码,不同的应用领域和场合对字符串编码的要求也略有不同,于是又分别设计了多种不同的编码格式,常见的主要有UTF-8、UTF-16、UTF-32、GB2312、GBK、CP936、base64、CP437等等。UTF-8编码是国际通用的编码,以1个字节表示英语字
Python小屋屋主
2018/04/16
1.9K0
Python中的编码问题
视频汇总首页:http://edu.51cto.com/lecturer/index/user_id-4626073.html
py3study
2020/01/06
2.2K0
Unicode编码
这是一篇程序员写给程序员的趣味读物。所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级。整理这篇文章的动机是两个问题:
硬核编程
2019/08/19
1.5K0
万字长文讲解编码知识,看这文就够了!
字符指类字形单位或符号,包括字母、数字、运算符号、标点符号和其他符号,以及一些功能性符号。一般来说我们称某个字符集里面的字符,叫xx字符,如ASCII字符集里面的ASCII字符,GB2312字符集里面的GB2312字符。
杰哥的IT之旅
2020/06/18
3.2K0
万字长文讲解编码知识,看这文就够了!
又编解码错误?一怒之下我把编解码的问题连根拔起!!!
我就纳闷儿了,我就做个测试,你错误就错误呗,你倒是跟我说这个逻辑行不行得通啊,我才不想管你是不是解不了码。
看、未来
2021/09/18
3330
相关推荐
GBK标准入门介绍与学习总结
更多 >
加入讨论
的问答专区 >
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
    本文部分代码块支持一键运行,欢迎体验
    本文部分代码块支持一键运行,欢迎体验