基于 Google 搜索路径的课程信息垂直搜索引擎

时间:2021-05-27 19:55:33 计算机网络毕业论文 我要投稿

基于 Google 搜索路径的课程信息垂直搜索引擎

毕业论文

【摘要】课程信息垂直搜索引擎,即在课程信息这个特定的领域里,让用户能搜索到最精准
最全面的结果。本文利用 Google 发现“学校-学院-教师-课程”路径,利用 HTMLParser 进行
基于 WEB 页面结构的课程元数据信息抽取。为了做到信息的最准确,为每个学校的每个学 院都编写了包装器 (解析页面并将得到的元数据内容的抽取器)。在精确的课程领域元数据 信息支持下,本搜索引擎支持简单检索、元数据高级检索、导航等综合的检索功能。 关键词:垂直搜索;搜索路径;元数据抽取;包装器
1.引言
随着因特网(Internet)和万维网(World Wide Web)技术的发展,全球共享学习资料和 知识使得传统意义上的教育向远程教育和自主学习转变,这就需要提供对学习资源的全球共 享和在线访问,需要为资源的拥有者提供学习资料发布和共享的支持,需要为学习者提供获 取知识的有效手段。
但是,由于因特网具有较大的自由性,教课老师可以按照任意形式在因特网上发布其与 课程有关的信息;没有固定、标准的信息发布格式,且信息发布主要注重视觉效果,缺少语 义信息;信息源变化频繁,信息源的和产生没有规律性。因此,如何在海量的、多变的、缺 乏固定格式的因特网学习资源中查找需要的课程信息,并将这些信息快速而准确地抽取出 来、进行有效的整合并提供高质量的服务,具有重大的科研价值和现实意义。
课程信息垂直搜索引擎,通过对课程网页的元数据信息进行自动提取和结构化的组织, 使用户通过关键字搜索能得到最全面最精准的.学习资源,为高校教师、学生等教育领域用户 提供更好的服务。
目前国外比较成功的垂直搜索引擎包括:专门提供法律信息的 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]等。
就本文而言,实体“课程”包括以下属性:课程名称、学院、学校、教师、教师主页 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”的结果。
“intitle:someKeyword”, 表示只搜索页面标题中含有“someKeyword”的页面。“key1 OR key2”
表示搜索包含关键字“key1”或者“key2”的结果。 
 
图 1 基于 Google API 的页面
Fig1 Page base on Google API

[NextPage]

2.1.2 搜索路径的发现步骤
通过对各个学啊院的观察,可以发现以下两个重要规律:1.集中含有课程信息的页面 URL 地址中含有关键词“course”或者“courses” 2.集中含有教师信息的页面 URL 地址中含有关键 词“faculty”。基于以上两个规律,按以下步骤来发现搜索路径,其中(3)(4)的搜索结果以 txt 形式保存于服务器上,为包装器提供路径。
(1) 大学主页:在 keyword 中键入关键词<大学名称>“cmu”,site 留空。第1个得到的 结果即为 http://www.cmu.edu/
(2) 学院地址:在 keyword 中键入关键词<学院名称+大学名称>“Civil and Environmental cmu”,site 留空。第1个结果即为 http://www.ce.cmu.edu/
(3) 课程信息页面:在 keyword 中键入关键词<inurl:course OR courses -filetype:pdf>,表 示搜索 URL 地址中含有 course 或者 courses 且文件类型不是 pdf 的结果,site 中键入<(2)中 获得的学院地址>“www.ce.cmu.edu”。得到 2007-course-list 和 2008-course-list 的 URL 地址。
(4) 教师信息页面:在 keyword 中键入关键词 <inurl:faculty -filetype:pdf>,表示搜索 URL 地址中含有 faculty,且文件类型不是 pdf 的结果,site 中键入<(2)中获得的学院地址> “www.ce.cmu.edu”。得到 falculty 的 URL 地址。
2.2 WEB 页面的分析和信息提取
基于 WEB 页面结构分析的包装器利用 Apache 的开源项目——HTMLParser,使用的版 本为 1.6。HTMLParser 是1个简单而功能强大的 Java HTML 解析器库,可以分析和处理 WEB 文档的内容,包括1些通用的服务器端标签。
2.2.1 基类:Extractor.java
基类主要包括3个函数:
(1) insert(),向 Lucene 的索引插入课程信息的函数
(2) count(),统计 Lucene 的索引收录的项(document)的数目,以便看出1次运行添加了 多少个课程
(3) getDescription(String url),通过分析指定 link 在 Schedule Of Classes 的 WEB 页面结
构来获得课程简介,算法伪代码见图 2:
(4)1. 根据 2.1 获得的 URL 地址初始化 HTMLParser 的分析器 parser,设置编码方式
2. 根据 WEB 页面结构选择适合的 Filter,比如本页面要提取课程简介,则该节点必定含有关键词
Description,因此选用 StringFilter coursefilter = new StringFilter("Description")
3. NodeList nodelist =过滤得到的所有 Description 节点
4. if (nodelist.size() == 0) {
//dexcription 不存在,相当于本页不存在,因为只要页面存在就必定含有 Description 结点
return null; //说明本 URL 地址的页面不存在}
5. else(dexcription 存在) {
重置 HTMLParser 的 parser,根据 WEB 页面结构选择更加精确的 filter
//通过对页面的源码分析发现课程简介的源码组织方式都为
//<P><font size="2" face="helvetica,arial">课程简介</font>
//因此设置用 AndFilter 将 filter 设置为必须同时满足3个条件
AndFilter andfilter =结点名为<font>+有父结点<p>+有 size=2 的属性
nodelist = 过滤得到的符合 andfilter 的所有节点
foreach(符合条件的节点)
if (长度(String.length)大于 50) {
//课程简介长度字数必大于 50,过滤字数小于 50 的节点
return des; }
图 2 getDexcription()函数伪代码
Fig2 pseudocode of function getDescription()
2.2.2 学院包装器类
CivilAndEnvironmental.java 继承(extends)于 Extractor.java 主要包括两个函数:
(1) getTeachers(),通过分析 WEB 页面结构获得教师信息,并存储于 teacherList,
伪代码见图 3:

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()函数伪代码
Fig3 pseudocode of function getTeachers()
(2) getCourses(String page, String suffix),通过分析 page 的页面结构获得课程名称以及
教授该门课程的教师的 First Name,然后在 teacherList 中查找教师的全名及教师主页。对每
1个课程,调用基类的 getDescription()获得课程简介。当课程的所有信息都取到值后,调用 基类的 insert()函数,将该课程插入到索引中去。算法伪代码见图 4:
2.2.3 索引维护类
抽取 WEB 页面数据并将写入 Lucene 的索引之后,为了提高精度和准度,编写了索引
维护类。 遍历索引 , DeleteRepeated 删除 name 和 url 两 个值都相 等的项;

[1]  

【基于 Google 搜索路径的课程信息垂直搜索引擎】相关文章:

基于Google 搜索路径的课程信息垂直搜索引擎09-01

垂直搜索引擎发展策略探讨10-17

如何用url路径优化来吸引搜索引擎?10-18

Molecular Cell:类似Google的蛋白功能搜索引擎研究进展11-18

提高网站在Google中的排名-面向搜索引擎的网站设计10-06

基于信息技术的工程数学网络课程建设的路径构论文06-15

WEB搜索引擎09-01

求职路径大搜索02-24

搜索引擎使用技巧,高级搜索方法10-18