标签云在学术资源披露中的研究与应用--以中国图书情报核心期刊数据库关键词为例_标签云论文

标签云在学术资源揭示中的研究与应用——以中国知网数据库中图书情报类核心期刊论文关键词为例,本文主要内容关键词为:为例论文,数据库中论文,中国论文,情报论文,关键词论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。

目前Web2.0的应用层出不穷,标签(Tag)便是其中广为应用的一项技术。Tag有分类、开放分类、大众分类、标签等多种说法。总的来说,Tag是一种分类系统,一种有利于搜索查找的关键词标记,可以将文章中的关键词或其他能揭示文章含义的词组作为Tag来标记。Tag的加入不仅实现了对信息的自我组织,还参与实现了与其他用户的互动,产生基于Tag的信息共享和组织。每一个标签相当于一个分类,资源根据不同的标签被组织到不同的分类或者主题之下,所有用户的资源不仅存在于一个共享平台,而且相同的标签还能聚合不同用户相同分类下的资源[1]。Tag的这种特性适于聚合具有相同属性或相同、相似话题的资源,将Tag用于学术资源的揭示,可以将期刊论文、学位论文等资源按照相关话题组织在一起,有利于学术资源按主题特性导航。

1 Tag Cloud研究现状

标签(Tag)、标签云(Tag Cloud)和大众分类法(Folksonomy)是中外学者在Web2.0时代关注的热点。本文研究标签云技术在学术资源揭示中的实践,有必要分析Tag Cloud的研究现状。

CNKI(中国知网)是收录国内学术期刊比较全的平台,故笔者选取CNKI系列数据库来了解国内学者对标签云的研究。在CNKI中以“标签云”为关键词进行主题检索,获得30篇论文,可分为理论研究和实践研究两部分。刘斌和杨帆结合Web2.0应用数据,实现了多模式的餐厅信息推送服务,包括基于模糊条件约束的查询机制,基于位置的地图浏览模式和基于三维标签云的协同信息共享机制,为用户提供实时的基于位置的餐厅个性推荐及导航[2]。周碧晖和李景升将标签云技术进行扩展,利用多级标签云模型对国防教育资源进行分类,结合树形结构和云状结构的资源管理方法的特征,较好地实现了国防教育资源的快速搜索和导航功能,具有一定的实用价值[3]。夏秀峰等提出个性化标签云中的标签排序算法,通过用户自身的兴趣与挖掘出的用户潜在兴趣进行标签排序,构建个性化的标签云,并根据用户兴趣的变化定期对标签云进行更新,可以更好地发现电子商务网站中用户感兴趣的商品[4]。周雷和强巴旦增对几种知识组织方法中的民俗分类法和标签云作简要总结与展望[5]。总体而言,这些研究主要是对标签云的发展与概念的论述、标签云实现算法的研究、标签云在社交网络、数字图书馆以及知识导航等方面的应用。

LISA(Library and Information Science Abstract)收录了68个国家20多种语言的550多种期刊的摘要,包括20多个与图书馆学信息学相关的领域,数据库覆盖的时间从1969年起,每两个星期更新一次,每次增加约500条记录,通过LISA可以较全面快捷地了解整个图书馆学信息学的学术前沿、研究热点及发展趋势[6]。在LISA数据库中以“tag cloud”为关键词检索,得到有效结果33个。这些外文文献从多个方面论述了标签云的理论以及具体应用。Trattner、Christoph提出一个新的资源列表生成方法,解决以往标签系统在导航方面的局限性,这个方法基于层次网络模型,用一个大的在线百科全书系统验证了算法,取得了明显的效果[7]。Gao Qin阐述了标签在个人信息组织中的性能、负载、内存和一致性的实证研究,从标签的概念、组织形式、激励用户去做标记等发面展开阐述[8]。Clements M等阐述了在社会化媒体搜索中个人对标签查询长度的影响问题,指出社会化内容系统由用户生成大量非结构化的内容,标签云变得越来越流行,已经成了一种交互性很强的查询界面,只需要用户点击相应的词组或术语[9]。Hassan-Montero、Yusef等阐述了标签云的概念和特点,依托眼球跟踪技术研究标签云的表现形式,以特有字体和大小才能更好地满足用户的体验,收到更好的检索效果[10]。Sinclair、James等论述了标签云的概念和一部分使用标签云的典型网站,指出标签云的优点和用途,以及不足之处[11]。Louise F.Spiteri收集了三个网站Dli.icio.us、Furl和Technorati在30天生成的标签,研究这些基于大众分类法的标签的语言结构,结合其他参考资料,认为大众分类法可以作为一个有效的、灵活的工具,用来增强图书馆网站的用户友好性和交互性,以及基于用户驱动的咨询服务[12]。基于上述分析,可总结出标签云的基本用途有以下几个:

(1)标签云在知识管理中的应用。在基于社会标签的开放知识管理过程中,众多用户利用社会标签将个人知识以网络为平台进行广泛的交流、共享,融合大量显性和隐性知识、结构化和非结构化知识,使其得到优化和升华,最终形成创新型知识。用户利用社会标签协同创作,自发形成虚拟社群,社群成员有着共同的关注点,能形成多个知识共同体,这些知识共同体保障了知识创新的顺利开展。

(2)标签和标签云增强图书馆的服务和互动能力。通过允许用户对图书馆的资源进行标注等功能增强OPAC的揭示能力;可以利用各种社交网络工具进行图书馆的宣传;可以对图书馆的资源建设提供帮助,根据用户添加标签的情况生成标签云,用户可以查找同一主题的资源、资源拥有者、资源位置及其评论,达到资源共享的目的。

(3)标签云在图书馆信息组织中的应用。图书馆可以引进Folksonomy这个概念,推行Tag和TagCloud,允许用户在本馆网站上建立个人信息资源集,为馆藏资源添加标签,实现对馆藏资源的筛选、评比、推荐和评论,加强对馆藏资源的揭示和利用,以增值的内容吸引用户主动参与到图书馆的信息组织之中。

(4)标签云在个性化推荐中的应用。在标签系统中,用户可以依据自己的需要和理解,自由选择词汇对资源进行标注。标签作为由用户产生的元数据,能够独特反映用户的需求及其变化,而且由标签所构建的“用户——资源——标签”之间的关系网络能够为个性化信息推荐提供有价值的基础数据。

(5)标签云在学科导航中的应用。传统的学科导航栏在资源的有效组织、使用便捷性以及如何丰富信息资源内容等方面存在不足。标签云使得资源组织和使用变得很方便,通过使用不同的标签,可以把多主题的资源归到同一类目里,并且可以对新资源进行简单的描述,其他用户可以通过标签查找到所需的信息,提高检索效率。

(6)资源揭示作用。标签是在对文章概括和理解基础上产生的,是基于对内容的个人理解上的私人标注,未必针对主题,可能是时间、内容或与文章主题无关的词汇,因此标签的设定要比关键词自由和方便,它可以从多个维度去揭示信息内容。

2 图书馆应用Tag的需求分析

图书馆购买了很多数据库,包含期刊论文、学位论文、电子图书等。一般有两种方式检索论文:一是进入单独的数据库查询文章;二是利用统一检索平台或知识发现系统来统一检索多个数据库的文章。这两种方式对于明确知道需求的读者来说查找文献快捷,但不能按照学科或者相似文献聚类推荐给读者相关文献。

以中国知网收录的文章为例来分析Tag的作用。一般学术文章都有关键词,关键词反映了文章的主题和主要内容以及涉及的相关知识。具有相同或相似关键词的文章在内容上具有一定的关联性,用关键词将它们聚合在一起,用同一个关键词就能检索出多篇内容相关联的文章,给研究者提供更多的文献以供参考,具有一定的推荐功能。标签云是展示标签集合最常用的一种方式。标签云通常使用Web2.0内的XHTML元素来表现,可以依照现有的字典顺序或随机顺序以及热门程度等排序准则来确定标签的顺序。标签云一般有四种属性:字号,一般和数目有关,随着数目变化,增大字号;颜色,颜色也和数目有关,随着数目变化,添加背景等;字体,一般固定;排列顺序,一般按照字典顺序排列[13]。笔者将中国知网特定学科期刊中近5年文章的关键词抽取出来,存入预先建立的数据库,然后将这些关键词按照关键词的数量多少、字顺等排序规则展示在页面上,以标签云的方式组织这些关键词,展示给读者。从标签云展示的这些关键词可以看出近5年来学者所关注的本学科热点,起到直观浏览和检索的功能。

3 技术思路

以CNKI数据库收录的文章为例,选取近5年出版的期刊文章,读取文章关键词,存入数据库,利用程序将这些关键词以标签云的方式展现出来,放在图书馆网站合适的位置,供读者浏览和检索。

3.1 抓取关键词

在本地服务器上建立数据库,按照需求设计数据表。编写爬虫程序遍历所需文章,提取关键词,存入本地数据库。

3.2 生成标签云

用PHP语言编写页面,调用数据库中抓取好的关键词,按照关键词的数量排序,以多种方式显示在页面上。展示页面上的关键词数量可以依据所需定制。抓取关键词流程见图1。

图1 获取CNKI文章关键词流程图

4 实现步骤

笔者以CNKI中收录的17种图书情报CSSCI核心期刊[14]为例,采用PHP语言编制程序,数据库采用MySQL,抓取近5年论文的关键词,形成了关键词数据库,以关键词数量排序生成标签云,展示在网页上。

4.1 数据库设计

数据库设计两个表,t_article表存储具体一篇文章的信息,t_tagarticle存储文章的关键词,即标签。两个表的字段见表1、表2。

4.2 程序页面关键代码

整个系统主要包括5个页面:spider.php、cnki.php、dbhelper.php、index.php、search.php。spider.php、cnki.php、dbhelper.php三个页面主要负责关键词的抓取、过滤和存储。index.php、search.php两个页面主要负责前台展示和搜索。

(1)spider.php文件。主要定义抓取网页的类。

class spider{//构造网页抓取的类

function crawl($url){//抓取网页的地址

$content="";

$f=fopen($url,"rb");//fopen()函数打开文件或者URL。r表示只读方式打开,将文件指针指向文件头。使用“b”来强制使用二进制模式,这样就不会转换数据[15]。

if($f){

while(!feof($f)){

$content.=fread($f,8192);//fread()函数读取文件,读取8192字节时停止读取[16]。

}}

fclose($f);

return$content;

}}

(2)dbhelper.php文件。主要定义存取数据库的类。

class dbhelper{//构建dbhelper类

var $db;

var $rs;

function init(){ //调用mysqli的构造函数建立连接,同时选择使用数据库’test’

$this->db=@new mysqli("127.0.0.1","test","test","test");//检查数据库连接

if(mysqli_connect_errno()){

echo"数据库连接失败!<br>\n";

echo mysqli_connect_error();

exit;//退出程序,后面的所有语句将不再执行

}}

function query($sql){$this->init();

$this->rs=$this->db->query($sql);

if(!$this->rs){

$this->db->close();//关闭数据库连接

echo’数据记录插入失败!’;

exit;

$this->db->close();

function querySize($table){

$this->query(’select*from’.$table);

return $this->rs->num_rows;

function getRS(){

return $this->rs;

}}

(3)cnki.php文件。主要作用是遍历2008—2012年的期刊,遍历期数,确定每年每期的文章,然后解析每篇文章的结构,将题名、摘要、关键词、全文地址等信息存入数据库。主要代码如下:

$baseIDs=array(’ZGTS’=>’中国图书馆学报’,’QBLL’=>’情报理论与实践’,’TSQC’=>’图书馆情报知识’,’TSQB’=>’图书馆情报工作’,’QBKX’=>’情报科学’,’XDTQ’=>’现代图书情报技术’,’TSSS’=>’图书馆学研究’,’TSGJ’=>’图书馆建设’,’TNGZ’=>’图书馆杂志’,’TSGL’=>’图书馆论坛’,’TSGG’=>’图书馆工作与研究’,’TSGT’=>’图书馆’);//baseIDs存储的是期刊简码和名字的一个队列

foreach($baseIDs as $key=>$value){//遍历定义的17个期刊的每一种

for($year=2012;$year>2007;$year--){//遍历2008-2012年的期刊

for($issue=1,$b_issue=true;$b_issue=true;$issue++){

$counter=1;

$pre_url=’http://www.cnki.net/kcms/detail/detail.aspx?dbname=CJFDTEMP&filename=’;

if($key===’QBLL’){ $pre_url=

’http://www.cnki.net/kcms/detail/detail.aspx?dbname=cjfdtotal&filename=’;}

while(true){$counter+=1;$url=$pre_url.$key.$year.sprintf(’%02d’,$issue).sprintf(’%03d’,$counter);

$list=$spider->crawl($url);

if(preg_match(’/\bclass="sorry">/’,$list)){

$b_issue=false;break; }//遍历期数,因为对每年的期刊数目不确定,所以尝试获取第一篇文章,如果获取不到,即找到了\bclass="sorry">,那么该循环遍历到头了。

$list=preg_replace(’/[\s\S]*?<div id="MapArea">([\s\S]*?)<div id="QK_nav">[\s\Ss]*/’,’${1}’,$list);

$title=preg_replace(’/[\s'S]*?<span id="chTitle">(.*?)<[\s\S]*/’,’${1}’,$list);

if(preg_match(’/[\s\S]*?<span id="ChDivSummary|[\s\S]*?>([\s\S]*?)<‘span>[\s\S]*/’,$list)){

$abstract=preg_replace(’/[\s\S]*?<span id="ChDivSummary"[\s\S]*?>([\s\S]*?)<‘span>[\s\S]*/’,’${1}’,$list);}//遍历确定年、期的期刊

else{

$abstract=’No abstract is found…’;}

$id=$dbhelper->querySize(’t_article’)+1;

$dbhelper->query(insert into t_article(f_id,f_title,f_abstract,f_source,f_year,f_issue,f_url)values(’

.$id.’,’’.$title.’’,’’.$abstract.’’,’’.$source.’’,’.$year.’,’’.$issue.’’,’’.$url.’’)’);

$list=preg_replace(’/[\s\S]*?<span id="ChDivKeyWord"([\s\S]*?)<‘span>[\s\S]*/’,’${1}’,$list);

$list=preg_replace(’/[\s\S]*?<a.*?>(.*?)<\/a>/’,’${1}/ ’\’\’’,$list);

$tags=explode(’\’\’\’’,$list,-1);

foreach($tags as $tag){

$dbhelper->query(’insert into t_tagarticle(f_tag,f_articleid) values(’.’ ’’.$tag.’ ’,’.$id.’)’);}

//解析每篇文章的结构,获取有用信息,存入数据库。

(4)index.php文件。从数据库中读取关键词,按照字体大小以标签云展示出来。主要代码如下:

include_once(’dbhelper.php’);//连接数据库

$dbhelper=new dbhelper();

$dbhelper->query(’select f_tag,count(*) as amount from t_tagarticle group by f_tag order by count(*) desc limit 0,100’);

$rs=$dbhelper->getRS();//从数据库读取标签,生成记录集

function utf8_array_asort(&$array){

if(!isset($array)||!is_array($array)){

return false;

foreach($array as $k=>$v){

$array[$k]=iconv(’UTF-8’,’GBK//IGNORE’,$v);

asort($array);

foreach($array as $k=>$v){

$array[$k]=iconv(’GBK’,’UTF-8//IGNORE’,$v);

return true;

……//各种排序方式函数,包括顺序、倒序、数量等排序。队列里的数据是utf8格式的,需要编码转换为gbk格式,以便排序,排序后再转回utf8格式。

$sortFuncs=array(

’alpha’=>’utf8_array_myksort’,

’revAlpha’=>’utf8_array_mykrsort’,

’amountAsc’=>’asort’,

’amountDesc’=>’arsort’

);

(5)search.php页面。主要代码如下:

include_once(’dbhelper.php’);$dbhelper=new dbhelper();

$dbhelper->query(’select*from t_tagarticle as t,t_article as a where t.f_tag=\’’.$tag.’\’and t.f_articleid=a.f_id’);

$rs=$dbhelper->getRS();//按关键词查询文章

<div id="article">

<span id="title">标题:<a target="blank" href="<?php echo $rowObject->f_url;?>"><?php echo $rowObject->f_title;?></a></span><br/>

<b>机构:</b><?php echo $rowObject->f_agency;?><br/>

<b>来源:</b><?php echo urldecode($rowObject->f_source);?> ; ;<?php echo $rowObject->f_year;?>年第<?php echo $rowObject->f_issue;?>期<br/>

<b>摘要:</b><br/><?php echo $rowObject->f_abstract;?>

</div>//将查询结果展示出来

5 实现效果

系统完成之后,运行cnki.php抓取cnki数据库中被CSSCI收录的17种图书情报期刊,只抓取小段时间,得到记录近1.3万条,关键词1800多个。得到的结果见图2、图3和图4。

图2 标签云展示页面

图3 点击“图书馆”关键词的检索结果

图4点击标题得到的结果页面和全文链接

6 结语

Web2.0改变了互联网的信息传播方式,Tag标签是其中应用比较广泛的一种技术。社会标签在社交网络中得到很好的应用,如利用社会标签来描述、组织、浏览、搜索图片资源的Flickr网站[17]、对网页资源进行标注的Delicious网站[18]、对特定学术网站或数据库中的书目信息内容进行标注的Connotea网站[19]、组织和发现网上学术参考文献的CiteULike网站[20]。图书馆购买了大量的数据库、电子图书,将这些文献以多种方式提供给读者是图书馆的重要任务。本文分析读者的文献需求和馆藏文献特点,提出利用文章关键词揭示学科研究热点和研究趋势的方法,基于CNKI收录的17种CSSCI图书情报核心期刊为例进行实践,在内部测试中受到读者欢迎,获得较好的用户体验,达到预期目标,取得较好的应用效果。

[收稿日期]2012-11-05

标签:;  ;  ;  ;  ;  ;  ;  

标签云在学术资源披露中的研究与应用--以中国图书情报核心期刊数据库关键词为例_标签云论文
下载Doc文档

猜你喜欢