标签归档:软件包

jiebaR中文分词——R的灵活,C的效率

本文作者:覃文锋,厦门大学公共卫生学院本科生,研究兴趣为生物统计和数据挖掘。

主页:http://qinwenfeng.com/cn/jiebaR-dev/

R是什么?

记得刚接触R的时候,有一种莫名的抵触,A、B、C、D、E那么多种语言了,为什么又多冒出来一个R?为了时间序列的课程,我又要多记忆一大堆乱七八糟的语法。当发现居然有dd<-23333 23333->ee 这样的语法时,更瞬间奠定了R语言在我心中的逗比地位。

因为老师没有专门教授R的相关细节,毕竟课程的主题不是那个,加之R的语法与众不同,这导致我的R语言相关作业的绝大部分时间一般都在百度、谷歌各种R语言的表达、实现方法中度过。

记得有位哲人说过:“人并没有真正喜欢吃的东西,只是吃的次数多了,就‘喜欢’了。”

我对R语言的看法也差不多。随着对R了解的深入,我才发现,丰富的可视化工具、可重复性研究、匿名函数、延迟求值、元编程,还有6000+的CRAN包等等特性,都是R赫赫的闪光点。

R是一门统计学用的语言,这是这门语言给我的第一印象。看了 John Chambers 在 USER!2014 的视频,以及他对R的定义“a software interface into the best algorithms.” 的时候,我感受到了R的“最初的价值”。

magrittr让我们更欢乐地操纵各种命令,knitr让统计报告和编程文学化,dplyr更方便地处理数据,R还有shiny让你轻松地构建动态内容。我很难想象没有R,让我用其他语言来完成完成这些事情需要多少的工作量。

灵活而高效的接口

有人说R慢,只能说这些人应该不够“本质”,效率和灵活性总是需要平衡的。用C和FORTRAN来实现算法,用R(S)来解决问题,这是S诞生的初衷之一。英语渣渣的理解,不对请轻轻地喷。R的底层C接口对初学者有些复杂,Rcpp的出现很大程度上降低了写出高效率R包和代码的成本。

之前因为对文本挖掘比较感兴趣,所以打算用R来做一些分析,但是发现在R上,文本挖掘最基本的中文分词的模块还没有较好的实现。R是开源的,开源的意义不只是Free使用,还有贡献社区这一层,于是jiebaR诞生了。

jiebaR是“结巴”中文分词(Python)的R语言版本,支持最大概率法(Maximum Probability),隐式马尔科夫模型(Hidden Markov Model),索引模型(QuerySegment),混合模型(MixSegment)共四种分词模式,同时有词性标注,关键词提取,文本Simhash相似度比较等功能。项目使用了Rcpp和CppJieba进行开发。目前托管在GitHub上。安装很简单,你可以下载Windows的二进制包或者:

library(devtools)
install_github("qinwf/jiebaR")

是的,然后你就可以开始分词了,再也没有rJava那头痛的Path设置。

继续阅读jiebaR中文分词——R的灵活,C的效率

showtext:字体,好玩的字体和好玩的图形

统计图形的作用想必不用我多说,一幅美观的图往往能让枯燥的数据变得有趣起来,而R恰巧就是这样一个作图的利器。然而,从论坛上的帖子来看,大家在用R画图时经常会遇到几个终极问题:

  1. 中文无法显示
  2. XX类型的图怎么画?
  3. 中文无法显示
  4. 中文无法显示
  5. 中文无法显示
  6. ……

第2个问题由于太过终极我还没法回答,所以就先试着解决第1个,第3个,第4个,第5个,第……个问题好了。

继续阅读showtext:字体,好玩的字体和好玩的图形