Perl 调用R分词进行文本数据分析

最近有一个文本分析的需求,因分析系统用的是Perl,而Perl下优秀的中文文本分析包又少,所以调用R处理文本数据。

为什么不用Python

尽管Python拥有完备的NLP开源包支持,但是理由也很简单——因为Python目前接触不多,不敢班门弄斧,Python以后再说。目前,也只是需要的是一个快速原型,如果生产数据剧增,后期还需用c++重构下核心算法(顺便提一下,HMM就不重写了,吃力不讨好)。

如何开始

1.安装R程序,将R程序安装路径加入环境变量。

2.测试命令行批跑功能

cmd 输入 Rscript --arch x64 --help查看,x64是我当前安装的版本。

3.测试调用R程序,输出与Rgui一致,plot时候不会打开绘图窗口,默认以Report.pdf文件形式导出到脚本目录下。

测试

 1 #!/usr/bin/perl
 2 # Run R Script By Call R Program
 3 # Liangwl
 4 # 2015/9/19 19:43:14
 5 # Todo: Get the value from R runtime.Each parameter should be defind in Perl.
 6 use strict;
 7
 8 #Write R scripts here
 9 sub Rscripts
10 {
11 my $r =<<EndOfScript;
12 #R Scripts Begin
13 #Description: Test R Script
14 Args <- commandArgs();
15 cat("Args[1]=",Args[1],"\n");
16 cat("Args[2]=",Args[2],"\n");
17 cat("Args[3]=",Args[3],"\n");
18 cat("Args[4]=",Args[4],"\n");
19 cat("Args[5]=",Args[5],"\n");
20 cat("Args[6]=",Args[6],"\n");
21 cat("Args[7]=",Args[7],"\n");
22 a <- c(1:10);
23 b <- c(10,5);
24 c = a + b;
25 d <- c(11:20);
26 c;
27 d;
28 x <- rbinom(1000, 10, 0.25);
29 y <- rbinom(1000, 10, 0.25);
30 plot(x, y);
31 plot(jitter(x),jitter(y));
32 pairs(iris[,1:4]);
33 q();
34 #R Scripts End
35 EndOfScript
36 return $r;
37 }
38
39 #Use pipe to Call&Exec R scripts
40 sub callR
41 {
42     my ($file,$TX_DATE) = @_;
43     my $rc = open(R,"| r --no-save $TX_DATE") or die $!;
44     unless ($rc) {
45         print "Could not invoke R command\n";
46         return -1;
47     }
48     print R $file;
49     return $rc;
50 }
51
52 sub main
53 {
54     my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time());
55     my $current = sprintf("%04d-%02d-%02d %02d:%02d:%02d",$year+1900,$mon + 1,$mday,$hour,$min,$sec);
56     print "$current\nPID:$$ \n------------------------------------------------------------\n";
57
58     # There‘s two way to execute R script
59
60     # 1.execute R Script in batch
61     # The parameter which follow ‘Rscript‘ should be a *.r file
62     # The *.r file should be encode with ANSI/ASCII in UNIX/LF mode.
63     my $path = "C:\\Users\\LiangWenLong\\Desktop\\test.r";
64     my $rc_batch = `Rscript $path 123456` or die $! ;
65     print $rc_batch;
66     print "------------------------------------------------------------\n";
67
68     # 2.use pipe call R program and execute script
69     my $TX_DATE = ‘20150920‘;
70     my $rc_pipe = callR(Rscripts(),$TX_DATE);
71
72     #return $rc_pipe;
73     return $rc_batch;
74 }
75 my $ret = main();
76 exit($ret);

运行结果

应用场景

分词、词频、文本挖掘、情感分析、语义分析

时间: 2024-10-12 00:10:04

Perl 调用R分词进行文本数据分析的相关文章

用python调用R做数据分析-准备工作

0.R的介绍 R是自由软件,不带任何担保,在某些条件下你可以将其自由散布,用'license()'或'licence()'来看散布的详细条件. R是个合作计划,有许多人为之做出了贡献,用'contributors()'来看合作者的详细情况,用'citation()'会告诉你如何在出版物中正确地引用R或R程序包,用'demo()'来看一些示范程序,用'help()'来阅读在线帮助文件,或用'help.start()'通过HTML浏览器来看帮助文件. 用'q()'退出R. demo(graphics

R(八): R分词统计-老九门

整理笔记时,某人在看老九门,so 选它作例子.分析文本内容基本的步骤:提取文本中的词语 -> 统计词语频率 -> 词频属性可视化.词频:能反映词语在文本中的重要性,一般越重要的词语,在文本中出现的次数就会越多.词云:让词语的频率属性可视化,更加直观清晰.文本下载地址(http://www.yuandn.com/booktxt/59797/#download 效果图是将12章后面内容删除后结果) 目录: 效果示例图 分词包介绍及安装 词云包介绍安装 分词统计 词云展现  效果示例图: 分词包介绍

Rsession让Java调用R更简单

Rsession让Java调用R更简单 R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒.直到大数据的爆发,R语言变成了一门炙手可热的数据分析的利器.随着越来越多的工程背景的人的加入,R语言的社区在迅速扩大成长.现在已不仅仅是统计领域,教育,银行,电商,互联网….都在使用R语言. 要成为有理想的极客,我们不能停留在语法上,要掌握牢固的数学,概率,统计知识,同时还要有创新精神,把R语言发挥

在 SPSS Statistics 和 Modeler 中调用 R 语言的实现和应用

http://www.ibm.com/developerworks/cn/data/library/ba/ba-1401spss-r/index.html 登录 | 注册   IBM 技术主题 软件下载 社区 技术讲座 搜索 developerWorks 打印本页面 用电子邮件发送本页面 新浪微博 人人网 腾讯微博 搜狐微博 网易微博 Digg Facebook Twitter Delicious Linked In developerWorks 中国 技术主题 Information Mana

python 调用 R,使用rpy2

python 与 R 是当今数据分析的两大主流语言.作为一个统计系的学生,我最早接触的是R,后来才接触的python.python是通用编程语言,科学计算.数据分析是其重要的组成部分,但并非全部:而R则更偏重于统计分析,毕竟R是统计学家发明的,本身就是为统计而生.python的优势在于其全能性,几乎所有的领域都有python的身影,而R则在统计及其相关领域非常专业.二者各有优势.那么这么好的两个东西,能不能结合到一起呢?答案是肯定的.要想实现这种功能,一般必须要提供相应的调用接口.rpy2这个第

Eclipse下C++调用NLPIR分词系统

最近在研究文本挖掘,对于中文文本,首先要进行分词,那么就用到了NLPIR分词系统.总结了一下网上的资料:下面介绍一下如何用C++调用NLPIR分词系统: step 1:下载最新版的NLPIR分词系统:http://ictclas.nlpir.org/.解压后如下图: step 2:打开IDE(我用的是eclipse)新建一个c++工程NLPIR,然后从上面解压出来的文件中找到Data.NLPIR.h.NLPIR.lib.NLPIR.dll,拷贝到刚才新建的工程下面: step 3:添加库文件,右

2015CDAS中国数据分析师行业峰会:R语言量化投资数据分析应用

前言 第一次在以数据分析为切入点的会议上做演讲,感觉还是挺不一样的.大会分为"金融数据洞察","医疗数据洞察","电商数据洞察","大小数据洞察"的4个部分,分别介绍了数据分析在不同行业的应用情况.当然,这次我是在"金融数据洞察"分论坛. 我非常有幸作为分享嘉宾参加2015年的中国数据分析师行业峰会,分享R语言在金融领域中的应用. 目录 我的演讲主题:R语言量化投资数据分析应用 会议体验和照片分享 整体文章

关于在C++中调用R函数以及RCpp使用

最近因为项目要用到,所以在想办法把R语言用到C++中. 网上查了看到有一个Rcpp的工具.所以在这里总结一下. 现在能想到的几种在C++中调用R语言的方法如下: 1. 使用Rcpp R高级编程技巧及Rcpp的介绍 Rcpp的前世今生 Rcpp快速入门 Rcpp简明入门 Exposing C++ functions and classes with Rcpp modules Rcpp: Seamless R and C++ Integration Rcpp CRAN usage Writing R

R中按组数据分析

如下的一组数据: age group 1 23.0883 1 2 25.8344 1 3 29.4648 1 4 32.7858 2 5 33.6372 1 6 34.9350 1 7 35.2115 2 8 35.2115 2 9 35.2115 2 10 36.7803 1 如果想要对两组数据分别进行均值和求和,最简单的想法是按类做分组的子矩阵,但是太麻烦. 如果要得到下面的结果:group mean sd 1 34.5 5.6 2 32.3 4.2 ...今天学到的方法是:plyr包中的d