兼职团队   招聘会   招聘公司信息   简历模板   经验分享  

全国 切换城市

您现在的位置: 首页 > 兼职资讯 > 兼职技巧

关于Google 搜索路径的课程信息垂直搜索引擎的浅析

作者:兼职工作网 时间:2020-07-02
Abstract This paper proposes a Vertical Search Engine aiming to provide the most accurate and comprehensive results in the specific field of course i
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. 广度优先搜索的爬虫(breadth-first search spider) [1],按照图遍历算法 BFS 来工 作。由于最重要的页面往往含有指向其他页面的大量链接,breadth-first search spider 在有效 组织的网站中有很高的抓取效率和准确率。2. 页面权重爬虫,结合了基于链接的分析与基 
于遍历的算法,采用了 Junhoo Cho 和他的实验室成员发明的算法[2]。3. Hopfield Net Spider, 
将 Web 看作为一个加权单层神经网络,然后利用包含激活扩散算法的爬虫来完成信息发现 和检索的工作[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) 学校→学院→教师→课程 
(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 留空。第一个得到的 结果即为 http://www.cmu.edu/ 
(2) 学院地址:在 keyword 中键入关键词<学院名称+大学名称>“Civil and Environmental cmu”,site 留空。第一个结果即为 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 是一个简单而功能强大的 Java HTML 解析器库,可以分析和处理 WEB 文档的内容,包括一些通用的服务器端标签。 
2.2.1 基类:Extractor.java 
基类主要包括三个函数: 
(1) insert(),向 Lucene 的索引插入课程信息的函数 
(2) count(),统计 Lucene 的索引收录的项(document)的数目,以便看出一次运行添加了 多少个课程 
(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 设置为必须同时满足三个条件 
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 中查找教师的全名及教师主页。对每 
一个课程,调用基类的 getDescription()获得课程简介。当课程的所有信息都取到值后,调用 基类的 insert()函数,将该课程插入到索引中去。算法伪代码见图 4: 
2.2.3 索引维护类 
抽取 WEB 页面数据并将写入 Lucene 的索引之后,为了提高精度和准度,编写了索引 
维护类。 遍历索引 , DeleteRepeated 删除 name 和 url 两 个值都相 等的项; 
SelectRealOnesForCMU 根据卡耐基梅隆大学课程编号的统一形式,用正则匹 配 
[0-9]{2}-[0-9]{3},(即判断索引中的 name 域的值是否以“两个数字”+“-”+“三个数字”开头), 如果不是,说明不是卡耐基梅隆大学课程的索引项,删除该项。
1.  调用 setInfor()函数,设置了每一门课程的公共信息,本例为学校和学院
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.算法性能 
以卡耐基-梅隆大学的三个学院为例,来分析本系统算法的查全率 
P(Precision),F 度量(F-measure)。 
F 度量让用户在查全率和查准率上求得平衡。我们认为垂直搜索应该给用户提供准确的 
信息,因此查准率的重要性大于查全率。据此,选择查准率和查全率的重要程度值 =0.5, 代表 P 的重要程度是 R 的 2 倍。 
图 5 为 F 度量柱状图的比较。表 1 为 R,P,F 具体的值。从图 5 可以看出,由于本文利用 HTMLParser 进行基于 WEB 页面结构的课程元数据信息抽取,查准率很高,均接近 100%, 查全率均在 95%以上。但是在“课程介绍”这个元数据项上, F 度量明显低于其他域。分析 其原因是课程介绍比其他项在 WEB 页面上的结构有更多变化。 
表 1 中,元数据项学校和学院是预设的,因此不作为性能分析的参考项。第一行数据为 
Carnegie Institute of Technology(CIT,样本 432),第二行数据为 Mellon College of Sciences 
(MCS,样本 600,未提供教师信息),第三行数据为 College of Fine Arts(CFA,样本 120)。 
表 1 查全率,查准率,F-度量的比较 
Tab.1 Comparison of Recall,Precision,F-measure 
 
4.系统实现 
本文的 Model-View-Controller 框架的实现基于 Struts1.1。Struts 是开发基于 MVC 模式 的应用架构的经典开源框架,是利用 Java Servlet 和 JSP 构建 Web 应用的一项非常有用的技 术。并且利用 AjaxTags(AjaxTags 项目是在现有的 Struts HTML 标记库的基础上,添加对 Ajax 支持)的 autocomplete 实现类似于 Google Sugget 的即时搜索功能;利用 dom4j 通过对 xml 文 件的读写实现实现“Latest Keywords”(最近搜索关键词)的功能。 
索引的建立和搜索基于 Apache 的开源项目——Lucene,使用的版本为 2.2。Lucene 是 一个开放源代码的全文检索引擎工具包,即一个全文检索引擎的架构,提供了完整的查询引 擎和索引引擎,部分文本分析引擎。本文查询的实现调用和扩展于 Lucene 的查询函数,如 IndexSearcher 的 TermQuery 词条搜索,QueryParser 字串搜索,BooleanQuery 布尔搜索等等。 分词基于 Lucene 的中文分词软件—JE 分词。本搜索引擎同时支持中文和英文搜索。 
 
图 5 各个学院的 F 度量 
Fig5 F-measure of different colleges 
5.总结和展望 
本文提出了利用 Google 按照“ 学校- 学院- 教师- 课程” 发现搜索路径,然后利用 HTMLParser 编写包装器进行基于 WEB 页面结构分析的课程元数据信息抽取,从而建立课 程信息垂直搜索引擎的实用方法。 
采用包装器的方法,对于不同的信息源都需要编写不同的包装器。作者将研究采用适用 性更好的 HMM、CRF 等统计模型的元数据算法。并且将利用 WEB2.0 的各项技术继续探索 实时垂直搜索的概念和实现,运用 Ajax 技术完善课程垂直搜索引擎。
Copyright 2005-2020 All Rights Reserved

赣ICP备19000462号-1 兼职工作网(www.jzjob.com)

QQ客服:6580-290 有事情请找我!