菜鸟学R语言:结合文献数据库,分析学科发展概况

February 05, 2014

Tags:菜鸟学R语言

最近因为图卢兹总是下雨,河水水位居高不下,所以,我就赋闲了。我从来也不是一个务正业的人,有了时间,除了看文献之外,总要干点什么。这次时间充裕,加上导师让我不要着急,我心里只能嘀咕着,我可不想延期毕业。于是,有了时间自由支配,所以,就琢磨着完成一开始学R的时候想要完成的一个idea,就是,根据文献搜索结果,来进行分析预测学科发展走势。

当然,想法总是丰满,现实总是骨感的。经过两天的钻研,也只能摸到个text mining(文本挖掘)课堂之外楼道转角楼梯口的男厕所的冰山一角。我对这方面的兴趣和知识储备是呈反比的,但丝毫没有影响我不务正业的脚步。这次,我就讲讲思路,代码就不贴了,有兴趣的可以自己搞出来,或者想办法联系我,大牛的话,就当做看看儿时的自己吧。

从EndNote中导出文献数据

为什么要用EndNote呢?我曾花了不少时间研究抓取谷歌学术的搜索结果,但是每次都很快被谷歌封掉IP。原因是,我没有对脚本进行浏览器伪装,和设置每次请求的间隔时间等。本着结果导向的思想,我转向了EndNote强大的软件内文献数据库搜索功能。

所以,第一步就是确定你要搜索的关键词,在这里,我比较关注“meiofauna”,于是就在title或者keywords,或者全文中对此关键词进行搜索,得到包含它的文献题录。

literature-analysis-1

我总共得到了623条文献题录,ctrl+A全选转移到library的某个group里面,然后点击这个group,再点击左上角的file——export,另存为xml格式文件即可。这样就把所有的文献题录都保存到一个文件中了。

抓取有用信息的工作都由R的XML包来完成

这里不赘述了,我以前的几篇博文中提到过如何抓取网页数据,其中最主要的就是xpath的知识,firefox和chrome中都有插件可以找到网页中某个node的地址,这次是保存下来的文件,和之前稍有不同,也就是说不能偷懒了,建议大家去w3cschool的网站看看。没有什么难点,除了这些具体的用哪个包,还有就是代码习惯,很重要很重要,很多时间出现bug,都是因为数据格式不对,很多变量保存来保存去的,用了一些function之后,格式就变了,所以,这种习惯需要一点一点养成,我还差得远呢,毕竟不是天天写。

用什么方法去分析抓取下来的数据呢?

我抓取下来的数据包括了每篇论文的标题、出版日期、摘要、作者单位地址,这四项最主要的内容。其中摘要是一个庞大的语料库,我也试着做了一下词频分析,但我做着做着,就感觉知识匮乏,搞不下去了。我的想法很简单,就是看横坐标时间为单位,某一些关键词的词频是随时间增大还是减少。我能把这些都实现,但是这个结果是不是真实的,还是需要强大的模型思维来奠基。

于是,我转而关注作者的单位地址,从中提取出国家名称,从而计算国家名称出现的频率,看其随时间变化的趋势,这样,也能从时间跨度上了解某方向的进展,可以间接帮助自己以后去哪儿找博后定方向。

这样,思路逐渐清晰。我问了谷歌,哪儿有全球国家名称列表,找到了个网站,用readHTMLTable这个函数来读取了国家名称,再用grepl来判断地址文本中是否含有某个国家的名称。这一步我要说一下,我原本的思路是,把地址文本分词,然后用match来判断,但这样处理的精确度完全依赖于分词的方法,而题录信息里的地址文本不是标准的有句号的文章,有的逗号后面有空格,有的没有空格或者多个空格,所以,很难用一种方法得到所有国家名称的匹配,再加上像south africa这样的国家,就让你不能用space作为分词依据。因此,在尝试了很长时间后,我放弃了。而现在用的grepl这个方法很有效,让我用5行代码就搞定了原来的几十行。

googleVis画图

这里参考了某大神的博客(需翻墙link),就没有使用rworldmap这个包,而使用了googleVis。因为前者要求在画图时,把国家名称转化为国家代码,虽然有countrycode这个包可以转换,但还是不如googleVis方便。于是,一气呵成,完成了以下以年代划分的五张图。

1970~2014年,对meiofauna有研究的国家示意图。

<!-- IntensityMap generated in R 3.0.2 by googleVis 0.4.7 package --> <!-- Thu Feb 06 00:34:13 2014 --> <!-- jsHeader --> <!-- jsChart --> <!-- divChart -->

结论

初步分析可以看出,美国一直处于领先地位,德国、法国、西班牙、意大利和加拿大是仅次于美国,处于第二梯队,南美洲也从无到有持续发展着,非洲的南非一枝独秀,亚洲的印度是第一名,中国以及东亚国家在这方面非常落后,澳大利亚一直不温不火,应该也可以算是第二梯队。如果欧洲以欧盟为单位计算的话,应该会和美国持平。

所以,国内还是很需要研究meiofauna的人才的。

后话:

其实,这篇文章所提供的思路可以举一反三的,比如,我可以每搜索一个关键词,导出一个xml文件,然后对若干个xml文件进行分析,这样就不是单一的单个关键词了,所分析的结果也更能代表具体的某个研究方向了。希望能对大家有所帮助。

· The end ·