如何将CNKI论文信息转换成你想要的参考文献格式

背景

大前天发布了“翻译技术教学与研究资源库”(

“翻译技术教学与研究资源库”试用版上线

)之后,有两三位老师朋友都问及这个资料库能否支持导出某篇论文的指定期刊参考文献格式。

资料库上线的时候不支持,不过,现在支持了~

先给大家看一下目前新增的两项功能:

功能三:半自动导入CNKI题录信息

在我之前的版本中,如果想添加一篇论文的题录,需要手动的粘贴年份、作者、题名、期刊名等信息,还是非常麻烦的。

程序的好处自然是省去人的麻烦,尽可能自动完成题录信息添加的操作。

CNKI有一项功能是这样的:

如果想将一篇论文的题录信息导出到其他的文献管理软件,可以在网页中点击“导出/参考文献”,然后看到这些信息:

看起来好像CNKI提供的参考文献格式可以直接粘贴复制使用,但是在作者投稿时,基本上每个期刊都有自己的参考文献格式,因此CNKI提供的并不能直接使用。

大家常用的文献管理软件有EndNote、NoteExpress,目前我自己经常用的是EndNote,所以点击一下上图中的“EndNote”:

可以看到EndNote支持的格式很有规律,我们可以点击“复制到剪贴板”,粘贴到下面的页面中:

然后点击“提取”,会看到下面这个结果:

再来看一个动图:

信息检查无误后就可以插入到数据库中。

之所以说“半自动导入CNKI题录信息”,是因为现在还做不到直接通过网址来自动提取论文题录信息,CNKI目前还不支持这个功能,只能先手动复制粘贴题录信息,再放到我的资源库中去提取关键信息。

功能四:在论文主页呈现不同期刊的参考文献格式

大家可以前往查看这个页面:

http://translation.education/knowledge/teachingpaperpage.php?id=1

截图如下:

这个期刊析出论文的因为格式不是用户手动输入的,而是基于CNKI导入的数据自动生成的。

目前我只添加了三个期刊的参考文献格式,未来还会添加更多。目前遇到的主要问题是:这些期刊的投稿须知里给出的参考文献体例描述有时候让我很迷惑,比如序号后面是否有空格、多个人名之间用逗号还是顿号、逗号是中文逗号还是英文逗号,等等。所以我现在给出的三个期刊的参考文献格式应该也是有问题的,还得调整。

实现方法

1. 如何从题录信息中提取作者名

接下来我就把实现的方法简单介绍一下,首先是如何从CNKI导出的题录信息中获取数据。

以下是CNKI导出的题录信息:

%0 Journal Article

%A 俞敬松

%A 陈泽松

%+ 北京大学信息管理系;北京大学软件与微电子学院;

%T 浅析MOOC与翻转课堂在“翻译技术实践”课程中的应用

%J 工业和信息化教育

%D 2014

%N 11

%K MOOC;翻转课堂;翻译技术教学;课堂活动组织

%X MOOC与翻转课堂借力于数字化创新,颠覆了传统的教学模式,正在重新构筑课堂内外的学习价值,引起了国内外研究者的广泛关注。北京大学语言信息工程系"翻译技术实践"课程以北大MOOC建设为契机,采用MOOC与翻转课堂混合的教学模式,拆分课程目标,重构课堂内外的教学活动,以此提升课程教学效率,深化学生对翻译技术相关知识的内化与运用。本文探讨了MOOC教学与翻转课堂之间的衔接问题,构建出所谓的"递进式翻转教学"模式,这不但提升了翻译技术教学的质量,也是对SPOC/翻转课堂教学方法的创新探索。

%P 17-28

%@ 2095-5065

%L 10-1101/G4

%W CNKI

能够很容易发现所有的数据都有特定的标记,比如作者姓名都是“%A”开始的,后面还有一个空格,然后才是作者的姓名。

对于这样的情况,比较好的一种方式就是用正则表达式,如下:

在这段代码中,题录信息放到了“$input”变量中。

正则表达式为:%A[ ][一-龟]+

“%A”匹配的是题录信息中的%A

“[ ]”匹配的是空格

“[一-龟]”匹配的是任意一个中文汉字

“[一-龟]+”匹配的是多个中文汉字

当我们通过这段正则表达式匹配到作者姓名后,我们还需要把匹配到的姓名获取并存储到一个变量中,即下面这段代码:

preg_match_all($namepattern, $input, $namematches);

$namematches中存储的是数组,还需要循环遍历一下数组。获取到每一个作者姓名后,再用下面这段代码去掉其中的“%A”:

$author_draft[] = str_replace("%A ", "", $namematches[0][$i]);

去掉之后,如果是多个作者,我们还需要在作者的名字之间加个符号,合并到一起存到数据库中。代码如下:

$author = implode("、", $author_draft);

这样一来作者名就提取出来了。其他的信息虽然并不是用相同的方法来提取,但思路是一致的。

2. 如何将题录信息显示成想要的期刊参考文献格式

这部分相对来说要简单一些,即从数据库中提取信息,再按照参考文献格式来“组装”。

以《中国翻译》为例,期刊析出论文参考文献格式为:

[序号]析出文献主要责任者.析出文献题名[A].原文献主要责任者.原文献题名(外文书名用斜体)[C].出版地:出版者,出版年.

例:[1]方梦之.加强对比语言学的研究[A].见杨自检、李瑞华.英汉对比研究论文[C].上海:上海外语教育出版社,1990.

于是在“组装”数据库数据时就这样来写代码:

双引号里是直接输出的标点符号和序号,类似“$row['author']”的变量就是从数据库中获取到的数据,针对不同的论文会展示不同的数据。

只要参考文献的格式明确,那么据此撰写的代码输出的参考文献数据就是准确的。

结语

以上就是将CNKI论文信息转换成你想要的参考文献格式的实现方法。这些根本谈不上是什么“智能”的技术,但却能帮助我们解决小问题,希望能对大家有所帮助。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180604G0K0J400?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券