R+tmcn笔记︱tmcn包的基本内容以及李舰老师R语言大会展示内容摘录
每每以为攀得众山小,可、每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~
———————————————————————————
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~
———————————————————————————
R+tmcn笔记︱tmcn包的基本内容以及李舰老师R语言大会展示内容摘录的更多相关文章
- R学习笔记 ---- 系列文章
R实战 开篇:介绍R的使用 R学习笔记 第五篇:字符串操作 R学习笔记 第六篇:数据变换和清理 R学习笔记 第四篇:函数,分支和循环 R学习笔记 第三篇:数据框 R学习笔记 第二篇:矩阵.数组和列表 ...
- 重磅︱R+NLP:text2vec包——New 文本分析生态系统 No.1(一,简介)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 词向量的表示主流的有两种方式,一种当然是耳熟能 ...
- R学习笔记(4): 使用外部数据
来源于:R学习笔记(4): 使用外部数据 博客:心内求法 鉴于内存的非持久性和容量限制,一个有效的数据处理工具必须能够使用外部数据:能够从外部获取大量的数据,也能够将处理结果保存.R中提供了一系列的函 ...
- R语言 一套内容 从入门 到放弃
[怪毛匠子整理] 1.下载 wget http://mirror.bjtu.edu.cn/cran/src/base/R-3/R-3.0.1.tar.gz 2.解压: tar -zxvf R-3.0. ...
- TJI读书笔记14-闭包与回调
TJI读书笔记14-闭包与回调 闭包与回调 为什么要使用内部类?内部类继承自某个类或者实现某个接口,内部类的代码可以操作外嵌类的对象. 这不是使用内部类的理由. 那么为什么使用内部类呢? 我觉得如 ...
- R学习笔记:了解R的使用
R是一种区分大小写的解释性语言,只支持单行注释,注释由符号#开头,当前行出现在#之后的任何文本都会被R解释器忽略.R脚本的一次执行叫做一个会话(Session),可以通过函数quit()退出当前的会话 ...
- R+OCR︱借助tesseract包实现图片文本提取功能
2016年11月,Jeroen Ooms在CRAN发布了tesseract包,实现了R语言对简单图片的文本提取.分析功能. 利用开源OCR引擎进行图片处理,目前可以识别超过100种语言,R语言可以借助 ...
- eclipse android 不会自动生成R.java文件和包的解决办法
eclipse下编写android程序突然不会自动生成R.java文件和包的解决办法 我的eclipse原来是好好的,什么问题都没有的,结果今天一打开新建一个android程序,发现工程里不会自动 ...
- R自带数据包
datasets(R自带数据包) 作者:王彦博 作品来源:百度百科 precip #长度为70的命名向量 euro #欧元汇率,长度为11,每个元素都有命名 landmasses #48个陆地的面积, ...
随机推荐
- MVC登出友情提示
好奇心害死猫,话说12月30号,阳历17年末,行至小镇农户,有羊在鸣,由于好奇心泛滥,循声而至,发现一只被拴住的羊,好心喂草,不料反被舔了一口,得亏抽手及时,不然小拇指估计被咬掉,没错,是咬掉,即使如 ...
- python之金融与量化分析
一.金融 二.ipython 基础功能 ipython 快捷键
- ArcGIS License启动无响应
根据对网上的总结以及个人的经验,首先建议关闭电脑的防火墙以及杀毒软件 如果点击启动,依然没有反应,建议在dos下进行启动,命令为: lmgrd -z -c service.txt 如果需要深入研究,可 ...
- mkdir与mkdirs的区别
mkdir与mkdirs的区别 项目中需要在代码中读取或创建文件保存路径,用到了mkdir,查看还有个mkdirs方法,这里记录一下两者的区别. 1.关于两者的说明如下: boolean mkdir( ...
- HTML核心标签之表格标签(二)
基本用法: <ul type="cir"> <li>显示数据</li> <li>显示数据</li> </ul> ...
- ABP官方文档翻译 4.5 特征管理
特征管理 介绍 关于IFeatureValueStore 特征类型 Boolean特征 Value特征 定义特征 基本特征属性 其他特征属性 特征层级 检查特征 使用RequiresFeature特性 ...
- c语言中的#ifdef和#ifndef
#include "stdio.h"#include "conio.h"#define MAX#define MAXIMUM(x,y) (x>y)?x:y ...
- 【SSH框架】之Struts2系列(二)
微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联 1.Struts2常量配置 (1).Struts2默认常量配置文件路径,如下图: (2).Strut ...
- Promise对象的简单用法
要了解一个东西,首先要从,它是什么.用来做什么以及怎么取用它这三个方面来了解. 首先,promise是什么? 我们来参考一下MDN对它的定义: Promise 对象用于一个异步操作的最终完成(或失败) ...
- 深入理解vue
一 理解vue的核心理念 使用vue会让人感到身心愉悦,它同时具备angular和react的优点,轻量级,api简单,文档齐全,简单强大,麻雀虽小五脏俱全. 倘若用一句话来概括vue,那么我首先想到 ...