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

时间:2024-06-11 14:49:12 计算机应用毕业论文 我要投稿
  • 相关推荐

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

毕业论文

【摘要】课程信息垂直搜索引擎,即在课程信息这个特定的领域里,让用户能搜索到最精准
最全面的结果。本文利用 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)技术的发展,全球共享学习资料和 知识使得传统意义上的教育向远程教育和自主学习转变,这就需要提供对学习资源的全球共 享和在线访问,需要为资源的拥有者提供学习资料发布和共享的支持,需要为学习者提供获 取知识的有效手段。
但是,由于因特网具有较大的自由性,教课老师可以按照任意形式在因特网上发布其与 课程有关的信息;没有固定、标准的信息发布格式,且信息发布主要注重视觉效果,缺少语 义信息;信息源变化频繁,信息源的和产生没有规律性。因此,如何在海量的、多变的、缺 乏固定格式的因特网学习资源中查找需要的课程信息,并将这些信息快速而准确地抽取出 来、进行有效的整合并提供高质量的服务,具有重大的科研价值和现实意义。
课程信息垂直搜索引擎,通过对课程网页的元数据信息进行自动提取和结构化的组织, 使用户通过关键字搜索能得到最全面最精准的学习资源,为高校教师、学生等教育领域用户 提供更好的服务。
目前国外比较成功的垂直搜索引擎包括:专门提供法律信息的 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 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 两 个值都相 等的项;
SelectRealOnesForCMU 根据卡耐基梅隆大学课程编号的统1形式,用正则匹 配
[0-9]{2}-[0-9]{3},(即判断索引中的 name 域的值是否以“两个数字”+“-”+“3个数字”开头), 如果不是,说明不是卡耐基梅隆大学课程的索引项,删除该项。

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]  

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

垂直搜索引擎发展策略探讨03-21

Web搜索引擎的智能搜索设计与实现03-08

搜索引擎技术及趋势11-21

CPM搜索引擎的设计与实现03-08

搜索引擎排名与电子商务搜索营销分析03-21

企业搜索引擎营销分析03-24

学术搜索引擎的优化策略11-29

基于自编码神经网络建立的搜索信息模型03-11

谈搜索引擎优化的链接策略03-19

浅谈搜索引擎优化的链接策略03-22