基于 Google 搜索路徑的課程信息垂直搜索引擎_第1頁
基于 Google 搜索路徑的課程信息垂直搜索引擎_第2頁
基于 Google 搜索路徑的課程信息垂直搜索引擎_第3頁
免費預覽已結束,剩余9頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

基于Google搜索路徑的課程信息垂直搜索引擎

【摘要】課程信息垂直搜索引擎,即在課程信息這個特定的領域里,讓用戶能搜索到最精準最全面的結果。本文利用Google發現“學校-學院-教師-課程”路徑,利用HTMLParser進行基于WEB頁面結構的課程元數據信息抽取。為了做到信息的最準確,為每個學校的每個學院都編寫了包裝器(解析頁面并將得到的元數據內容的抽取器)。在精確的課程領域元數據信息支持下,本搜索引擎支持簡單檢索、元數據高級檢索、導航等綜合的檢索功能。關鍵詞:垂直搜索;搜索路徑;元數據抽取;包裝器AbstractThispaperproposesaVerticalSearchEngineaimingtoprovidethemostaccurateandcomprehensiveresultsinthespecificfieldofcourseinformation.AfterfindingsearchpathsbyGoogleaccordingtotheorder"university-school-teacher-Course",weuseHTMLParsertoextractmetadatainformationbasedonwebpagestructures.Differentwrappers(analyzingwebpagesandextractingmetadatainformation)fordifferentschoolsarewrittenforthesakeofaccuracy.Bythesupportofprecisemetadatainformation,thissearchenginesupportsintegratedsearchfunctions,suchassimpleretrieval,metadataadvancedsearch,andnavigation.Keywords:verticalsearch;searchingpath;metadataextraction;wrapper1.引言隨著因特網(Internet)和萬維網(WorldWideWeb)技術的發展,全球共享學習資料和知識使得傳統意義上的教育向遠程教育和自主學習轉變,這就需要提供對學習資源的全球共享和在線訪問,需要為資源的擁有者提供學習資料發布和共享的支持,需要為學習者提供獲取知識的有效手段。但是,由于因特網具有較大的自由性,教課老師可以按照任意形式在因特網上發布其與課程有關的信息;沒有固定、標準的信息發布格式,且信息發布主要注重視覺效果,缺少語義信息;信息源變化頻繁,信息源的和產生沒有規律性。因此,如何在海量的、多變的、缺乏固定格式的因特網學習資源中查找需要的課程信息,并將這些信息快速而準確地抽取出來、進行有效的整合并提供高質量的服務,具有重大的科研價值和現實意義。課程信息垂直搜索引擎,通過對課程網頁的元數據信息進行自動提取和結構化的組織,使用戶通過關鍵字搜索能得到最全面最精準的學習資源,為高校教師、學生等教育領域用戶提供更好的服務。目前國外比較成功的垂直搜索引擎包括:專門提供法律信息的LawCrawler();專門提供家居信息檢索服務BuildingOnline()等等。國內比較出名并且得到用戶認可的垂直搜索引擎包括:生活信息搜索引擎酷訊(),面向商業的天網商搜(),電視精品節目搜索平臺TV貓()以及面向餐飲的咕嘟媽咪()等等。構建垂直搜索引擎,“爬蟲”(spiders)是不可缺少的部分。目前,為了獲得特定領域內的相關信息,有兩種流行的方法來確保爬蟲抓取內容的相關性和質量:1.讓爬蟲只抓取特定的網域的內容。例如,在豐田汽車公司的網站中抓取到的信息必定是和汽車相關的;2.根據領域的特定需要來過濾抓取到的內容。例如,編寫一個程序來過濾數量關鍵字沒有達到一定數量的網頁。目前有三種爬蟲能分析基于內容/基于鏈接的網頁,并把對這些網頁的分析與圖搜索算法相結合。1.廣度優先搜索的爬蟲(breadth-firstsearchspider)[1],按照圖遍歷算法BFS來工作。由于最重要的頁面往往含有指向其他頁面的大量鏈接,breadth-firstsearchspider在有效組織的網站中有很高的抓取效率和準確率。2.頁面權重爬蟲,結合了基于鏈接的分析與基于遍歷的算法,采用了JunhooCho和他的實驗室成員發明的算法[2]。3.HopfieldNetSpider,將Web看作為一個加權單層神經網絡,然后利用包含激活擴散算法的爬蟲來完成信息發現和檢索的工作[3,4]。命名實體識別(NamedEntityRecognition,NE)作為信息抽取中的子任務,其主要目的是從文本中檢測出專有名詞并進行分類,如人名、地名、公司名、日期等。很多知名研究機構都致力這方面的研究,多個國際會議也舉辦了命名實體識別的評測活動,如MUC[5]、CoNLL[6]、ACE[7]、SIGHAN[8]等。就本文而言,實體“課程”包括以下屬性:課程名稱、學院、學校、教師、教師主頁URL,課程鏈接以及課程簡介。本文的NE識別方法為基于WEB頁面結構分析的包裝器。本文介紹了構建課程信息垂直搜索引擎的基本理論和實用方法。先利用Google按照“學校-學院-教師-課程”發現搜索路徑,然后利用HTMLParser編寫包裝器進行基于WEB頁面結構分析的課程元數據信息抽取。第2節介紹了本文的總體思路與核心算法,重點介紹了抓取網頁的基類,并以卡耐基-梅隆大學的生態環境研究學院為例,具體敘述了專門為該學院編寫的包裝器。第3節評測了算法的查全率,查準率和F-度量,分析了本文算法的性能。第4節簡單介紹了本文涉及的實現技術。最后,對本文的性能和擴展做了小結,指出了針對本文改進和發展的方向。2.1利用Google發現搜索路徑課程的自然組織形式為從大學、學院、教師再到課程或者從大學、學院直接到課程。因此,本文利用GoogleAJAXSearchAPI以及Google的高級搜索語法按以下兩種順序之一來發現課程信息:(1)學校→學院→教師→課程(2)學校→學院→課程2.1.1GoogleAPI和高級搜索語法如圖1所示,為本文設計的基于Google的路徑發現頁面有兩個輸入框,keyword和site。用戶分別輸入關鍵字后,利用GoogleAJAXSearchAPI,將site的值提交給GwebSearch.setSiteRestriction,將keyword的值提交給GwebSearch.execute,得到Google返回的搜索結果。由于本文只需要搜索路徑,因此只顯示和保存URL地址(result.unescapedUrl),通過XMLHTTPRequest發送給服務器,在服務器端保存需要的URL地址。Google的高級搜索語法[9]“inurl:someKeyword”,表示只搜索URL地址中含有“someKeyword”的頁面。“-filetype:someType”,表示過濾文件類型為“someType”的結果。“intitle:someKeyword”,表示只搜索頁面標題中含有“someKeyword”的頁面。“key1ORkey2”表示搜索包含關鍵字“key1”或者“key2”的結果。圖1基于GoogleAPI的頁面Fig1PagebaseonGoogleAPI2.1.2搜索路徑的發現步驟通過對各個學啊院的觀察,可以發現以下兩個重要規律:1.集中含有課程信息的頁面URL地址中含有關鍵詞“course”或者“courses”2.集中含有教師信息的頁面URL地址中含有關鍵詞“faculty”。基于以上兩個規律,按以下步驟來發現搜索路徑,其中(3)(4)的搜索結果以txt形式保存于服務器上,為包裝器提供路徑。(1)大學主頁:在keyword中鍵入關鍵詞<大學名稱>“cmu”,site留空。第一個得到的結果即為/(2)學院地址:在keyword中鍵入關鍵詞<學院名稱+大學名稱>“CivilandEnvironmentalcmu”,site留空。第一個結果即為/(3)課程信息頁面:在keyword中鍵入關鍵詞<inurl:courseORcourses-filetype:pdf>,表示搜索URL地址中含有course或者courses且文件類型不是pdf的結果,site中鍵入<(2)中獲得的學院地址>“”。得到2007-course-list和2008-course-list的URL地址。(4)教師信息頁面:在keyword中鍵入關鍵詞<inurl:faculty-filetype:pdf>,表示搜索URL地址中含有faculty,且文件類型不是pdf的結果,site中鍵入<(2)中獲得的學院地址>“”。得到falculty的URL地址。2.2WEB頁面的分析和信息提取基于WEB頁面結構分析的包裝器利用Apache的開源項目——HTMLParser,使用的版本為1.6。HTMLParser是一個簡單而功能強大的JavaHTML解析器庫,可以分析和處理WEB文檔的內容,包括一些通用的服務器端標簽。2.2.1基類:Extractor.java基類主要包括三個函數:(1)insert(),向Lucene的索引插入課程信息的函數(2)count(),統計Lucene的索引收錄的項(document)的數目,以便看出一次運行添加了多少個課程(3)getDescription(Stringurl),通過分析指定link在ScheduleOfClasses的WEB頁面結構來獲得課程簡介,算法偽代碼見圖2:(4)1.根據2.1獲得的URL地址初始化HTMLParser的分析器parser,設置編碼方式2.根據WEB頁面結構選擇適合的Filter,比如本頁面要提取課程簡介,則該節點必定含有關鍵詞Description,因此選用StringFiltercoursefilter=newStringFilter("Description")3.NodeListnodelist=過濾得到的所有Description節點4.if(nodelist.size()==0){//dexcription不存在,相當于本頁不存在,因為只要頁面存在就必定含有Description結點returnnull;//說明本URL地址的頁面不存在}5.else(dexcription存在){重置HTMLParser的parser,根據WEB頁面結構選擇更加精確的filter//通過對頁面的源碼分析發現課程簡介的源碼組織方式都為//<P><fontsize="2"face="helvetica,arial">課程簡介</font>//因此設置用AndFilter將filter設置為必須同時滿足三個條件AndFilterandfilter=結點名為<font>+有父結點<p>+有size=2的屬性nodelist=過濾得到的符合andfilter的所有節點foreach(符合條件的節點)if(長度(String.length)大于50){//課程簡介長度字數必大于50,過濾字數小于50的節點returndes;}圖2getDexcription()函數偽代碼Fig2pseudocodeoffunctiongetDescription()1.初始化teacherList,數據,類型為ArrayList2.根據WEB頁面結構選擇filter,教師名的結點形式為<strong>教師名</strong>,因此選用含有strong屬性的TagNameFilterfilter=newTagNameFilter("strong")3.NodeListnodelist=過濾得到的所有<strong>節點4.foreach(節點)Stringtemp=<strong>節點的firstChildif(temp是教師名字,要過濾掉不以字母開頭的節點){if(有教師主頁信息){teacher=temp;//提取教師姓名元數據teacherHome=prefix+firstname+后綴.htm;//提取教師主頁地址元數據}else(沒有教師主頁信息){教師主頁地址默認為prefix,不為teacherHome賦值teacher=temp;//提取教師姓名元數據}將提取到的該名教師的信息加入到teacherList中去圖3getTeachers()函數偽代碼Fig3pseudocodeoffunctiongetTeachers()(2)getCourses(Stringpage,Stringsuffix),通過分析page的頁面結構獲得課程名稱以及教授該門課程的教師的FirstName,然后在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-,因此選用StringFiltercourseFilter=newStringFilter("12-");4.NodeListnodelist=過濾得到的所有課程編號節點;5.foreach(課程編號節點)提取元數據課程名稱=課程編號節點+“”+課程名節點;提取元數據教師firstname=課程編號節點之后的nextSlibing節點,即教師firstname節點;教師名=根據firstname在teacherList中查找得到的教師全名;教師主頁=根據firstname在teacherList中查找得到的教師主頁;提取元數據課程鏈接=prefix+課程編號(不帶“-”)+suffix;提取元數據課程簡介=getDescription(課程鏈接);調用基類中的函數將抓取到的課程信息插入Lucene的索引圖4getCourses()函數偽代碼Fig4pseudocodeoffunctiongetCourses()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中,元數據項學校和學院是預設的,因此不作為性能分析的參考項。第一行數據為CarnegieInstituteofTechnology(CIT,樣本432),第二行數據為MellonCollegeofSciences(MCS,樣本600,未提供教師信息),第三行數據為CollegeofFineArts(CFA,樣本120)。表1查全率,查準率,F-度量的比較Tab.1ComparisonofRecall,Precision,F-measure4.系統實現本文的Model-View-Controller框架的實現基于Struts1.1。Struts是開發基于MVC模式的應用架構的經典開源框架,是利用JavaServlet和JSP構建Web應用的一項非常有用的技術。并且利用AjaxTags(AjaxTags項目是在現有的StrutsHTML標記庫的基礎上,添加對Ajax支持)的autocomplete實現類似于GoogleSugget的即時搜索功能;利用dom4j通過對xml文件的讀寫實現實現“LatestKeywords”(最近搜索關鍵詞)的功能。索引的建立和搜索基于Apache的開源項目——Lucene,使用的版本為2.2。Lucene是一個開放源代碼的全文檢索引擎工具包,即一個全文檢索引擎的架構,提供了完整的查詢引擎和索引引擎,部分文本分析引擎。本文查詢的實現調用和擴展于Lucene的查詢函數,如IndexSearcher的TermQuery詞條搜索,QueryParser字串搜索,BooleanQuery布爾搜索等等。分詞基于Lucene的中文分詞軟件—JE分詞。本搜索引擎同時支持中文和英文搜索。圖5各個學院的F度量Fig5F-measureofdifferentcolleges5.總結和展望本文提出了利用Google按照“學校-學院-教師-課程”發現搜索路徑,然后利用HTMLParser編寫包裝器進行基于WEB頁面結構分析的課程元數據信息抽取,從而建立課程信息垂直搜索引擎的實用方法。采用包裝器的方法,對于不同的信息源都需要編寫不同的包裝器。作者將研究采用適用性更好的HMM、CRF等統計模型的元數據算法。并且將利用WEB2.0的各項技術繼續探索實時垂直搜索的概念和實現,運用Ajax技術完善課程垂直搜索引擎。參考文獻M.ChauandH.Chen.PersonalizedandFocusedWebSpiders.In:Zhong,N.,Liu,J.,YaoY.(eds):WebIntelligence.Springer-Verlag(2003)197-217.M.NajorkandJ.L.Wiener,“Breadth-FirstSearchCrawlingYieldsHigh-QualityPages,”Proc.10thWWWConf.,2001;/cdrom/papers/208/.J.Cho,H.Garcia-Molina,andL.Page,“EfficientCrawlingthroughURLOrdering,”Proc.7thWWWConf.,1998;.au/programme/fullpapers/1919/c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論