鄭立垠,郎穎瑩
隨著面向各個領(lǐng)域的專用構(gòu)件庫的數(shù)量增長以及構(gòu)件庫中構(gòu)件資源的日益擴充,構(gòu)件也隨技術(shù)和領(lǐng)域演化而更新,實踐中常常需要復(fù)用者同時從多個構(gòu)件庫中查詢檢索構(gòu)件,這就給復(fù)用者帶來許多困難,因此如何實現(xiàn)構(gòu)件的有效檢索,成為構(gòu)件庫和軟件復(fù)用研究的重點[1]。
當(dāng)前的構(gòu)件檢索大都采用關(guān)鍵字匹配,關(guān)鍵詞匹配檢索模式假設(shè),只要構(gòu)建描述文檔含有與查詢相同的術(shù)語時,它們就是相關(guān)的。這種相關(guān)性匹配認為關(guān)鍵詞之間是獨立的,大多數(shù)只停留在語法檢索的層次,是一種機械的基于表層的匹配,忽視了描述構(gòu)件與構(gòu)件之間的各種語義關(guān)系,而這正是影響到檢索的查全率和查準率的重要因素,查詢結(jié)果不可避免的存在與復(fù)用者需求無關(guān)的構(gòu)件,從而導(dǎo)致檢索的查準率和查全率等總體性能不佳。利用本體技術(shù)[2]正好可以解決這個缺陷,因為本體就是對類、類之間關(guān)系的定義來體現(xiàn)語義信息的。
本文引入了用戶相關(guān)反饋機制和領(lǐng)域本體的概念,就基于語義關(guān)系的二次檢索的模型和算法進行了研究,模型在構(gòu)件描述與查詢條件的關(guān)鍵詞首次匹配的基礎(chǔ)上,允許用戶在檢索結(jié)果集中選取他認為與要查詢的構(gòu)件相關(guān)聯(lián)的構(gòu)件,然后針對用戶反饋的結(jié)果修改查詢向量,并根據(jù)修改后的查詢向量進行進一步檢索。通過對多構(gòu)件庫相關(guān)領(lǐng)域建立統(tǒng)一的領(lǐng)域本體,進一步對構(gòu)件描述術(shù)語之間的語義關(guān)系和查詢關(guān)鍵詞之間的語義關(guān)系進行匹配,并在檢索過程中綜合運用聚類算法,實驗證明該模型為實現(xiàn)跨構(gòu)件庫檢索奠定了基礎(chǔ),具有較高的查詢性能,提高了檢索的查準率和查全率。
構(gòu)件的檢索是基于構(gòu)件的有效表示之上的,分類模式(Classification Mode)是構(gòu)件庫中構(gòu)件所擁有的一組共同分類特征的集合,不同構(gòu)件庫適應(yīng)不同領(lǐng)域特性。構(gòu)件的分類方法及相應(yīng)的庫結(jié)構(gòu)對構(gòu)件的檢索和理解有著極為深刻的影響。傳統(tǒng)的構(gòu)件檢索方法有很多,如果單純的使用一種檢索方法,都有不足之處,關(guān)鍵字檢索方法比較成熟、高效,同時在某種程度上反映了構(gòu)件的語法信息,適合于對構(gòu)件庫進行首次檢索。用關(guān)鍵字檢索方式對基于關(guān)鍵字分類法和刻面分類法的多個構(gòu)件庫進行檢索,在檢索過程中需要采用檢索條件轉(zhuǎn)換算法[3] [4]。本文在對常規(guī)檢索方法得到的結(jié)果基礎(chǔ)上再進行二次檢索,二次檢索是基于語義的,而不是基于語法的,從而能夠進一步捕捉用戶的查詢意圖,得到比較滿意的結(jié)果。
向量空間是由一些特征值向量集構(gòu)成的[5]。根據(jù)每個刻面值各建立刻面值向量空間,每個構(gòu)件有相應(yīng)的m×n維向量集,其中m為該刻面的向量維數(shù),n為刻面數(shù)。向量集中向量的維數(shù)取決于構(gòu)件的描述文檔中關(guān)鍵字的個數(shù)。向量值(權(quán)值)表示關(guān)鍵字在文檔中出現(xiàn)的頻率,若沒有出現(xiàn)則權(quán)值為零。向量集中每一構(gòu)件和用戶每一次查詢均可用等長的向量表示。例如:向量空間中有術(shù)語(即刻面描述模式中術(shù)語空間中的關(guān)鍵詞):windows 95、windows 98、windows ME、windows XP和windows 7。文檔D1,D2,D3,D4分別為:
本體(Ontology)是用于描述或表達某一領(lǐng)域知識的一組概念或術(shù)語,可以用來描述特定領(lǐng)域的知識,給出構(gòu)成相關(guān)領(lǐng)域詞匯的基本術(shù)語和關(guān)系,以及利用這些術(shù)語和關(guān)系構(gòu)成的規(guī)定這些詞匯外延的規(guī)則的定義,支持邏輯推理以及某一領(lǐng)域知識的共享、復(fù)用。利用領(lǐng)域本體模型為捕捉特定領(lǐng)域應(yīng)用知識提供有效的機制,這些知識能夠表達構(gòu)件檢索所需的更潛在的查詢信息。
要進行有效的語義檢索,前提條件是有構(gòu)造良好、信息充分的構(gòu)件本體和領(lǐng)域本體,以及對構(gòu)件進行詳盡的描述,因為語義推理時需要這些信息數(shù)據(jù)作為基礎(chǔ)。二次檢索在領(lǐng)域本體的支持下,針對用戶的反饋消息,由推理引擎對構(gòu)件的隱含語義進行推理,將隱含語義與顯式語義合成后再與檢索條件匹配,最后返回檢索結(jié)果集。這樣用戶在檢索的過程中通過領(lǐng)域本體可以發(fā)現(xiàn)用戶檢索的潛在的含義,以及可以幫助用戶發(fā)現(xiàn)用戶想不到的方面,從這方面來講,通過本體檢索提高了構(gòu)件檢索的查全率和查準率。
本文的檢索模型主要包括首次檢索、二次檢索及相關(guān)反饋功能模塊。多構(gòu)件庫檢索過程模型包括以下幾步:
(1)復(fù)用者分析實際的需求采用關(guān)鍵詞檢索提出查詢檢索條件,從多個構(gòu)件庫中首次檢索并返回首次檢索結(jié)果集合;
(2)復(fù)用者對首次檢索集合進行評估選擇根據(jù)需求提供反饋,再次填寫檢索信息,將用戶查詢中出現(xiàn)的關(guān)鍵字映射到領(lǐng)域本體,本體通過語義擴展用戶查詢,進一步選擇合適的術(shù)語用于查詢信息的表示,擴大搜索范圍;
(3)將用戶反饋的檢索條件提交到各個構(gòu)件庫中進行檢索,進行基于語義的二次檢索;
(4)對檢索出的構(gòu)件進行構(gòu)件相似度匹配算法,最終根據(jù)語義相似度大小返回檢索結(jié)果集。如圖1所示。
圖1 多構(gòu)件庫檢索過程模型
本文所設(shè)計的多庫檢索模型采用關(guān)鍵字檢索,檢索過程中采用文獻[3]和文獻[4]提出的檢索條件轉(zhuǎn)換算法,使關(guān)鍵字檢索條件能夠被不同分類方式的構(gòu)件庫所理解。
二次檢索即在結(jié)果中繼續(xù)檢索,主要作用是給用戶提示以便選擇更接近需求的構(gòu)件?;诜答佀惴ǖ亩螜z索模型按以下步驟實現(xiàn):
(1)用戶分析需求對首次檢索的結(jié)果進行評估選擇,形成查詢擴展條件的反饋信息;
(2)根據(jù)領(lǐng)域本體構(gòu)件庫的特點,對用戶再次輸入的查詢擴展語句與領(lǐng)域子本體中的概念進行相似度匹配;
(3)把前兩步匹配得到的關(guān)鍵字集合進行相關(guān)反饋算法;
(4)返回最終的檢索結(jié)果集。
圖2是基于用戶反饋的二次檢索模型。
圖2 多構(gòu)件庫二次檢索模型
用document1表示用戶首次反饋檢索擴展語句, P為首次檢索的構(gòu)件數(shù)目,Q表示顯示構(gòu)件的最大數(shù)目,Results1表示首次檢索結(jié)果集合。算法具體實現(xiàn)如下:
輸入:用戶反饋查詢擴展語句檢索向量集document1;
輸出:按語義相關(guān)度排序的檢索結(jié)果集合;
(1)對首次檢索結(jié)果集 Results1= {component1,component2,…,componentp|p為相關(guān)構(gòu)件個數(shù)}與目標(biāo)構(gòu)件組合在一起使用K-means聚類算法對這P+1個構(gòu)件進行聚類,得到n個類別,以及n個類別的凝聚點;
(2)在概念詞典的幫助下,將document1中的單詞映射為本體中的概念,生成檢索樹的OWL文件,即本體庫檢索條 件集合;
(3)根據(jù)查詢領(lǐng)域本體庫的結(jié)果找到與用戶檢索擴展語句中的關(guān)鍵詞有語義相關(guān)的關(guān)鍵詞集合key={key1,key2,……,keyk|k為關(guān)鍵字術(shù)語個數(shù)},再到各個構(gòu)件庫中匹配術(shù)語,得到相關(guān)聯(lián)的構(gòu)件集合Results2;
(4)將 Results2 與(1)得到的 n個凝聚點再進行聚類;
(5)輸出n個類別的凝聚點構(gòu)件及構(gòu)件的詳細信息,用戶對這n個進行評價,與目標(biāo)構(gòu)件相似的給予正向評價,不相似的給予負向評價;
(6)向用戶顯示被給予正向評價的構(gòu)件的所屬類別中的其他所有構(gòu)件。如果剩余構(gòu)件數(shù)量大于Q,則只顯示其中相似度值大的Q個;
(7)如果用戶不滿意檢索結(jié)果集,則轉(zhuǎn)到(8)進行后續(xù)檢索;如果用戶不再提供反饋信息,轉(zhuǎn)至(9);
(8)將目標(biāo)構(gòu)件與得到正向評價構(gòu)件組合在一起,調(diào)整向量權(quán)值,并轉(zhuǎn)到第(2)步,利用調(diào)整后的查詢向量權(quán)值繼續(xù)進行構(gòu)件匹配計算;
(9)計算檢索出的構(gòu)件與目標(biāo)構(gòu)件的相似度大小,并根據(jù)此相似度值大小對構(gòu)件庫中的構(gòu)件進行排序;
(10)輸出檢索結(jié)果集合。
這里的計算構(gòu)件相似度采用文獻[6]提出的語義相似度計算方法。
我們設(shè)計了一個構(gòu)件庫群的聯(lián)合檢索的原型系統(tǒng),針對采用關(guān)鍵詞、刻面等不同的分類方法的多個構(gòu)件庫,加入了領(lǐng)域本體,采用了相關(guān)反饋模型,實現(xiàn)了基于聚類的相關(guān)反饋算法的二次檢索。
下面以銀行業(yè)務(wù)領(lǐng)域本體為例,實現(xiàn)該檢索。銀行業(yè)務(wù)領(lǐng)域的軟構(gòu)件按其功能可分為資產(chǎn)業(yè)務(wù)、負債業(yè)務(wù)、中間業(yè)務(wù)和表外業(yè)務(wù)?;谏鲜龇诸?,圖3刻畫了部分銀行業(yè)務(wù)領(lǐng)域本體。
圖3 銀行業(yè)務(wù)領(lǐng)域本體
圖3中,實線箭頭表示子類關(guān)系(kind of),比如存款類業(yè)務(wù)是負債業(yè)務(wù)的一個子類,而虛線箭頭表示實例關(guān)系(instance of),比如個人貸款是貸款類業(yè)務(wù)的一個實例。
本文以查詢個人借貸軟構(gòu)件為例說明構(gòu)件檢索過程。用戶首先在軟構(gòu)件檢索系統(tǒng)客戶端的查詢欄中輸入“個人借貸”,提交給系統(tǒng),根據(jù)檢索條件轉(zhuǎn)換算法把關(guān)鍵字轉(zhuǎn)化為各個構(gòu)件庫所能識別的檢索語言進行檢索。由于各個構(gòu)件庫中的術(shù)語沒有完全與之匹配的術(shù)語,因此根據(jù)關(guān)鍵詞匹配原則,返回“貸款類業(yè)務(wù)”、“商業(yè)貸款”、“個人貸款”等與“個人借貸”中匹配一個或幾個關(guān)鍵字的構(gòu)件集合。用戶根據(jù)返回的檢索結(jié)果集,分析具體需求,完善檢索條件,生成新的查詢向量權(quán)值,在概念詞典的幫助下,將用戶反饋的檢索擴展條件映射為本體中的概念,檢查本體庫中的術(shù)語集合,將“現(xiàn)金類業(yè)務(wù)”“投資類業(yè)務(wù)”“貸款類業(yè)務(wù)”“存款類業(yè)務(wù)”等與首次檢索出的構(gòu)件在語義上相關(guān)聯(lián)的構(gòu)件檢索出來提交給用戶,并請求用戶選擇一個與之匹配的,則用戶會選擇“貸款類”,那么在“詳細信息”欄里將會進一步顯示相應(yīng)的“貸款類業(yè)務(wù)”類型,如“商業(yè)貸款”“個人貸款”等詳細信息,此時用戶選擇“個人貸款”,再到各個構(gòu)件庫中檢索有“個人貸款”功能的構(gòu)件,返回用戶相應(yīng)有“個人貸款”功能的所有構(gòu)件。通過與軟構(gòu)件描述庫進行交互,將進一步獲取構(gòu)件的屬性、下載地址以及與之相關(guān)的軟構(gòu)件列表。
實驗設(shè)計如下:在3個構(gòu)件庫中分別存儲了100個相關(guān)構(gòu)件的描述信息,然后模擬用戶對構(gòu)件進行檢索。用戶包括計算機專業(yè)和非計算機專業(yè)人士。以檢索“個人貸款”和“利率互換”這兩項為例來比較在使用相關(guān)反饋二次檢索情況下檢索前后查全率與查準率,滿足“個人貸款”的相關(guān)構(gòu)件共有200個,滿足“利率互換”的相關(guān)構(gòu)件共有150個。采用相關(guān)反饋算法后,每10次統(tǒng)計一次,檢索時反饋次數(shù)一般在4次左右效果最好。如表1是使用領(lǐng)域本體和相關(guān)反饋的二次檢索前后的查準率和查全率比較圖。
表1 構(gòu)件檢索結(jié)果比較
由表1可知,在多庫檢索過程中,引入領(lǐng)域本體并基于反饋的二次檢索提高了檢索的查準率和查準率,但是,由于要不斷的進行用戶反饋交互,增加了時間的開銷。以上測試驗證了本檢索方法的可行性和有效性。
本文針對多個構(gòu)件庫構(gòu)件檢索進行研究,借鑒數(shù)據(jù)庫二次檢索的思想,結(jié)合構(gòu)件庫領(lǐng)域本體能更好揭示構(gòu)件之間語義關(guān)系的功能,提出了一種聚類反饋算法,給出了具體步驟,該算法在一定程度上解決了跨構(gòu)件庫檢索查準率和查全率低的問題,該算法在某一條件下聚類并進行反饋,即減少聚類的空間復(fù)雜度,并且能進一步捕捉用戶的實際查詢意圖,有助于實現(xiàn)多個構(gòu)件庫構(gòu)件的有效匹配。但是此方法會增加檢索過程中的工作時間負荷,所以在以后的工作中我們還要繼續(xù)研究以減少構(gòu)件檢索的工作負荷,盡可能改進算法性能。
[1] 潘穎,趙俊峰,謝冰.構(gòu)件庫技術(shù)的研究與發(fā)展[J] .計算機科學(xué). 2003,30(5) , 90-93.
[2] SINDNEY C. BAILIN. Software Reuse as Ontology Negotiation[C] [S.l.] [s.n.] Proceedings of the 8th International Conference on Software Reuse(ICSR 2004)
[3] 盛義芳,張維石,張秀國,史金余.面向多構(gòu)件庫的構(gòu)件檢索條件轉(zhuǎn)換機制研究[J] . 學(xué)術(shù)探討, 2006.
[4] 鄭立垠,郎穎瑩,安璐.基于檢索條件轉(zhuǎn)換算法的多構(gòu)件庫檢索[J] .計算機系統(tǒng)應(yīng)用.2010,19(1):72-75.
[5] 劉大昕,趙磊,王卓.一種基于刻面分類和聚類分析的構(gòu)件分類檢索方法[J] ,計算機應(yīng)用2004-S1-034.
[6] 牛志一, 楊俊強, 楊寧. 構(gòu)件庫語義描述和檢索技術(shù)研究[J] ,計算機應(yīng)用, 2010,30(1):18-21.