信息檢索與搜索引擎技術(shù)實(shí)驗(yàn)向量空間模型_第1頁
信息檢索與搜索引擎技術(shù)實(shí)驗(yàn)向量空間模型_第2頁
信息檢索與搜索引擎技術(shù)實(shí)驗(yàn)向量空間模型_第3頁
信息檢索與搜索引擎技術(shù)實(shí)驗(yàn)向量空間模型_第4頁
信息檢索與搜索引擎技術(shù)實(shí)驗(yàn)向量空間模型_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、昆明理工大學(xué)信息工程與自動化學(xué)院學(xué)生實(shí)驗(yàn)報(bào)告 (2014 2015學(xué)年第1學(xué)期) 課程名稱:信息檢索與搜索引擎技術(shù)開課實(shí)驗(yàn)室:信自樓445 2014 年12月23日 年級、專業(yè)、班 計(jì) 科 111 學(xué)號 2 姓名 成績 實(shí)驗(yàn)項(xiàng)目名稱 向量空間模型 指導(dǎo)教師 李衛(wèi)疆 教 該同學(xué)是否了解實(shí)驗(yàn)原理: A. 了解口 B.基本了解口 C.不了解口 該同學(xué)的實(shí)驗(yàn)?zāi)芰Γ?A.強(qiáng) 口 B.中等 C.差 帥 該冋學(xué)的實(shí)驗(yàn)是否達(dá)到要求:A.達(dá)到口 B.基本達(dá)到口 C.未達(dá)到口 評 實(shí)驗(yàn)報(bào)告是否規(guī)范: A.規(guī)范口 B.基本規(guī)范口 C.不規(guī)范口 實(shí)驗(yàn)過程是否詳細(xì)記錄: A.詳細(xì)口 B. 一般 C.沒有口 語 教師簽名

2、: 年 月 日 一、 上機(jī)目的及內(nèi)容: 給定文檔語料: d1:北京安立文高新技術(shù)公司 d2:新一代的網(wǎng)絡(luò)訪問技術(shù) d3:北京衛(wèi)星網(wǎng)絡(luò)有限公司 d4:是最先進(jìn)的總線技術(shù)。00 d5:北京升平衛(wèi)星技術(shù)有限公司的新技術(shù)有。0。 設(shè)計(jì)一個(gè)針對這些文檔的信息檢索系統(tǒng)。具體要求是: 1)給出系統(tǒng)的有效詞匯集合(說明取舍原因)。 2)寫出d1和d2在VSM中的表示(使用tf*idf ,寫出各項(xiàng)的數(shù)字表達(dá)式,具體數(shù)值不必實(shí) 際計(jì)算出來)。 3)畫出系統(tǒng)的倒排文件示意圖。 4)按照向量夾角的余弦計(jì)算公式,給出針對查詢“技術(shù)的公司”的前3個(gè)反饋結(jié)果 實(shí)驗(yàn)原理 給定文檔語料: ? d1:北京安立文高新技術(shù)公司 ?

3、d2:新一代的網(wǎng)絡(luò)訪問技術(shù) ? d3:北京衛(wèi)星網(wǎng)絡(luò)有限公司 ? d4:是最先進(jìn)的總線技術(shù)。 Term di d2 d3 d4 d5 Term出現(xiàn) 北京升平 衛(wèi)星技術(shù) 有限公司 的新技術(shù) 有 0 0 0 設(shè)計(jì) 一個(gè)針對 這些文檔的信息檢索系統(tǒng)。具體要求是: 1)給出系統(tǒng)的有效詞匯集合(說明取舍原因)。 北京、安、立、文、高新、技術(shù)、公司、新、網(wǎng)絡(luò)、訪問、衛(wèi)星、有限、先進(jìn)、總線、 升、平 的、是、最、有,這些詞作為停用詞不能加入系統(tǒng)的有效集合 一、代,去除后并不影響原來句子語義的表達(dá)也不能算作系統(tǒng)的有效集合。 2)寫出di和d2在VSM中的表示(使用tf*idf ,寫出各項(xiàng)的數(shù)字表達(dá)式,具體數(shù)值不

4、必實(shí)際 計(jì)算出來) 得到的矩陣: 次數(shù) TF x ID 0 1 0 1 3 安“ 女V 1 叫 0 0 0 0 1 立2/ ” 1 0 0 0 0 1 文 =1 1丨 0 0 0 0 1 說明: 咼新 1 0 0 0 0 1 技術(shù) h 1 0 0 1 3 TF:表 公司 1 0 1 0 1 3 新 0 1 0 0 1 2 示詞項(xiàng)在 網(wǎng)絡(luò) 0 1 1 0 0 2 訪問 0 1 0 0 0 1 該文檔或 衛(wèi)星 o 0 1 0 1 2 有限 0 0 1 0 1 2 者查詢詞 先進(jìn) o 0 0 1 0 1 總線 0 0 0 1 0 1 中出現(xiàn)的 升 0 0 0 0 1 1 平 0 0 0 0 1 1

5、頻度。即該 詞項(xiàng)出現(xiàn)次數(shù)除以該文檔的長度(所有詞的個(gè)數(shù)) :表示詞項(xiàng)k在D中的出現(xiàn)次數(shù)。 :表示該文檔的長度(所有詞的個(gè)數(shù)) IDF:表示詞項(xiàng)在文檔集合中的重要程度。一個(gè)詞項(xiàng)出現(xiàn)的文檔數(shù)越多,說明該詞項(xiàng)的 區(qū)分度越差,其在文檔集合中的重要性就越低。 N:表示集合中的文檔數(shù); 表示出現(xiàn)詞項(xiàng)k的文檔數(shù)。 di中各詞項(xiàng)的數(shù)字表達(dá)式 “北京”的 15 TF x IDF = y X log 彳 “高新”的 15 TF x DF = - x log - “技術(shù)”的 I5 TF x IDF = X log - “公司”的 15 TF x DF = - x log - “文” 女 15 TF x 1DF =

6、- x loy - d2中各詞項(xiàng)的數(shù)字表達(dá)式: “網(wǎng)絡(luò)”的 15 TF x IDF = - X log- “訪問”的 15 TF x DF y x log- “技術(shù)”的 I5 TF x【DF = - X log - 2 “新”的 3)畫出系統(tǒng)的倒排文件示意圖 4)按照向量夾角的余弦計(jì)算公式,給出針對查詢“技術(shù)的公司”的前3個(gè)反 饋結(jié)果。 該部分由代碼實(shí)現(xiàn)。 三、實(shí)驗(yàn)方法、步驟 1. 建立Java項(xiàng)目, 2. 建立DocumentStruct.java 類文件并編輯 3. 建立TextVector.java 類文件并編輯,如圖4-1,圖4-2所示 圖4-1 圖4-2 4. 建立TF.java類文

7、件并編輯,如圖圖4-7所示 圖4-4 5. 建立IDF.java類文件并編輯,如圖圖4-5所示 商# * 1 paclkg耆a cn.modal: 的 RF * ipwuMer * ionr- fyu. itKiiPF PvblLic 1DFO ( idf .0l d: friThi f epuraa dgcMMHtpackagp 4cm.Sal; tlfluttaar fHjbllc c.lass 4c- * paraB由圧一 publl亡 CACl SlBPiWldVHuMlr*事(1013.日E9L0; 的皿“ laHpVKtorlG.t tcffipVoctor20.9; farllr

8、it . Kvectorli fletVec to rtfeight L length. !*( iwividwnd *= v*ctorl, gitVw tOTVjteiflht ( ( i J mg rJ. atVactorWj.ght (| fi )- for(int 1.B0,; i*:vfrEtorl gtViKtDrWeight I) Iwigth i*)( tt-qs fciMlcrl += Miath-pmcCTOrl.geE.V.tarWexcflI (i t 2.0 t屮敘* MAthgeiVKierWiglit(!)ti.3-*. 圖4-6 7. 建立Ma in App.j

9、ava類文件并編輯,圖4-7所示 I? * 出:供廿鼻i主於I益茁真UMtli / i - quaryViKtor nawrrHtQurr(9iJ ( doVctcir nw T*KtVirtariTenCDuntfi.wcunm-rTbritCouHTfx). 6, docjrfltCcitJiinTrid 圖4-7 8.完成后的項(xiàng)目文件夾如圖4-8所示 型 ACModel .9 tv srt 1! acm.model Q Cat u lateSi mJ a va D Docu mentStrurt.java Q IDF.java Q MainApp.java TextVecto r J a

10、 va Q TFjava :乂用E珈庫J:應(yīng)Eg 圖4-8 9.運(yùn)行結(jié)果如圖4-9所示 packageacm.model; 1. DocumentStruct.java 代碼: public class DocumentStruct documentSimValue; publicDocumentStruct() this.documentID = 0; this.documentSimValue = 0; this.documentContent = None; this.documentName = None; publicDocumentStruct(int ID, double sim

11、, String name, String content) this.documentID = ID; this.documentSimValue = sim; this.documentName = name; this.documentContent = content; public String getDocumentContent() returndocumentContent; public void setDocumentContent(String documentContent) this.documentContent = documentContent; public

12、String getDocumentName() returndocumentName; public void setDocumentName(String documentName) this.documentName = documentName; public double getDocumentSimValue() returndocumentSimValue; public void setDocumentSimValue(double documentSimValue) this.documentSimValue = publicintgetDocumentID() return

13、documentID; public void setDocumentID(intdocumentID) this.documentID = documentID; publicDocumentStruct sortDocBySim(DocumentStruct docList) DocumentStruct temp; for(inti=O; ivdocList.length-1; i+) for(int j=i; jdocList.length-1; j+) if(docListi.getDocumentSimValue() docListj.getDocumentSimValue() )

14、 temp = docListi; docListi = docListj; docListj = temp; returndocList; private String documentName; private String documentContent; private double documentSimValue; privateintdocumentID; 2. TextVector.java 代碼: packageacm.model; public class TextVector publicTextVector(int dimension, int termCount, i

15、ntdocumentTermCount, intdocumentCount, int documentContainTermCount) vectorWeight = new doubledimension; for(inti=0; idimension; i+) vectorWeighti= caculateWeight(termCounti, documentTermCount, documentCount, documentContainTermCounti); public double caculateWeight(inttermCount, intdocumentTermCount

16、, intdocumentCount, intdocumentContainTermCount) TF termTF = new TF(termCount, documentTermCount); IDF termIDF = new IDF(documentCount, documentContainTermCount); termTF.caculateTF(); termlDF.caculatelDF(); return(termTF.getTf()*termlDF.getldf(); public double getVectorWeight() returnvectorWeight; p

17、ublic void setVectorWeight(double vectorWeight) this.vectorWeight = vectorWeight; private double vectorWeight; 3. TF.java 代碼 packageacm.model; public class TF public TF() tf = 0.0; termCount = 0; termInDocumentCount = 0; public TF(inttermCount, intdocumentTermCount) this.tf = 0.0; this.termCount = t

18、ermCount; this.termInDocumentCount = documentTermCount; public void caculateTF() if(termlnDocumentCount = 0) System.out.println(” 請先設(shè)置文檔 總數(shù)! ”); return; this.tf = (double)termCount / (double)termlnDocumentCount; public double getTf() returntf; publicintgetTermCount() returntermCount; public void set

19、TermCount(inttermCount) this.termCount = termCount; publicintgetTermInDocumentCount() returntermlnDocumentCount; public void setTermlnDocumentCount(inttermlnDocumentCo unt) this.termInDocumentCount = termInDocumentCount; private double tf; privateinttermCount; privateinttermlnDocumentCount; 4. IDF.j

20、ava 代碼 packageacm.model; public class IDF public IDF() idf = 0.0; documentContainTermCount = 0; documentCount = 0; public IDF(intdocumentCount, intdocumentContainTermCount) idf = 0.0; this.documentCount = documentCount; this.documentContainTermCount = documentContainTermCount; publicintgetDocumentCo

21、unt() returndocumentCount; public void setDocumentCount(intdocumentCount) this.documentCount = documentCount; publicintgetDocumentContainTermCount() returndocumentContainTermCount; public void setDocumentContainTermCount(intdocumentCo ntainTermCount) this.documentContainTermCount = documentContainTe

22、rmCount; public double getIdf() returnidf; public void caculateIDF() if(documentContainTermCount = 0) System.out.println(” 請?jiān)O(shè)置文檔的 長度(所有詞的個(gè)數(shù))!); return; this.idf = Math.log10(double)this.documentCount / (double)this.documentContainTermCount); private double idf; privateintdocumentCount; privateintdoc

23、umentContainTermCount; 5. CaculateSim.java 代碼 packageacm.model; public class CaculateSim publicCaculateSim(TextVector vector1, TextVector vector2) doublesimDividend=0.0, simDivider=0.0; double tempVector 仁 0.0, tempVector2=0.0; for(inti=0; ivector1.getVectorWeight().length; i+) simDividend += vector

24、1.getVectorWeight()i * vector2.getVectorWeight()i; for(inti=0; ivector1.getVectorWeight().length; i+) tempVectorl += Math.pow(vector1.getVectorWeight()i, 2.0); tempVector2 += Math.pow(vector2.getVectorWeight()i, 2.0); 新技術(shù)公司, 噺一 simDivider = Math.sqrt(tempVector1*tempVector2); this.sim = simDividend

25、/ simDivider; public double getSim() returnsim; private double sim; 6. MainApp.java 代碼 packageacm.model; public class MainApp public static void main(String args) intTermCount= 1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0, 1,0,0,0,0,0,1,0,1,0,1,1,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0, 1,0,0,0,0,1,1,1,0,0,1,1,0,0,1,1, 0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0; intdocumentTermCount = 7, 7, 5, 6, 11,3; intdocumentContainTermCount= 3,1,1,1,1,4,4,2,2,1,2,2,1,1,1,1; DocumentStruct docList = new Docume

溫馨提示

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

評論

0/150

提交評論