基于 Google 搜索路徑的課程信息垂直搜索引擎
畢業(yè)論文【摘要】課程信息垂直搜索引擎,即在課程信息這個(gè)特定的領(lǐng)域里,讓用戶能搜索到最精準(zhǔn)
最全面的結(jié)果。本文利用 Google 發(fā)現(xiàn)“學(xué)校-學(xué)院-教師-課程”路徑,利用 HTMLParser 進(jìn)行
基于 WEB 頁(yè)面結(jié)構(gòu)的課程元數(shù)據(jù)信息抽取。為了做到信息的最準(zhǔn)確,為每個(gè)學(xué)校的每個(gè)學(xué) 院都編寫了包裝器 (解析頁(yè)面并將得到的元數(shù)據(jù)內(nèi)容的抽取器)。在精確的課程領(lǐng)域元數(shù)據(jù) 信息支持下,本搜索引擎支持簡(jiǎn)單檢索、元數(shù)據(jù)高級(jí)檢索、導(dǎo)航等綜合的檢索功能。 關(guān)鍵詞:垂直搜索;搜索路徑;元數(shù)據(jù)抽取;包裝器
1.引言
隨著因特網(wǎng)(Internet)和萬維網(wǎng)(World Wide Web)技術(shù)的發(fā)展,全球共享學(xué)習(xí)資料和 知識(shí)使得傳統(tǒng)意義上的教育向遠(yuǎn)程教育和自主學(xué)習(xí)轉(zhuǎn)變,這就需要提供對(duì)學(xué)習(xí)資源的全球共 享和在線訪問,需要為資源的擁有者提供學(xué)習(xí)資料發(fā)布和共享的支持,需要為學(xué)習(xí)者提供獲 取知識(shí)的有效手段。
但是,由于因特網(wǎng)具有較大的自由性,教課老師可以按照任意形式在因特網(wǎng)上發(fā)布其與 課程有關(guān)的信息;沒有固定、標(biāo)準(zhǔn)的信息發(fā)布格式,且信息發(fā)布主要注重視覺效果,缺少語(yǔ) 義信息;信息源變化頻繁,信息源的和產(chǎn)生沒有規(guī)律性。因此,如何在海量的、多變的、缺 乏固定格式的因特網(wǎng)學(xué)習(xí)資源中查找需要的課程信息,并將這些信息快速而準(zhǔn)確地抽取出 來、進(jìn)行有效的整合并提供高質(zhì)量的服務(wù),具有重大的科研價(jià)值和現(xiàn)實(shí)意義。
課程信息垂直搜索引擎,通過對(duì)課程網(wǎng)頁(yè)的元數(shù)據(jù)信息進(jìn)行自動(dòng)提取和結(jié)構(gòu)化的組織, 使用戶通過關(guān)鍵字搜索能得到最全面最精準(zhǔn)的.學(xué)習(xí)資源,為高校教師、學(xué)生等教育領(lǐng)域用戶 提供更好的服務(wù)。
目前國(guó)外比較成功的垂直搜索引擎包括:專門提供法律信息的 LawCrawler (www.lawcrawler.com);專門提供家居信息檢索服務(wù) BuildingOnline(www.buildingonline.com) 等等。國(guó)內(nèi)比較出名并且得到用戶認(rèn)可的垂直搜索引擎包括:生活信息搜索引擎酷訊 (www.kooxoo.com),面向商業(yè)的天網(wǎng)商搜(sunsou.tianwang.com),電視精品節(jié)目搜索平臺(tái) TV 貓(www.tvmao.com)以及面向餐飲的咕嘟媽咪(www.gudumami.cn)等等。
構(gòu)建垂直搜索引擎,“爬蟲”(spiders)是不可缺少的部分。目前,為了獲得特定領(lǐng)域內(nèi)的 相關(guān)信息,有兩種流行的方法來確保爬蟲抓取內(nèi)容的相關(guān)性和質(zhì)量:1. 讓爬蟲只抓取特定 的網(wǎng)域的內(nèi)容。例如,在豐田汽車公司的網(wǎng)站 www.toyota.com 中抓取到的信息必定是和汽 車相關(guān)的;2. 根據(jù)領(lǐng)域的特定需要來過濾抓取到的內(nèi)容。例如,編寫1個(gè)程序來過濾數(shù)量 關(guān)鍵字沒有達(dá)到1定數(shù)量的網(wǎng)頁(yè)。
目前有3種爬蟲能分析基于內(nèi)容/基于鏈接的網(wǎng)頁(yè),并把對(duì)這些網(wǎng)頁(yè)的分析與圖搜索算 法相結(jié)合。1. 廣度優(yōu)先搜索的爬蟲(breadth-first search spider) [1],按照?qǐng)D遍歷算法 BFS 來工 作。由于最重要的頁(yè)面往往含有指向其他頁(yè)面的大量鏈接,breadth-first search spider 在有效 組織的網(wǎng)站中有很高的抓取效率和準(zhǔn)確率。2. 頁(yè)面權(quán)重爬蟲,結(jié)合了基于鏈接的分析與基
于遍歷的算法,采用了 Junhoo Cho 和他的實(shí)驗(yàn)室成員發(fā)明的算法[2]。3. Hopfield Net Spider,
將 Web 看作為1個(gè)加權(quán)單層神經(jīng)網(wǎng)絡(luò),然后利用包含激活擴(kuò)散算法的爬蟲來完成信息發(fā)現(xiàn) 和檢索的工作[3,4]。
命名實(shí)體識(shí)別(Named Entity Recognition,NE)作為信息抽取中的子任務(wù),其主要目的 是從文本中檢測(cè)出專有名詞并進(jìn)行分類,如人名、地名、公司名、日期等。很多知名研究機(jī) 構(gòu)都致力這方面的研究,多個(gè)國(guó)際會(huì)議也舉辦了命名實(shí)體識(shí)別的評(píng)測(cè)活動(dòng),如 MUC[5]、 CoNLL[6]、ACE[7]、SIGHAN[8]等。
就本文而言,實(shí)體“課程”包括以下屬性:課程名稱、學(xué)院、學(xué)校、教師、教師主頁(yè) URL, 課程鏈接以及課程簡(jiǎn)介。本文的 NE 識(shí)別方法為基于 WEB 頁(yè)面結(jié)構(gòu)分析的包裝器。
本文介紹了構(gòu)建課程信息垂直搜索引擎的基本理論和實(shí)用方法。先利用 Google 按照“學(xué)
校-學(xué)院-教師-課程”發(fā)現(xiàn)搜索路徑,然后利用 HTMLParser 編寫包裝器進(jìn)行基于 WEB 頁(yè)面結(jié) 構(gòu)分析的課程元數(shù)據(jù)信息抽取。
第 2 節(jié)介紹了本文的總體思路與核心算法,重點(diǎn)介紹了抓取網(wǎng)頁(yè)的基類,并以卡耐基-
梅隆大學(xué)的生態(tài)環(huán)境研究學(xué)院為例,具體敘述了專門為該學(xué)院編寫的包裝器。
第 3 節(jié)評(píng)測(cè)了算法的查全率,查準(zhǔn)率和 F-度量,分析了本文算法的性能。 第 4 節(jié)簡(jiǎn)單介紹了本文涉及的實(shí)現(xiàn)技術(shù)。
最后,對(duì)本文的性能和擴(kuò)展做了小結(jié),指出了針對(duì)本文改進(jìn)和發(fā)展的方向。
2.1 利用 Google 發(fā)現(xiàn)搜索路徑
課程的自然組織形式為從大學(xué)、學(xué)院、教師再到課程或者從大學(xué)、學(xué)院直接到課程。因 此,本文利用 Google AJAX Search API 以及 Google 的高級(jí)搜索語(yǔ)法按以下兩種順序之1來 發(fā)現(xiàn)課程信息:
(1) 學(xué)!鷮W(xué)院→教師→課程
(2) 學(xué)!鷮W(xué)院→課程
2.1.1 Google API 和高級(jí)搜索語(yǔ)法
如圖 1 所示,為本文設(shè)計(jì)的基于 Google 的路徑發(fā)現(xiàn)頁(yè)面有兩個(gè)輸入框,keyword 和 site。
用戶分別輸入關(guān)鍵字后,利用 Google AJAX Search API ,將 site 的 值 提交給 GwebSearch.setSiteRestriction,將 keyword 的值提交給 GwebSearch.execute,得到 Google 返 回的搜索結(jié)果。由于本文只需要搜索路徑,因此只顯示和保存 URL 地址(result.unescapedUrl), 通過 XMLHTTPRequest 發(fā)送給服務(wù)器,在服務(wù)器端保存需要的 URL 地址。
Google 的 高級(jí)搜索語(yǔ) 法 [9]“inurl:someKeyword” , 表 示只搜 索 URL 地址中含 有
“someKeyword”的頁(yè)面!-filetype:someType ”,表示過濾文件類型為“someType”的結(jié)果。
“intitle:someKeyword”, 表示只搜索頁(yè)面標(biāo)題中含有“someKeyword”的頁(yè)面!発ey1 OR key2”
表示搜索包含關(guān)鍵字“key1”或者“key2”的結(jié)果。
圖 1 基于 Google API 的頁(yè)面
Fig1 Page base on Google API
[NextPage] 2.1.2 搜索路徑的發(fā)現(xiàn)步驟
通過對(duì)各個(gè)學(xué)啊院的觀察,可以發(fā)現(xiàn)以下兩個(gè)重要規(guī)律:1.集中含有課程信息的頁(yè)面 URL 地址中含有關(guān)鍵詞“course”或者“courses” 2.集中含有教師信息的頁(yè)面 URL 地址中含有關(guān)鍵 詞“faculty”;谝陨蟽蓚(gè)規(guī)律,按以下步驟來發(fā)現(xiàn)搜索路徑,其中(3)(4)的搜索結(jié)果以 txt 形式保存于服務(wù)器上,為包裝器提供路徑。
(1) 大學(xué)主頁(yè):在 keyword 中鍵入關(guān)鍵詞<大學(xué)名稱>“cmu”,site 留空。第1個(gè)得到的 結(jié)果即為 http://www.cmu.edu/
(2) 學(xué)院地址:在 keyword 中鍵入關(guān)鍵詞<學(xué)院名稱+大學(xué)名稱>“Civil and Environmental cmu”,site 留空。第1個(gè)結(jié)果即為 http://www.ce.cmu.edu/
(3) 課程信息頁(yè)面:在 keyword 中鍵入關(guān)鍵詞<inurl:course OR courses -filetype:pdf>,表 示搜索 URL 地址中含有 course 或者 courses 且文件類型不是 pdf 的結(jié)果,site 中鍵入<(2)中 獲得的學(xué)院地址>“www.ce.cmu.edu”。得到 2007-course-list 和 2008-course-list 的 URL 地址。
(4) 教師信息頁(yè)面:在 keyword 中鍵入關(guān)鍵詞 <inurl:faculty -filetype:pdf>,表示搜索 URL 地址中含有 faculty,且文件類型不是 pdf 的結(jié)果,site 中鍵入<(2)中獲得的學(xué)院地址> “www.ce.cmu.edu”。得到 falculty 的 URL 地址。
2.2 WEB 頁(yè)面的分析和信息提取
基于 WEB 頁(yè)面結(jié)構(gòu)分析的包裝器利用 Apache 的開源項(xiàng)目——HTMLParser,使用的版 本為 1.6。HTMLParser 是1個(gè)簡(jiǎn)單而功能強(qiáng)大的 Java HTML 解析器庫(kù),可以分析和處理 WEB 文檔的內(nèi)容,包括1些通用的服務(wù)器端標(biāo)簽。
2.2.1 基類:Extractor.java
基類主要包括3個(gè)函數(shù):
(1) insert(),向 Lucene 的索引插入課程信息的函數(shù)
(2) count(),統(tǒng)計(jì) Lucene 的索引收錄的項(xiàng)(document)的數(shù)目,以便看出1次運(yùn)行添加了 多少個(gè)課程
(3) getDescription(String url),通過分析指定 link 在 Schedule Of Classes 的 WEB 頁(yè)面結(jié)
構(gòu)來獲得課程簡(jiǎn)介,算法偽代碼見圖 2:
(4)1. 根據(jù) 2.1 獲得的 URL 地址初始化 HTMLParser 的分析器 parser,設(shè)置編碼方式
2. 根據(jù) WEB 頁(yè)面結(jié)構(gòu)選擇適合的 Filter,比如本頁(yè)面要提取課程簡(jiǎn)介,則該節(jié)點(diǎn)必定含有關(guān)鍵詞
Description,因此選用 StringFilter coursefilter = new StringFilter("Description")
3. NodeList nodelist =過濾得到的所有 Description 節(jié)點(diǎn)
4. if (nodelist.size() == 0) {
//dexcription 不存在,相當(dāng)于本頁(yè)不存在,因?yàn)橹灰?yè)面存在就必定含有 Description 結(jié)點(diǎn)
return null; //說明本 URL 地址的頁(yè)面不存在}
5. else(dexcription 存在) {
重置 HTMLParser 的 parser,根據(jù) WEB 頁(yè)面結(jié)構(gòu)選擇更加精確的 filter
//通過對(duì)頁(yè)面的源碼分析發(fā)現(xiàn)課程簡(jiǎn)介的源碼組織方式都為
//<P><font size="2" face="helvetica,arial">課程簡(jiǎn)介</font>
//因此設(shè)置用 AndFilter 將 filter 設(shè)置為必須同時(shí)滿足3個(gè)條件
AndFilter andfilter =結(jié)點(diǎn)名為<font>+有父結(jié)點(diǎn)<p>+有 size=2 的屬性
nodelist = 過濾得到的符合 andfilter 的所有節(jié)點(diǎn)
foreach(符合條件的節(jié)點(diǎn))
if (長(zhǎng)度(String.length)大于 50) {
//課程簡(jiǎn)介長(zhǎng)度字?jǐn)?shù)必大于 50,過濾字?jǐn)?shù)小于 50 的節(jié)點(diǎn)
return des; }
圖 2 getDexcription()函數(shù)偽代碼
Fig2 pseudocode of function getDescription()
2.2.2 學(xué)院包裝器類
CivilAndEnvironmental.java 繼承(extends)于 Extractor.java 主要包括兩個(gè)函數(shù):
(1) getTeachers(),通過分析 WEB 頁(yè)面結(jié)構(gòu)獲得教師信息,并存儲(chǔ)于 teacherList,
偽代碼見圖 3:
1. 初始化 teacherList,數(shù)據(jù),類型為 ArrayList
2. 根據(jù) WEB 頁(yè)面結(jié)構(gòu)選擇 filter,教師名的結(jié)點(diǎn)形式為< strong >教師名< /strong >,因此選用含有 strong
屬性的 TagNameFilter filter = new TagNameFilter("strong")
3. NodeList nodelist =過濾得到的所有<strong>節(jié)點(diǎn)
4. foreach(節(jié)點(diǎn))
String temp=<strong>節(jié)點(diǎn)的 firstChild
if (temp 是教師名字,要過濾掉不以字母開頭的節(jié)點(diǎn)) {
if(有教師主頁(yè)信息){
teacher = temp; //提取教師姓名元數(shù)據(jù)
teacherHome = prefix + first name +后綴.htm; //提取教師主頁(yè)地址元數(shù)據(jù)
} else(沒有教師主頁(yè)信息) {
教師主頁(yè)地址默認(rèn)為 prefix,不為 teacherHome 賦值
teacher =temp; //提取教師姓名元數(shù)據(jù)}
將提取到的該名教師的信息加入到 teacherList 中去
Fig3 pseudocode of function getTeachers()
(2) getCourses(String page, String suffix),通過分析 page 的頁(yè)面結(jié)構(gòu)獲得課程名稱以及
教授該門課程的教師的 First Name,然后在 teacherList 中查找教師的全名及教師主頁(yè)。對(duì)每
1個(gè)課程,調(diào)用基類的 getDescription()獲得課程簡(jiǎn)介。當(dāng)課程的所有信息都取到值后,調(diào)用 基類的 insert()函數(shù),將該課程插入到索引中去。算法偽代碼見圖 4:
2.2.3 索引維護(hù)類
抽取 WEB 頁(yè)面數(shù)據(jù)并將寫入 Lucene 的索引之后,為了提高精度和準(zhǔn)度,編寫了索引
維護(hù)類。 遍歷索引 , DeleteRepeated 刪除 name 和 url 兩 個(gè)值都相 等的項(xiàng);
[1]
【基于 Google 搜索路徑的課程信息垂直搜索引擎】相關(guān)文章:
垂直搜索引擎發(fā)展策略探討10-17
Molecular Cell:類似Google的蛋白功能搜索引擎研究進(jìn)展11-18
提高網(wǎng)站在Google中的排名-面向搜索引擎的網(wǎng)站設(shè)計(jì)10-06
基于信息技術(shù)的工程數(shù)學(xué)網(wǎng)絡(luò)課程建設(shè)的路徑構(gòu)論文06-15
WEB搜索引擎09-01
求職路徑大搜索02-24
搜索引擎使用技巧,高級(jí)搜索方法10-18