论文首页哲学论文经济论文法学论文教育论文文学论文历史论文理学论文工学论文医学论文管理论文艺术论文 |
【摘要】课程信息垂直搜索引擎,即在课程信息这个特定的领域里,让用户能搜索到最精准
最全面的结果。本文利用 Google 发现“学校-学院-教师-课程”路径,利用 HTMLParser 进行
基于 WEB 页面结构的课程元数据信息抽取。为了做到信息的最准确,为每个学校的每个学 院都编写了包装器 (解析页面并将得到的元数据内容的抽取器)。在精确的课程领域元数据 信息支持下,本搜索引擎支持简单检索、元数据高级检索、导航等综合的检索功能。
关键词:垂直搜索;搜索路径;元数据抽取;包装器
Abstract
This paper proposes a Vertical Search Engine aiming to provide the most accurate and comprehensive results in the specific field of course information. After finding search paths by Google according to the
order "university - school - teacher - Course", we use HTMLParser to extract metadata information based on web page structures. Different wrappers (analyzing web pages and extracting metadata
information) for different schools are written for the sake of accuracy. By the support of precise
metadata information, this search engine supports integrated search functions, such as simple retrieval, metadata advanced search, and navigation.
Keywords: vertical search; searching path; metadata extraction; wrapper
1.引言
随着因特网(Internet)和万维网(World Wide Web)技术的发展,全球共享学习资料和 知识使得传统意义上的教育向远程教育和自主学习转变,这就需要提供对学习资源的全球共 享和在线访问,需要为资源的拥有者提供学习资料发布和共享的支持,需要为学习者提供获 取知识的有效手段。
但是,由于因特网具有较大的自由性,教课老师可以按照任意形式在因特网上发布其与 课程有关的信息;没有固定、标准的信息发布格式,且信息发布主要注重视觉效果,缺少语 义信息;信息源变化频繁,信息源的和产生没有规律性。因此,如何在海量的、多变的、缺 乏固定格式的因特网学习资源中查找需要的课程信息,并将这些信息快速而准确地抽取出 来、进行有效的整合并提供高质量的服务,具有重大的科研价值和现实意义。 (科教作文网http://zw.NSEaC.com编辑发布)
课程信息垂直搜索引擎,通过对课程网页的元数据信息进行自动提取和结构化的组织, 使用户通过关键字搜索能得到最全面最精准的学习资源,为高校教师、学生等教育领域用户 提供更好的服务。
目前国外比较成功的垂直搜索引擎包括:专门提供法律信息的 LawCrawler (www.lawcrawler.com);专门提供家居信息检索服务 BuildingOnline(www.buildingonline.com) 等等。国内比较出名并且得到用户认可的垂直搜索引擎包括:生活信息搜索引擎酷讯 (www.kooxoo.com),面向商业的天网商搜(sunsou.tianwang.com),电视精品节目搜索平台 TV 猫(www.tvmao.com)以及面向餐饮的咕嘟妈咪(www.gudumami.cn)等等。
构建垂直搜索引擎,“爬虫”(spiders)是不可缺少的部分。目前,为了获得特定领域内的 相关信息,有两种流行的方法来确保爬虫抓取内容的相关性和质量:1. 让爬虫只抓取特定 的网域的内容。例如,在丰田汽车公司的网站 www.toyota.com 中抓取到的信息必定是和汽 车相关的;2. 根据领域的特定需要来过滤抓取到的内容。例如,编写1个程序来过滤数量 关键字没有达到1定数量的网页。
目前有3种爬虫能分析基于内容/基于链接的网页,并把对这些网页的分析与图搜索算 法相结合。1. 广度优先搜索的爬虫(breadth-first search spider) [1],按照图遍历算法 BFS 来工 作。由于最重要的页面往往含有指向其他页面的大量链接,breadth-first search spider 在有效 组织的网站中有很高的抓取效率和准确率。2. 页面权重爬虫,结合了基于链接的分析与基
于遍历的算法,采用了 Junhoo Cho 和他的实验室成员发明的算法[2]。3. Hopfield Net Spider,
将 Web 看作为1个加权单层神经网络,然后利用包含激活扩散算法的爬虫来完成信息发现 和检索的工作[3,4]。
命名实体识别(Named Entity Recognition,NE)作为信息抽取中的子任务,其主要目的 是从文本中检测出专有名词并进行分类,如人名、地名、公司名、日期等。很多知名研究机 构都致力这方面的研究,多个国际会议也举办了命名实体识别的评测活动,如 MUC[5]、 CoNLL[6]、ACE[7]、SIGHAN[8]等。 内容来自www.nseac.com
就本文而言,实体“课程”包括以下属性:课程名称、学院、学校、教师、教师主页 URL, 课程链接以及课程简介。本文的 NE 识别方法为基于 WEB 页面结构分析的包装器。
本文介绍了构建课程信息垂直搜索引擎的基本理论和实用方法。先利用 Google 按照“学
校-学院-教师-课程”发现搜索路径,然后利用 HTMLParser 编写包装器进行基于 WEB 页面结 构分析的课程元数据信息抽取。
第 2 节介绍了本文的总体思路与核心算法,重点介绍了抓取网页的基类,并以卡耐基-
梅隆大学的生态环境研究学院为例,具体叙述了专门为该学院编写的包装器。
第 3 节评测了算法的查全率,查准率和 F-度量,分析了本文算法的性能。 第 4 节简单介绍了本文涉及的实现技术。
最后,对本文的性能和扩展做了小结,指出了针对本文改进和发展的方向。
2.1 利用 Google 发现搜索路径
课程的自然组织形式为从大学、学院、教师再到课程或者从大学、学院直接到课程。因 此,本文利用 Google AJAX Search API 以及 Google 的高级搜索语法按以下两种顺序之1来 发现课程信息:
(1) 学校→学院→教师→课程
(2) 学校→学院→课程
2.1.1 Google API 和高级搜索语法
如图 1 所示,为本文设计的基于 Google 的路径发现页面有两个输入框,keyword 和 site。
用户分别输入关键字后,利用 Google AJAX Search API ,将 site 的 值 提交给 GwebSearch.setSiteRestriction,将 keyword 的值提交给 GwebSearch.execute,得到 Google 返 回的搜索结果。由于本文只需要搜索路径,因此只显示和保存 URL 地址(result.unescapedUrl), 通过 XMLHTTPRequest 发送给服务器,在服务器端保存需要的 URL 地址。
Google 的 高级搜索语 法 [9]“inurl:someKeyword” , 表 示只搜 索 URL 地址中含 有
“someKeyword”的页面。“-filetype:someType ”,表示过滤文件类型为“someType”的结果。
(科教论文网 lw.nseaC.Com编辑发布)
(科教范文网http://fw.ΝsΕΑc.com编辑)
1. 初始化 teacherList,数据,类型为 ArrayList
2. 根据 WEB 页面结构选择 filter,教师名的结点形式为< strong >教师名< /strong >,因此选用含有 strong
属性的 TagNameFilter filter = new TagNameFilter("strong")
3. NodeList nodelist =过滤得到的所有<strong>节点
4. foreach(节点)
String temp=<strong>节点的 firstChild
if (temp 是教师名字,要过滤掉不以字母开头的节点) {
if(有教师主页信息){
teacher = temp; //提取教师姓名元数据
teacherHome = prefix + first name +后缀.htm; //提取教师主页地址元数据
} else(没有教师主页信息) {
教师主页地址默认为 prefix,不为 teacherHome 赋值
teacher =temp; //提取教师姓名元数据}
将提取到的该名教师的信息加入到 teacherList 中去
图 3 getTeachers()函数伪代码
1. 调用 setInfor()函数,设置了每1门课程的公共信息,本例为学校和学院
2. 初始化 HTMLParser 的分析器 parser,并设置编码方式
3. 分析 WEB 页面结构来选择合适的 filter,课程编号均含有 12-,因此选用
StringFilter courseFilter = new StringFilter("12-");
4. NodeList nodelist =过滤得到的所有课程编号节点;
5. foreach(课程编号节点)
提取元数据课程名称=课程编号节点+“ ”+课程名节点;
提取元数据教师 first name=课程编号节点之后的 nextSlibing 节点,即教师 first name 节点;
教师名=根据 first name 在 teacherList 中查找得到的教师全名;
教师主页=根据 first name 在 teacherList 中查找得到的教师主页;
提取元数据课程链接 = prefix+课程编号(不带“-”)+suffix;
提取元数据课程简介=getDescription(课程链接);
调用基类中的函数将抓取到的课程信息插入 Lucene 的索引
图 4 getCourses()函数伪代码 中国大学排名
Fig4 pseudocode of function getCourses()
3.算法性能
以卡耐基-梅隆大学的3个学院为例,来分析本系统算法的查全率
P(Precision),F 度量(F-measure)。
F 度量让用户在查全率和查准率上求得平衡。我们认为垂直搜索应该给用户提供准确的
信息,因此查准率的重要性大于查全率。据此,选择查准率和查全率的重要程度值 =0.5, 代表 P
[1]