加入收藏
设为首页
关于我们
您现在的位置: 101美术高考网 >> 论文中心 >> 计算机 >> 计算机应用 >> 文章正文
  基于 Google 搜索路径的课程信息垂直搜索引擎         ★★★★
基于 Google 搜索路径的课程信息垂直搜索引擎
作者:101ms.com 文章来源:中国论文下载中心 点击数: 更新时间:2008-7-22 9:16:04

师信息页面:在 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 字串搜索

上一页  [1] [2] [3] 下一页


文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    专 题 栏 目
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    基于 B/S 架构的中小型电
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 |
    Copyright © 2006 All Rights Reserved 中国美术高考网(国内最专业的美术高考门户网) 版权所有 未经允许 不得转载!
    网站咨询/管理员:101msw#163.com, 网站编辑/作品投稿/简章发布:101msw#163.com
    为防止垃圾邮件,请将"#"改为"@",编辑QQ:362058177 联系电话:13705952125