前言
延续之前的用R语言读琅琊榜小说,继续讲一下利用R语言做有些简单的文本处理、分词的事情。其实便是继续讲一下用R语言读书的事情啦,讲讲怎么用它里面简单的文本处理办法,来优化咱们的读书体验,倘若读邮件和读代码亦算阅读的话。。用的代码超级简单,不触及其他包
这儿讲两个示例,结尾再来吐槽和总结。
1)R-Blogger订阅邮件拆分
2) R代码库快速阅读办法
1、R-Blogger订阅邮件拆分
这个案例用的文本数据来自于R-Blooger网站。R-Blogger是一个专门收集和发布与R语言关联文案的地区。它供给一个每日邮件订阅功能,会把今天好的文案,直接发到你邮箱去。本身网站是不消FQ就能够上的,然则订阅的确认邮件却需求FQ后才可上(基于google)
我之前批量订阅了快半年吧,最起始的时候还每日都瞅瞅,然则它一封邮件信息量有些大,况且有些文案不太感兴趣,渐渐就兴趣转移,累计了一堆未读的在里面。
咱们能够利用outlook软件来批量得到这些邮件的文本。(outlook,选中所有R-Blogger邮件,另存为,就可把所有邮件存到一个txt文件里)
接下来是代码示例。
源数据文本文件请在这儿下载:http://vdisk.weibo.com/s/o_UNVWL3aJf #1、读取数据r_blog<-readLines("F:/R/R-ReadBooks/R-blogger.txt")r_blog[20:30]#2、以posted为定位要求,分别提取出文案的时间、标题、作者等关系#文案发布时间sample(r_blog[grep("Posted:",r_blog)],10)#文案标题sample(r_blog[grep("Posted:",r_blog)-2],10)#文案作者sample(r_blog[grep("Posted:",r_blog)+3],5)#3、按照以上信息,按文案拆分长文本(4.5M)#4、以library为要求,瞧瞧近期流行什么库library_list<-strsplit(r_blog[grep("^library\\(",r_blog)],"\\(|\\)|\\,")library_list<-sapply(library_list,function(e) e[2])library_list<-gsub("\\p{P}","",library_list,perl=TRUE)
a<-sort(table(library_list),decreasing = TRUE)
#最流行head(a,20)#5、以github+http为要求,选出邮件里触及到的所有github位置url_raw<-r_blog[grepl("\\<http.*\\>",r_blog) &(!grepl("\\.jpg|\\.png",r_blog))]url_list<-sapply(strsplit(url_raw,"<|>"),function(e) e[2])
url_list<-unique(url_list[!is.na(url_list)]) sample(grep(
"github",url_list,value=TRUE),10)
样图:
2、代码文本分析
刚才已然说到,R语言能够处理有些简单的文本。那样咱们扩展一下来想,代码.R,为何不可亦被视为是咱们要处理的文本,按之前的规律,去扫一下里面的文本数据?
尤其是在大众都说要多写代码,多看别人的代码,多累积代码功能块,但每次打开别人的代码,都对那成千上百的英文望而生畏,用程序去处理代码块,是不是能得出有些规律,从更加客观敏捷的方向,做有些统计和分析呢?
源数据源自于这本书: 《设备学习:实用案例解析》
该书代码的github位置如下,可直接下载: https://github.com/johnmyleswhite/ML_for_Hackers
请看代码示例。 #1.读入原始数据,确实能够如文本同样一行行读入,这儿需要遍历的办法读入数据,由于文件夹里不止一个R文件fileslist<-list.files("F:/Code/ML_for_Hackers-master/",recursive = TRUE,pattern="\\.R$",full.names = TRUE)code_detail<-NULLfor (i in 1:length(fileslist)){
code_detail<-c(code_detail,readLines(fileslist[i]))
}
#2、瞧瞧用了什么R包library_list<-strsplit(code_detail[grep("^library\\(",code_detail)],"\\(|\\)|\\,")library_list<-sapply(library_list,function(e) e[2])library_list<-gsub("\\p{P}","",library_list,perl=TRUE)
a<-sort(table(library_list),decreasing = TRUE)
a
#3、瞧瞧注释占总代码行的多少zhushi<-code_detail[grep("#",code_detail)]
length(zhushi)/length(code_detail)
#这儿约占30%#4、瞧瞧自定义了什么函数function_list<-code_detail[grepl("function\\(",code_detail) & grepl("<-",code_detail) & !grepl("apply",code_detail)]function_list<-sapply(strsplit(function_list," "),function(e) e[1])sample(function_list,30)
3、总结
那样此刻来总结一下三个样例的特点。
倘若用一个数据分析的框架去套的话,她们都符合需要分析、获取数据、处理数据、分析再整合数据等等一套基本流程。其实这个亦是咱们平常做分析亦好,搞报表亦好都要遵循的一套定理。
况且用这几类文本数据入门R语言的数据处理与分析流程,亦能很好地保持住学习者的兴趣。
当年我学R时最大的痛苦便是,在courseraJHU的R课里,老师总是爱好用各样社会统计数据,天气数据,生物数据给咱们举例子。然则这些数据一来专业性太强,二来多为欧美社会的数据,用起这些数据时总觉得非常痛苦。
因此当我之前弄那个R语言看琅琊榜小说时,我发掘这些数据才是咱们平常都感兴趣的,学来确实能够用的,每一个人都有自己的一套分析技法的,你能够很轻易得去设计一套数据分析流程,得到一个推论和结论的数据。况且这些办法用得好,咱们的阅读体验、读书体验会有很高的加强,且加速了知识累积归类的过程。
咱们周边都充斥着数据,为何不可把文本亦看成是另类的一种数据呢?一个合格的想往处理数据方向走的人,最少要在生活里随时随地能发掘文字背面的奥秘与数字吧?
另一,需要指出的是:
1)数据本身有自己的特性,以及处理目的,联系业务、认识业务,绝对不是口头白说。
像读琅琊榜小说,咱们要关注的是以【名人】来串联【情节】,以及名人与名人的关系,因此如text[gerpl(“飞流”,text) & grepl(“蔺晨”,text)]这般的多要求筛选就比比皆是,而针对R-blogger,由于这个数据来自于多个作者,且有时间跨度,怎样有效地选出这些作者,而后怎样去决定那些内容对咱们有用,在时间变换下人们关注趋势有什么变化,这些处理就更加重要了。乃至要设计有些分词、文本挖掘、频率统计的内容。
而针对代码的甄选,咱们要熟悉把握正则表达式,能够在多个{},()中选出有些共通的东西,还要把哪些乱命名的变量通通筛选出来,抛离掉,只留下函数啊、技术的关键应用点。这儿更加多考察的是取数的能力,由于它不像前两个案例的文本那样规整易取。
仅仅只是这儿指的三个简单的案例,她们的处理办法就大相径庭,况且倘若弄小说不懂名人带动情节,看订阅无自己的看邮件习惯,乃至不懂代码的话,亦没办法对上面的数据做进一步的处理。
因此熟练业务,不仅是熟练业务数据的特点,亦要熟练业务的需要,自己能找出有些能够深入的点来继续挖掘
2)从趋势来讲,人人都会编程会作为更广范围内的一个硬需求
这儿有有些畅想:
从文本处理的方向,当咱们要背单词时,为何不可找一部美剧或电影的字幕,导入R里面,而后匹配一下雅思托福词汇,或单词本,把要背的单词所在的段落所有选出来阅读?(灵感源自:书《单词社交网络》)
而后以前哪些编写汇总集、梳理角色关系非常痛苦的编辑工作,是不是能够用一个简单的代码程序替代,让人从无道理的翻找典故里摆脱出来,更加专注于对内部规律的思考?再也不需要人工去剪切网页、摘抄报纸,一切的一切,就只是记关键词与出处?(咱们中学时要看的哪些经典诗词解析)
而后针对一个网站的运营,如哪些经常要关注敌方上什么促销的运营来讲,是不是能够简单弄个爬虫,定时给自己推送其他家的价格促销,从而认识她们的运营策略?(其实此刻若干大电商都在做,但工具下放到运营自己的,还无那样多)
倘若写剧本的,要经典桥段能够自己写个程序把想要的意境从成千上万本剧本小说里摘出来瞧瞧,那效率该有多大加强啊,只需要学会一点点博主程,咱们就能够把自己从重复性劳动中解放出来,去做真正有价值的事情时,我觉得这才是非计算机人士业余学编程最有价值的地区。
顺便,近期在用codecademy刷python课程,感谢这世界上总是有人愿意把一个枯燥的编程学习过程做的像打游戏那样生动有趣实时可互动。越多人做这些编程推广的事情,就会有越多人能自如编写比本文说到哪些文本处理更繁杂的程序脚本,编程的门槛是越来越低了。
---
最后便是,多读书,多瞧瞧。。当初写这些代码本质上是想要阅读得快一点,记得牢一点,整理东西快一点,绝对不是为了累积资料而不看书的。倘若辛辛苦苦写了个代码帮咱们把所有感兴趣的文字都取了出来,却什么亦不看,这跟做数据分析不愿意跟哪些业务打交道认识实情的白痴有啥区别呢。。。
顺便附上用R玩过的其他事情,欢迎吐槽:
·R语言:xlsx包安装与结合VBA快速把xlsx文件转化为csv
·R语言:处理反常值的三个示例 tryCatch
·R语言:爬虫初尝试-RVEST包
·R语言:ggplot2精细化制图示例
·R语言:Kindle爬特价书示例(rvest)+R输出HTML网页示例
·R语言:用R语言读琅琊榜小说
PS又PS:
这文加用R语言读琅琊榜小说一块,是之前为一个演讲准备的演示材料,不外当时太紧张了,还准备有些别的东西而后最后忘记讲了哈哈哈哈——结论是倘若上台讲话,必定要把想讲的东西写个小抄,或放在PPT的要点里,否则铁定忘记= =
【直播课程举荐】
点击“阅读原文”,就可进入学习界面哦~~~
|