基于圖模型的軟件項(xiàng)目語(yǔ)義信息表示及檢索方法
【專(zhuān)利摘要】本發(fā)明涉及一種軟件項(xiàng)目語(yǔ)義信息的表示及檢索方法,尤其是涉及一種采用圖模型表示和檢索軟件項(xiàng)目語(yǔ)義信息的方法。包括:抽取軟件項(xiàng)目信息的步驟:從軟件項(xiàng)目資源中抽取結(jié)構(gòu)化信息本體和無(wú)結(jié)構(gòu)信息本體;存儲(chǔ)結(jié)構(gòu)化信息本體的步驟:將結(jié)構(gòu)化信息本體以圖模型庫(kù)形式進(jìn)行表示和存儲(chǔ);存儲(chǔ)無(wú)結(jié)構(gòu)信息的步驟:以文件形式存儲(chǔ)無(wú)結(jié)構(gòu)信息本體,并建立結(jié)化信息本體和無(wú)結(jié)構(gòu)信息本體之間的關(guān)聯(lián)關(guān)系。因此,本發(fā)明具有如下優(yōu)點(diǎn):1.分別采用圖模型和文本索引技術(shù)組織存儲(chǔ)結(jié)構(gòu)化信息和無(wú)結(jié)構(gòu)信息,使數(shù)據(jù)間關(guān)聯(lián)的表示更加靈活;2.基于圖模型、文本索引、關(guān)聯(lián)機(jī)制提供綜合的問(wèn)題查詢(xún)方法,對(duì)問(wèn)題的查詢(xún)定位更加準(zhǔn)確。
【專(zhuān)利說(shuō)明】基于圖模型的軟件項(xiàng)目語(yǔ)義信息表示及檢索方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種軟件項(xiàng)目語(yǔ)義信息的表示及檢索方法,尤其是涉及一種采用圖模型表不和檢索軟件項(xiàng)目語(yǔ)義息的方法。
【背景技術(shù)】
[0002]在軟件開(kāi)發(fā)中,軟件代碼、文檔等的存儲(chǔ)往往以傳統(tǒng)的文件系統(tǒng)、關(guān)系型數(shù)據(jù)庫(kù)等形式為主,對(duì)文檔中蘊(yùn)含的語(yǔ)義信息不進(jìn)行處理和明確的表示。但是,軟件代碼和文檔中提供了理解該軟件的重要資源,其中包含了軟件業(yè)務(wù)領(lǐng)域的需求分析、軟件的系統(tǒng)架構(gòu)、程序結(jié)構(gòu)、軟件功能的實(shí)現(xiàn)流程、軟件使用方法等信息,這些包含了描述軟件項(xiàng)目語(yǔ)義的信息,對(duì)于項(xiàng)目開(kāi)發(fā)者理解軟件業(yè)務(wù)需求、參與代碼編寫(xiě)都有重要作用。
[0003]目前,關(guān)于表示軟件項(xiàng)目資源中的語(yǔ)義信息的現(xiàn)有技術(shù)主要有基于NOSQL(NotOnly SQL)數(shù)據(jù)庫(kù)的表示方式和基于語(yǔ)義網(wǎng)表技術(shù)的表示方式,但是這些技術(shù)的局限之處在于語(yǔ)義網(wǎng)的描述框架的使用和構(gòu)造存在一定難度,尚未有軟件工程領(lǐng)域的應(yīng)用技術(shù)。
[0004]因此,對(duì)軟件構(gòu)件、軟件系統(tǒng)或項(xiàng)目的代碼、文檔等資源進(jìn)行深入分析,對(duì)其中蘊(yùn)含的軟件項(xiàng)目語(yǔ)義信息進(jìn)行清晰合理的展示,進(jìn)而幫助軟件復(fù)用者、開(kāi)發(fā)者更容易地理解軟件項(xiàng)目,是一項(xiàng)亟待解決的問(wèn)題,對(duì)于軟件開(kāi)發(fā)效率的提高具有重要意義。。
【發(fā)明內(nèi)容】
[0005]本發(fā)明主要是解決現(xiàn)有技術(shù)中所存在的缺乏有效表示軟件項(xiàng)目文檔中所蘊(yùn)含的豐富語(yǔ)義信息的表示和處理方法等問(wèn)題,提供了一種軟件項(xiàng)目語(yǔ)義信息的表示方法,該方法可以對(duì)代碼、文檔等各類(lèi)軟件資源中蘊(yùn)含的語(yǔ)義信息進(jìn)行整合、關(guān)聯(lián)、存儲(chǔ)和查詢(xún),以幫助軟件開(kāi)發(fā)者、復(fù)用者對(duì)軟件項(xiàng)目資源進(jìn)行更深入的理解,并幫助解決實(shí)際開(kāi)發(fā)中可能遇到的問(wèn)題。
[0006]本發(fā)明還有一目的是解決現(xiàn)有技術(shù)中所存在的缺乏有效查找軟件項(xiàng)目中與語(yǔ)義相關(guān)的文檔代碼等問(wèn)題,提供了一種對(duì)基于圖模型表示的軟件項(xiàng)目語(yǔ)義信息進(jìn)行檢索的方法。該方法將圖模型查詢(xún)技術(shù)、文本索引檢索技術(shù)、關(guān)聯(lián)定位技術(shù)相結(jié)合,能基于軟件項(xiàng)目語(yǔ)義信息快速進(jìn)行檢索。
[0007]本發(fā)明的上述技術(shù)問(wèn)題主要是通過(guò)下述技術(shù)方案得以解決的:
[0008]一種基于圖模型的軟件項(xiàng)目語(yǔ)義信息表示方法,包括:
[0009]抽取軟件項(xiàng)目信息的步驟:從軟件項(xiàng)目資源中抽取結(jié)構(gòu)化信息本體和無(wú)結(jié)構(gòu)信息本體;
[0010]存儲(chǔ)結(jié)構(gòu)化信息本體的步驟:將結(jié)構(gòu)化信息本體以圖數(shù)據(jù)庫(kù)形式進(jìn)行表示和存儲(chǔ);
[0011]存儲(chǔ)無(wú)結(jié)構(gòu)信息的步驟:以文件形式存儲(chǔ)無(wú)結(jié)構(gòu)信息本體,并建立結(jié)化信息本體和無(wú)結(jié)構(gòu)信息本體之間的關(guān)聯(lián)關(guān)系。
[0012]優(yōu)化的,上述的一種基于圖模型的軟件項(xiàng)目語(yǔ)義信息表示方法,所述抽取軟件項(xiàng)目信息的步驟進(jìn)一步包括以下子步驟:
[0013]步驟2.1:將結(jié)構(gòu)化信息本體構(gòu)建成一個(gè)抽象語(yǔ)法樹(shù),結(jié)構(gòu)化信息本體的每個(gè)元素都對(duì)應(yīng)一個(gè)抽象語(yǔ)法樹(shù)上的結(jié)點(diǎn);
[0014]步驟2.2:根據(jù)步驟2.1中構(gòu)建的語(yǔ)法樹(shù)上的結(jié)點(diǎn)所包含的具體元素內(nèi)容,構(gòu)建抽象語(yǔ)法樹(shù)各結(jié)點(diǎn)之間的關(guān)系;
[0015]步驟2.3:將步驟2.1中構(gòu)建的語(yǔ)法樹(shù)上的結(jié)點(diǎn)和步驟2.2中構(gòu)建的各結(jié)點(diǎn)之間的關(guān)系儲(chǔ)存在數(shù)據(jù)庫(kù)中。
[0016]優(yōu)化的,上述一種基于圖模型的軟件項(xiàng)目語(yǔ)義信息表示方法,所述結(jié)構(gòu)化信息本體是項(xiàng)目代碼,所述步驟2.2中構(gòu)建的抽象語(yǔ)法樹(shù)各結(jié)點(diǎn)之間的關(guān)系是項(xiàng)目代碼中的繼承、包含、依賴(lài)、調(diào)用、實(shí)現(xiàn)關(guān)系中的一種或多種。
[0017]優(yōu)化的,上述一種基于圖模型的軟件項(xiàng)目語(yǔ)義信息表示方法,所述存儲(chǔ)結(jié)構(gòu)化信息本體的步驟進(jìn)一步包括以下子步驟:
[0018]步驟4.1:為每一類(lèi)結(jié)構(gòu)化信息本體建立圖數(shù)據(jù)庫(kù)中的本體類(lèi)型以及每一類(lèi)本體包含的具體屬性;
[0019]步驟4.2:對(duì)于每一個(gè)結(jié)構(gòu)化信息本體,在圖數(shù)據(jù)庫(kù)中建立相應(yīng)的實(shí)體,并存儲(chǔ)其具體的屬性值;
[0020]步驟4.3:為每一類(lèi)結(jié)構(gòu)化信息本體之間的關(guān)系建立圖數(shù)據(jù)庫(kù)中的關(guān)系類(lèi)型以及每一類(lèi)關(guān)系包含具體的屬性;
[0021]步驟4.4:為每一個(gè)結(jié)構(gòu)化信息本體之間的關(guān)系,在圖數(shù)據(jù)庫(kù)中建立相應(yīng)的關(guān)系,并存儲(chǔ)其具體的屬性值,關(guān)系兩端是步驟4.2中建立的實(shí)體。
[0022]優(yōu)化的,上述一種基于圖模型的軟件項(xiàng)目語(yǔ)義信息表示方法,所述存儲(chǔ)無(wú)結(jié)構(gòu)信息的步驟進(jìn)一步包括以下子步驟:
[0023]步驟5.1:在圖數(shù)據(jù)庫(kù)中建立用來(lái)表示無(wú)結(jié)構(gòu)本體的文檔類(lèi)型以及用來(lái)表示結(jié)構(gòu)化信息本體和無(wú)結(jié)構(gòu)信息本體之間關(guān)聯(lián)的關(guān)系類(lèi)型;
[0024]步驟5.2:將無(wú)結(jié)構(gòu)信息按照步驟5.1所建立的文檔類(lèi)型進(jìn)行存儲(chǔ)并建立表示無(wú)結(jié)構(gòu)文本與該無(wú)結(jié)構(gòu)文本在圖模型庫(kù)中存儲(chǔ)的無(wú)結(jié)構(gòu)信息本體之間對(duì)應(yīng)關(guān)系的索引表;
[0025]步驟5.3:提取步驟5.2中存儲(chǔ)的無(wú)結(jié)構(gòu)信息本體中所包含的元素,若所述元素存在于存儲(chǔ)結(jié)構(gòu)化信息本體的步驟中所存儲(chǔ)的結(jié)構(gòu)化信息本體中,則在對(duì)應(yīng)的無(wú)結(jié)構(gòu)信息本體和結(jié)構(gòu)化信息本體之間建立一個(gè)步驟5.1所述的關(guān)系類(lèi)型的屬性值。
[0026]一種對(duì)基于圖模型表示的軟件項(xiàng)目語(yǔ)義信息進(jìn)行檢索的方法,包括以下步驟:
[0027]構(gòu)造查詢(xún)請(qǐng)求的步驟:根據(jù)待檢索問(wèn)題構(gòu)造圖模型查詢(xún)請(qǐng)求和無(wú)結(jié)構(gòu)信息的查詢(xún)請(qǐng)求;
[0028]無(wú)結(jié)構(gòu)信息的查詢(xún)步驟:在無(wú)結(jié)構(gòu)信息中處理無(wú)結(jié)構(gòu)信息的查詢(xún)請(qǐng)求,獲取查詢(xún)結(jié)果;
[0029]關(guān)聯(lián)結(jié)點(diǎn)的定位步驟:采用關(guān)聯(lián)定位技術(shù)查詢(xún)無(wú)結(jié)構(gòu)信息與圖模型的關(guān)聯(lián)關(guān)系,并定位到關(guān)聯(lián)節(jié)點(diǎn);
[0030]圖模型查詢(xún)的步驟:在圖數(shù)據(jù)庫(kù)中根據(jù)圖模型查詢(xún)請(qǐng)求對(duì)所定位關(guān)聯(lián)節(jié)點(diǎn)進(jìn)行查詢(xún),返回?cái)?shù)據(jù)模型的查詢(xún)子圖,并將關(guān)聯(lián)結(jié)點(diǎn)的定位步驟中與結(jié)構(gòu)化信息本體關(guān)聯(lián)的無(wú)結(jié)構(gòu)信息作為描述性補(bǔ)充信息。[0031]優(yōu)化的,上述的一種對(duì)基于圖模型表示的軟件項(xiàng)目語(yǔ)義信息進(jìn)行檢索的方法,所述關(guān)聯(lián)結(jié)點(diǎn)的定位步驟進(jìn)一步包括以下子步驟:
[0032]步驟7.1:通過(guò)無(wú)結(jié)構(gòu)文本與該無(wú)結(jié)構(gòu)文本在圖數(shù)據(jù)庫(kù)中存儲(chǔ)的本體之間對(duì)應(yīng)關(guān)系的索引表,在圖數(shù)據(jù)庫(kù)中找出無(wú)結(jié)構(gòu)文本本體;
[0033]步驟7.2:對(duì)無(wú)結(jié)構(gòu)文本進(jìn)行詞法分析和句法分析,識(shí)別其中的查詢(xún)關(guān)鍵詞或查詢(xún)目標(biāo),并結(jié)合步驟7.1中找出的圖數(shù)據(jù)庫(kù)中的文本本體,構(gòu)造相應(yīng)的查詢(xún)語(yǔ)句;
[0034]步驟7.3:根據(jù)步驟7.2中生成的查詢(xún)語(yǔ)句,并按照指定的圖查詢(xún)參數(shù),在圖數(shù)據(jù)庫(kù)中查詢(xún)無(wú)結(jié)構(gòu)文本相關(guān)聯(lián)的關(guān)聯(lián)結(jié)點(diǎn)。
[0035]優(yōu)化的,上述的一種對(duì)基于圖模型表示的軟件項(xiàng)目語(yǔ)義信息進(jìn)行檢索的方法,在所述圖模型查詢(xún)的步驟中,首先解析受限的自然語(yǔ)言查詢(xún)語(yǔ)句,若查詢(xún)語(yǔ)句句法正確則繼續(xù)執(zhí)行以下子步驟:
[0036]步驟8.1:將解析結(jié)果規(guī)整為結(jié)構(gòu)化的數(shù)據(jù)庫(kù)查詢(xún)指令;
[0037]步驟8.2:將數(shù)據(jù)庫(kù)查詢(xún)指令編譯為圖數(shù)據(jù)庫(kù)的通用查詢(xún)語(yǔ)句并執(zhí)行該查詢(xún)語(yǔ)句,返回由關(guān)聯(lián)節(jié)點(diǎn)構(gòu)成的連通子圖;
[0038]步驟8.3:將步驟8.2得到的子圖可視化;
[0039]步驟8.4:呈現(xiàn)子步驟8.3中的連通子圖的各個(gè)節(jié)點(diǎn)所關(guān)聯(lián)到的非結(jié)構(gòu)化文本信
肩、O
[0040]優(yōu)化的,上述的一種對(duì)基于圖模型表示的軟件項(xiàng)目語(yǔ)義信息進(jìn)行檢索的方法,在所述圖模型查詢(xún)的步驟中,首先解析受限的自然語(yǔ)言查詢(xún)語(yǔ)句,若查詢(xún)語(yǔ)句句法錯(cuò)誤則繼續(xù)執(zhí)行以下子步驟:
[0041]步驟9.1:根據(jù)自然語(yǔ)言文本之間的相似度算法,計(jì)算自然語(yǔ)言查詢(xún)語(yǔ)句與圖數(shù)據(jù)庫(kù)中結(jié)構(gòu)化信息本體之間的相似度,返回圖數(shù)據(jù)庫(kù)中與自然語(yǔ)言查詢(xún)語(yǔ)句相似度最高的節(jié)點(diǎn)作為關(guān)聯(lián)的節(jié)點(diǎn);
[0042]步驟9.2:通過(guò)展開(kāi)步驟9.1中返回的關(guān)聯(lián)節(jié)點(diǎn)的鄰接節(jié)點(diǎn)的方式或通過(guò)計(jì)算步驟9.1中返回的關(guān)聯(lián)節(jié)點(diǎn)子圖相似度的方式,在圖數(shù)據(jù)庫(kù)中找到關(guān)聯(lián)節(jié)點(diǎn)的連通子圖作為結(jié)果;
[0043]步驟9.3:將步驟9.2所得到的連通子圖可視化;
[0044]步驟9.4:呈現(xiàn)子步驟9.3中的連通子圖的各個(gè)節(jié)點(diǎn)所關(guān)聯(lián)到的非結(jié)構(gòu)化文本信
肩、O
[0045]因此,本發(fā)明具有如下優(yōu)點(diǎn):1.分別采用圖模型和文本索引技術(shù)組織存儲(chǔ)結(jié)構(gòu)化信息和無(wú)結(jié)構(gòu)信息,使數(shù)據(jù)間關(guān)聯(lián)的表示更加靈活;2.基于圖模型、文本索引、關(guān)聯(lián)機(jī)制提供綜合的問(wèn)題查詢(xún)方法,對(duì)問(wèn)題的查詢(xún)定位更加準(zhǔn)確。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0046]附圖1是實(shí)施例1抽取軟件項(xiàng)目信息步驟的流程圖。
[0047]附圖2是實(shí)施例1存儲(chǔ)結(jié)構(gòu)化信息本體步驟的流程圖。
[0048]附圖3是實(shí)施例1存儲(chǔ)無(wú)結(jié)構(gòu)信息步驟的流程圖。
【具體實(shí)施方式】[0049]實(shí)施例1:
[0050]參照?qǐng)D1,抽取軟件項(xiàng)目信息:對(duì)項(xiàng)目代碼進(jìn)行靜態(tài)分析,從軟件項(xiàng)目的代碼、文檔資源中抽取結(jié)構(gòu)化信息本體和無(wú)結(jié)構(gòu)信息本體。
[0051]結(jié)構(gòu)化信息是指根據(jù)預(yù)先定義的數(shù)據(jù)模型,或者客觀存在的組織形式進(jìn)行存儲(chǔ)和表達(dá)的信息。例如,軟件代碼是按照程序語(yǔ)言語(yǔ)法表達(dá)的結(jié)構(gòu)化信息,軟件項(xiàng)目的開(kāi)發(fā)者郵件包含收、發(fā)件人,郵件主題,發(fā)送時(shí)間等固定內(nèi)容的結(jié)構(gòu)化信息,軟件用戶文檔的章節(jié)是符合文檔撰寫(xiě)習(xí)慣的結(jié)構(gòu)化信息。
[0052]無(wú)結(jié)構(gòu)信息是指不具備結(jié)構(gòu)化特征的信息,例如,無(wú)組織的純自然語(yǔ)言文本段落。
[0053]在本實(shí)施例中,結(jié)構(gòu)化信息本體是指項(xiàng)目代碼。該抽取軟件項(xiàng)目信息的步驟進(jìn)一步包括以下子步驟:
[0054]步驟2.1:將結(jié)構(gòu)化信息本體構(gòu)建成一個(gè)DOM結(jié)構(gòu)的抽象語(yǔ)法樹(shù),結(jié)構(gòu)化信息本體的每個(gè)元素都對(duì)應(yīng)一個(gè)抽象語(yǔ)法樹(shù)上的結(jié)點(diǎn);
[0055]步驟2.2:根據(jù)步驟2.1中構(gòu)建的語(yǔ)法樹(shù)上的結(jié)點(diǎn)所包含的具體元素內(nèi)容,構(gòu)建抽象語(yǔ)法樹(shù)各結(jié)點(diǎn)之間的關(guān)系,如繼承、包含、依賴(lài)、調(diào)用、實(shí)現(xiàn)等關(guān)系中的一種或多種。
[0056]步驟2.3:將步驟2.1中構(gòu)建的語(yǔ)法樹(shù)上的結(jié)點(diǎn)和步驟2中構(gòu)建的各結(jié)點(diǎn)之間的關(guān)系儲(chǔ)存在SQL數(shù)據(jù)庫(kù)之中。
[0057]在完成抽取軟件項(xiàng)目信息的步驟之后,進(jìn)入如圖2所示的存儲(chǔ)結(jié)構(gòu)化信息本體的步驟,將抽取軟件項(xiàng)目信息步驟中提取出的代碼元素以及它們之間的關(guān)系以圖數(shù)據(jù)庫(kù)的形式存儲(chǔ),該步驟進(jìn)一步包括以下子步驟:
[0058]步驟4.1:為每一類(lèi)代碼元素建立圖數(shù)據(jù)庫(kù)中的本體類(lèi)型,每一類(lèi)本體包含具體的屬性;
[0059]步驟4.2:對(duì)于提取出的每一個(gè)代碼元素,在圖數(shù)據(jù)庫(kù)中建立相應(yīng)的實(shí)體,并存儲(chǔ)其具體的屬性值;
[0060]步驟4.3:為每一類(lèi)代碼元素之間的關(guān)系建立圖數(shù)據(jù)庫(kù)中的關(guān)系類(lèi)型,每一類(lèi)關(guān)系包含具體的屬性;
[0061]步驟4.4:為每一個(gè)代碼元素之間的關(guān)系,在圖數(shù)據(jù)庫(kù)中建立相應(yīng)的關(guān)系,并存儲(chǔ)其具體的屬性值,關(guān)系兩端是4.2中建立的實(shí)體。
[0062]在完成存儲(chǔ)無(wú)結(jié)構(gòu)信息的步驟之后,進(jìn)入如圖3所示的存儲(chǔ)無(wú)結(jié)構(gòu)信息的步驟,將項(xiàng)目相關(guān)文檔存儲(chǔ)在圖模型庫(kù)中,并以代碼元素為核心建立它們之間的關(guān)聯(lián)。該步驟進(jìn)一步包括以下子步驟:
[0063]步驟5.1:在圖模型庫(kù)中建立用來(lái)表示文檔本體的文檔類(lèi)型以及用來(lái)表示代碼元素本體和文檔本體之間關(guān)聯(lián)的關(guān)系類(lèi)型;
[0064]步驟5.2:將每一個(gè)文檔按照步驟5.1所建立的文檔類(lèi)型以倒排索引的方式進(jìn)行組織和存儲(chǔ)。
[0065]步驟5.3:提取步驟5.2中存儲(chǔ)的文檔本體中所包含的代碼元素,若該代碼元素存在于步驟5.2建立的實(shí)體中,則在對(duì)應(yīng)的文檔本體和5.2建立的實(shí)體之間建立一個(gè)“關(guān)聯(lián)”關(guān)系,并存儲(chǔ)其屬性值。
[0066]本實(shí)施例還支持對(duì)所抽取并基于圖模型表示的軟件項(xiàng)目語(yǔ)義信息進(jìn)行檢索。提供將圖模型查詢(xún)技術(shù)、文本索引檢索技術(shù)、關(guān)聯(lián)定位技術(shù)相結(jié)合的軟件項(xiàng)目語(yǔ)義信息檢索方法。具體步驟包括:
[0067]構(gòu)造查詢(xún)請(qǐng)求的步驟、:根據(jù)待檢索問(wèn)題構(gòu)造圖模型查詢(xún)請(qǐng)求和無(wú)結(jié)構(gòu)信息的查詢(xún)請(qǐng)求;
[0068]無(wú)結(jié)構(gòu)信息的查詢(xún)步驟:在無(wú)結(jié)構(gòu)信息中處理無(wú)結(jié)構(gòu)信息的索引查詢(xún)請(qǐng)求,獲取查詢(xún)結(jié)果;其中無(wú)結(jié)構(gòu)信息為文本時(shí),無(wú)結(jié)構(gòu)信息的查詢(xún)步驟是在文本索引中處理無(wú)結(jié)構(gòu)文本索引的查詢(xún)請(qǐng)求;
[0069]關(guān)聯(lián)結(jié)點(diǎn)的定位步驟:采用關(guān)聯(lián)定位技術(shù)查詢(xún)無(wú)結(jié)構(gòu)文本與圖模型的關(guān)聯(lián)關(guān)系,并定位到關(guān)聯(lián)節(jié)點(diǎn);
[0070]圖模型查詢(xún)的步驟:在圖模型中根據(jù)圖模型查詢(xún)請(qǐng)求對(duì)所定位關(guān)聯(lián)節(jié)點(diǎn)進(jìn)行查詢(xún),返回?cái)?shù)據(jù)模型的查詢(xún)子圖,并將關(guān)聯(lián)結(jié)點(diǎn)的定位步驟中與結(jié)構(gòu)化信息本體關(guān)聯(lián)的無(wú)結(jié)構(gòu)信息作為描述性補(bǔ)充信息。
[0071]其中,關(guān)聯(lián)結(jié)點(diǎn)的定位步驟主要有以下步驟:
[0072]步驟7.1:通過(guò)無(wú)結(jié)構(gòu)文本與該無(wú)結(jié)構(gòu)文本在圖數(shù)據(jù)庫(kù)中存儲(chǔ)的本體之間對(duì)應(yīng)關(guān)系的索引表,在圖數(shù)據(jù)庫(kù)中找出無(wú)結(jié)構(gòu)文本本體;
[0073]步驟7.2:對(duì)無(wú)結(jié)構(gòu)文本進(jìn)行詞法分析和句法分析,識(shí)別其中的查詢(xún)關(guān)鍵詞或查詢(xún)目標(biāo),并結(jié)合步驟7.1中找出的圖數(shù)據(jù)庫(kù)中的文本本體,構(gòu)造相應(yīng)的查詢(xún)語(yǔ)句;
[0074]步驟7.3:根據(jù)步驟7.2中生成的查詢(xún)語(yǔ)句,并按照指定的圖查詢(xún)參數(shù),在圖數(shù)據(jù)庫(kù)中查詢(xún)無(wú)結(jié)構(gòu)文本相關(guān)聯(lián)的關(guān)聯(lián)結(jié)點(diǎn)。其中,圖查詢(xún)參數(shù)為查詢(xún)范圍、節(jié)點(diǎn)類(lèi)型、鄰接節(jié)點(diǎn)擴(kuò)展數(shù)量中的一種或多種。
[0075]本實(shí)施例的圖模型查詢(xún)的步驟中,首先解析受限的自然語(yǔ)言查詢(xún)語(yǔ)句,若查詢(xún)語(yǔ)句句法正確則繼續(xù)執(zhí)行以下子步驟:
[0076]步驟8.1:將解析結(jié)果規(guī)整為結(jié)構(gòu)化的數(shù)據(jù)庫(kù)查詢(xún)指令;
[0077]步驟8.2:將數(shù)據(jù)庫(kù)查詢(xún)指令編譯為圖數(shù)據(jù)庫(kù)的通用查詢(xún)語(yǔ)句并執(zhí)行該查詢(xún)語(yǔ)句,返回由關(guān)聯(lián)節(jié)點(diǎn)構(gòu)成的連通子圖;
[0078]步驟8.3:將步驟8.2得到的子圖可視化;
[0079]步驟8.4:呈現(xiàn)子步驟8.3中的連通子圖的各個(gè)節(jié)點(diǎn)所關(guān)聯(lián)到的非結(jié)構(gòu)化文本信
肩、O
[0080]解析受限的自然語(yǔ)言查詢(xún)語(yǔ)句時(shí),若查詢(xún)語(yǔ)句句法錯(cuò)誤則繼續(xù)執(zhí)行以下子步驟:
[0081]步驟9.1:根據(jù)自然語(yǔ)言文本之間的相似度算法,計(jì)算自然語(yǔ)言查詢(xún)語(yǔ)句與圖數(shù)據(jù)庫(kù)中結(jié)構(gòu)化信息本體之間的相似度,返回圖數(shù)據(jù)庫(kù)中與自然語(yǔ)言查詢(xún)語(yǔ)句相似度最高的節(jié)點(diǎn)作為關(guān)聯(lián)的節(jié)點(diǎn);
[0082]步驟9.2:通過(guò)展開(kāi)步驟9.1中返回的關(guān)聯(lián)節(jié)點(diǎn)的鄰接節(jié)點(diǎn)的方式或通過(guò)計(jì)算步驟9.1中返回的關(guān)聯(lián)節(jié)點(diǎn)子圖相似度的方式,在圖數(shù)據(jù)庫(kù)中找到關(guān)聯(lián)節(jié)點(diǎn)的連通子圖作為結(jié)果;
[0083]步驟9.3:將步驟9.2所得到的連通子圖可視化;
[0084]步驟9.4:呈現(xiàn)子步驟9.3中的連通子圖的各個(gè)節(jié)點(diǎn)所關(guān)聯(lián)到的非結(jié)構(gòu)化文本信
肩、O
[0085]本文中所描述的具體實(shí)施例僅僅是對(duì)本發(fā)明精神作舉例說(shuō)明。本發(fā)明所屬【技術(shù)領(lǐng)域】的技術(shù)人員可以對(duì)所描述的具體實(shí)施例做各種各樣的修改或補(bǔ)充或采用類(lèi)似的方式替代,但并不會(huì)偏離本發(fā)明的精神或者超越所附權(quán)利要求書(shū)所定義的范圍。
【權(quán)利要求】
1.一種基于圖模型的軟件項(xiàng)目語(yǔ)義信息表示方法,其特征在于,包括: 抽取軟件項(xiàng)目信息的步驟:從軟件項(xiàng)目資源中抽取結(jié)構(gòu)化信息本體和無(wú)結(jié)構(gòu)信息本體; 存儲(chǔ)結(jié)構(gòu)化信息本體的步驟:將結(jié)構(gòu)化信息本體以圖數(shù)據(jù)庫(kù)形式進(jìn)行表示和存儲(chǔ); 存儲(chǔ)無(wú)結(jié)構(gòu)信息的步驟:以文件形式存儲(chǔ)無(wú)結(jié)構(gòu)信息本體,并建立結(jié)化信息本體和無(wú)結(jié)構(gòu)信息本體之間的關(guān)聯(lián)關(guān)系。
2.根據(jù)權(quán)利要求1所述的一種基于圖模型的軟件項(xiàng)目語(yǔ)義信息表示方法,其特征在于,所述抽取軟件項(xiàng)目信息的步驟進(jìn)一步包括以下子步驟: 步驟2.1:將結(jié)構(gòu)化信息本體構(gòu)建成一個(gè)抽象語(yǔ)法樹(shù),結(jié)構(gòu)化信息本體的每個(gè)元素都對(duì)應(yīng)一個(gè)抽象語(yǔ)法樹(shù)上的結(jié)點(diǎn); 步驟2.2:根據(jù)步驟2.1中構(gòu)建的語(yǔ)法樹(shù)上的結(jié)點(diǎn)所包含的具體元素內(nèi)容,構(gòu)建抽象語(yǔ)法樹(shù)各結(jié)點(diǎn)之間的關(guān)系; 步驟2.3:將步驟2.1中構(gòu)建的語(yǔ)法樹(shù)上的結(jié)點(diǎn)和步驟2.2中構(gòu)建的各結(jié)點(diǎn)之間的關(guān)系儲(chǔ)存在數(shù)據(jù)庫(kù)中。
3.根據(jù)權(quán)利要求2所述一種基于圖模型的軟件項(xiàng)目語(yǔ)義信息表示方法,其特征在于,所述結(jié)構(gòu)化信息本體是項(xiàng)目代碼,所述步驟2.2中構(gòu)建的抽象語(yǔ)法樹(shù)各結(jié)點(diǎn)之間的關(guān)系是項(xiàng)目代碼中的繼承、包含、依賴(lài)、調(diào)用、實(shí)現(xiàn)關(guān)系中的一種或多種。
4.根據(jù)權(quán)利要求1所述一種基于圖模型的軟件項(xiàng)目語(yǔ)義信息表示方法,其特征在于,所述存儲(chǔ)結(jié)構(gòu)化信息本體的步驟進(jìn)一步包括以下子步驟: 步驟4.1:為每一類(lèi)結(jié)構(gòu)化信息本體建立圖數(shù)據(jù)庫(kù)中的本體類(lèi)型以及每一類(lèi)本體包含的具體屬性; 步驟4.2:對(duì)于每一個(gè)結(jié)構(gòu)化信息本體,在圖數(shù)據(jù)庫(kù)中建立相應(yīng)的實(shí)體,并存儲(chǔ)其具體的屬性值; 步驟4.3:為每一類(lèi)結(jié)構(gòu)化信息本體之間的關(guān)系建立圖數(shù)據(jù)庫(kù)中的關(guān)系類(lèi)型以及每一類(lèi)關(guān)系包含具體的屬性; 步驟4.4:為每一個(gè)結(jié)構(gòu)化信息本體之間的關(guān)系,在圖數(shù)據(jù)庫(kù)中建立相應(yīng)的關(guān)系,并存儲(chǔ)其具體的屬性值,關(guān)系兩端是步驟4.2中建立的實(shí)體。
5.根據(jù)權(quán)利要求1所述一種基于圖模型的軟件項(xiàng)目語(yǔ)義信息表示方法,其特征在于,所述存儲(chǔ)無(wú)結(jié)構(gòu)信息的步驟進(jìn)一步包括以下子步驟: 步驟5.1:在圖數(shù)據(jù)庫(kù)中建立用來(lái)表示無(wú)結(jié)構(gòu)本體的文檔類(lèi)型以及用來(lái)表示結(jié)構(gòu)化信息本體和無(wú)結(jié)構(gòu)信息本體之間關(guān)聯(lián)的關(guān)系類(lèi)型; 步驟5.2:將無(wú)結(jié)構(gòu)信息按照步驟5.1所建立的文檔類(lèi)型進(jìn)行存儲(chǔ)并建立表示無(wú)結(jié)構(gòu)文本與該無(wú)結(jié)構(gòu)文本在圖模型庫(kù)中存儲(chǔ)的無(wú)結(jié)構(gòu)信息本體之間對(duì)應(yīng)關(guān)系的索引表; 步驟5.3:提取步驟5.2中存儲(chǔ)的無(wú)結(jié)構(gòu)信息本體中所包含的元素,若所述元素存在于存儲(chǔ)結(jié)構(gòu)化信息本體的步驟中所存儲(chǔ)的結(jié)構(gòu)化信息本體中,則在對(duì)應(yīng)的無(wú)結(jié)構(gòu)信息本體和結(jié)構(gòu)化信息本體之間建立一個(gè)步驟5.1所述的關(guān)系類(lèi)型的屬性值。
6.一種對(duì)基于圖模型表示的軟件項(xiàng)目語(yǔ)義信息進(jìn)行檢索的方法,其特征在于,包括以下步驟: 構(gòu)造查詢(xún)請(qǐng)求的步驟:根據(jù)待檢索問(wèn)題構(gòu)造圖模型查詢(xún)請(qǐng)求和無(wú)結(jié)構(gòu)信息的查詢(xún)請(qǐng)求; 無(wú)結(jié)構(gòu)信息的查詢(xún)步驟:在無(wú)結(jié)構(gòu)信息中處理無(wú)結(jié)構(gòu)信息的查詢(xún)請(qǐng)求,獲取查詢(xún)結(jié)果; 關(guān)聯(lián)結(jié)點(diǎn)的定位步驟:采用關(guān)聯(lián)定位技術(shù)查詢(xún)無(wú)結(jié)構(gòu)信息與圖模型的關(guān)聯(lián)關(guān)系,并定位到關(guān)聯(lián)節(jié)點(diǎn); 圖模型查詢(xún)的步驟:在圖數(shù)據(jù)庫(kù)中根據(jù)圖模型查詢(xún)請(qǐng)求對(duì)所定位關(guān)聯(lián)節(jié)點(diǎn)進(jìn)行查詢(xún),返回?cái)?shù)據(jù)模型的查詢(xún)子圖,并將關(guān)聯(lián)結(jié)點(diǎn)的定位步驟中與結(jié)構(gòu)化信息本體關(guān)聯(lián)的無(wú)結(jié)構(gòu)信息作為描述性補(bǔ)充信息。
7.根據(jù)權(quán)利要求6所述的一種對(duì)基于圖模型表示的軟件項(xiàng)目語(yǔ)義信息進(jìn)行檢索的方法,其特征在于,所述關(guān)聯(lián)結(jié)點(diǎn)的定位步驟進(jìn)一步包括以下子步驟: 步驟7.1:通過(guò)無(wú)結(jié)構(gòu)文本與該無(wú)結(jié)構(gòu)文本在圖數(shù)據(jù)庫(kù)中存儲(chǔ)的本體之間對(duì)應(yīng)關(guān)系的索引表,在圖數(shù)據(jù)庫(kù)中找出無(wú)結(jié)構(gòu)文本本體; 步驟7.2:對(duì)無(wú)結(jié)構(gòu)文本進(jìn)行詞法分析和句法分析,識(shí)別其中的查詢(xún)關(guān)鍵詞或查詢(xún)目標(biāo),并結(jié)合步驟7.1中找出的圖數(shù)據(jù)庫(kù)中的文本本體,構(gòu)造相應(yīng)的查詢(xún)語(yǔ)句; 步驟7.3:根據(jù)步驟7.2中生成的查詢(xún)語(yǔ)句,并按照指定的圖查詢(xún)參數(shù),在圖數(shù)據(jù)庫(kù)中查詢(xún)無(wú)結(jié)構(gòu)文本相關(guān)聯(lián)的關(guān)聯(lián)結(jié)點(diǎn)。
8.根據(jù)權(quán)利要求6所述的一種對(duì)基于圖模型表示的軟件項(xiàng)目語(yǔ)義信息進(jìn)行檢索的方法,其特征在于,在所述圖模型查詢(xún)的步驟中,首先解析受限的自然語(yǔ)言查詢(xún)語(yǔ)句,若查詢(xún)語(yǔ)句句法正確則繼續(xù)執(zhí)行以下子步驟: 步驟8.1:將解析結(jié)果規(guī)整為結(jié)構(gòu)化的數(shù)據(jù)庫(kù)查詢(xún)指令; 步驟8.2:將數(shù)據(jù)庫(kù)查詢(xún)指令編譯為圖數(shù)據(jù)庫(kù)的通用查詢(xún)語(yǔ)句并執(zhí)行該查詢(xún)語(yǔ)句,返回由關(guān)聯(lián)節(jié)點(diǎn)構(gòu)成的連通子圖; 步驟8.3:將步驟8.2得到的子圖可視化; 步驟8.4:呈現(xiàn)子步驟8.3中的連通子圖的各個(gè)節(jié)點(diǎn)所關(guān)聯(lián)到的非結(jié)構(gòu)化文本信息。
9.根據(jù)權(quán)利要求6所述的一種對(duì)基于圖模型表示的軟件項(xiàng)目語(yǔ)義信息進(jìn)行檢索的方法,其特征在于,在所述圖模型查詢(xún)的步驟中,首先解析受限的自然語(yǔ)言查詢(xún)語(yǔ)句,若查詢(xún)語(yǔ)句句法錯(cuò)誤則繼續(xù)執(zhí)行以下子步驟: 步驟9.1:根據(jù)自然語(yǔ)言文本之間的相似度算法,計(jì)算自然語(yǔ)言查詢(xún)語(yǔ)句與圖數(shù)據(jù)庫(kù)中結(jié)構(gòu)化信息本體之間的相似度,返回圖數(shù)據(jù)庫(kù)中與自然語(yǔ)言查詢(xún)語(yǔ)句相似度最高的節(jié)點(diǎn)作為關(guān)聯(lián)的節(jié)點(diǎn); 步驟9.2:通過(guò)展開(kāi)步驟9.1中返回的關(guān)聯(lián)節(jié)點(diǎn)的鄰接節(jié)點(diǎn)的方式或通過(guò)計(jì)算步驟9.1中返回的關(guān)聯(lián)節(jié)點(diǎn)子圖相似度的方式,在圖數(shù)據(jù)庫(kù)中找到關(guān)聯(lián)節(jié)點(diǎn)的連通子圖作為結(jié)果; 步驟9.3:將步驟9.2所得到的連通子圖可視化; 步驟9.4:呈現(xiàn)子步驟9.3中的連通子圖的各個(gè)節(jié)點(diǎn)所關(guān)聯(lián)到的非結(jié)構(gòu)化文本信息。
【文檔編號(hào)】G06F17/30GK103927360SQ201410156422
【公開(kāi)日】2014年7月16日 申請(qǐng)日期:2014年4月18日 優(yōu)先權(quán)日:2014年4月18日
【發(fā)明者】謝冰, 朱子驍, 華哲邦 申請(qǐng)人:北京大學(xué)