科研材料的写作在很大程度上不是靠个人感性知识的输出,而通常是基于大量相关材料和信息的汇总。在涉及一个新的领域时,缺乏对概念的认知和理解,也缺少对应的学习材料,这限制了任务的及时完成。本文给出了一个有效解决这些问题的策略,包括如何快速的收集中文文献,如何从收集的大量素材中提取有用信息,进而针对性地通过对这些信息的学习提高写作的水平。
1 文献收集
收集文献的目的是构建句子库,需要平文本。从语言种类上,文献包含少量的中文和大量的英文文献。通常使用的格式的PDF,英文PDF转平文本相对容易的多,而中文则极不理想。幸运的是,部分中文期刊官网提供HTML全文查看,这些就解决了中文PDF下载繁琐和转换困难的问题。HTML全文查看并不是要一条一条的复制粘贴,有效率更好的方法,人称“爬虫”。爬虫就是用程序循环访问相关网页并抽取需要的内容。爬虫用到的语言有多种,由于我偏重于R
而且只会这个,所以下面给一个抓取林业一级核心《林业科学》的示例。在一级核心刊物上发表文章不是一件非常容易的事,所以刊发的文章在用词、表达和逻辑上还是能够代表国内的顶级水平的,是比较合适的学习材料。目前《林业科学》、《农业科学》和《遗传》等提供近几年的全文,足够了。
分2层执行,底层是每篇文章,其网址依赖于上层卷目录中的信息
上层代码如下
# 加载包
library(rvest)
library(tidyverse)
# 2014-2018 指定要爬取的url
for (vol in 44:95) {
url <- paste0("http://www.linyekexue.net/CN/volumn/volumn_14", vol, ".shtml")
webpage <- read_html(url)
period <- webpage %>% html_nodes("font") %>% html_text %>% .[1] %>% str_split(" ") %>%
unlist %>% .[1]
year <- period %>% str_extract("\\d{4}")
issue <- period %>% str_extract("\\d{1,2}期") %>% str_replace("期", "")
page <- webpage %>% html_nodes(".J_VM") %>% html_text %>% str_extract("\\d{1,3}-\\d{1,3}") %>%
.[!is.na(.)] %>% str_split("-") %>% lapply("[[", 1) %>% unlist %>% .[-1]
cat("---", vol, "---\n")
for (i in 1:length(page)) {
url <- paste0("http://html.rhhz.net/linyekexue/html/", year, "-", issue,
"-", page[i], ".htm") %>% cn_journal_txt
cat("###", i, "\n")
}
}
底层代码(一个函数)
cn_journal_txt <- function(url) {
library(rvest)
library(tidyverse)
webpage <- read_html(url)
titl <- webpage %>% html_nodes(".article_title_cn") %>% html_text %>% .[1] %>%
str_replace_all("(\n\\s{1,})|(\r)|(:)|(/)|(\\*)", "")
author <- webpage %>% html_nodes("#zuozhe1_CN") %>% html_text %>% str_replace_all("(\\d)|(,)|(\r)|(\n)|(\t)",
"")
year <- webpage %>% html_nodes("#copy_CN") %>% html_text %>% str_extract("\\d{4}")
titl <- paste(author, year, titl, sep = " - ")
abs <- webpage %>% html_nodes(".abs") %>% html_text %>% .[1] %>% str_replace_all("(\n\\s{1,})|(\t)",
"")
# subtitl <- webpage %>% html_nodes('.outline_anchor') diff str in diff pages
paragraph0 <- webpage %>% html_nodes(".Ident-First-Line") %>% html_text
paragraph <- webpage %>% html_nodes(".paragraph") %>% html_text
paragraph <- c(paragraph0, paragraph) %>% unique()
write(c(abs, paragraph), file = paste0("output/lykx_html/", titl, ".txt"))
}
抓到的内容
接着用
dword
构句子库,并根据关键字提取句子、所在文献等信息。有了这些信息,就能有目的地学习不熟悉的概念,学习专业的表达方式,从而让学习和写作变得更高效些。
网友评论