国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于句法和語義的需求依賴關系自動獲取

2021-03-08 00:24賈成真
計算機技術與發(fā)展 2021年2期
關鍵詞:詞庫分詞語義

關 慧,呂 穎,賈成真

(沈陽化工大學 計算機科學與技術學院,遼寧 沈陽 110000)

0 引 言

需求工程通過一種系統(tǒng)化的工程過程實現(xiàn)涉眾需求的抽取、協(xié)商和文檔化。作為需求工程輸出制品的需求文檔和需求規(guī)約是所有其他系統(tǒng)開發(fā)活動的重要基礎[1]。在軟件生命周期的概念建模階段,需求的常用表示方式有用例和基于自然語言的文本形式?;谧匀徽Z言的文本收集了各類需求信息,因為自然語言本身就有多方面含義,并且對于自然語言的理解會由于各種因素的影響而不斷改變,因此在處理自然語言以及需求關系分析的過程中也離不開人的參與。但是這并不是說自動建模工具的輔助沒有存在的必要。如果遇到一個比較復雜的系統(tǒng)時,需求文本的處理工作量是相當大的,為了能夠盡可能縮短處理的時間,減輕需求分析師的工作負擔,一些自動化工具或者系統(tǒng)就顯得尤為必要。目前在UML模型的自動生成上已有一些相關的工作。利用UML建造系統(tǒng)時,在系統(tǒng)開發(fā)的不同階段有不同的模型,并且這些模型的目的是不同的,例如用例圖、類圖和活動圖等。這些方法的處理過程可以總結歸納為:首先從文本中獲得特定的信息,然后定義一系列的轉換規(guī)則,最后再通過這些規(guī)則將需求文本映射到對應的圖形化模型上。

需求文本由于它獨特的領域知識以及潛在的語義而不同于普通文本:(1)需求文本通常不僅包含需求制品(即所描述的目標、場景、功能需求、質(zhì)量需求和約束),還包含一些重要的上下文關系。(2)需求文本由于它特定的領域知識,一些領域詞匯被定義語法詞性。如:“聯(lián)系信息”一詞在需求文本中被定義為名詞。(3)自然語言描述的需求文本也有一些本質(zhì)性的問題,如固有的二義性。

為了解決上述問題,文中在自然語言表示的需求文本的基礎上,施加語法限制,降低了自然語言描述需求存在的二義性等問題。通過定義語義詞庫,聯(lián)系到需求文本的語義關系,實現(xiàn)了從大量的需求文本中自動抽取需求依賴關系的方法。基于該方法,設計并實現(xiàn)了一個自動從中文需求文本生成需求間依賴關系的原型系統(tǒng),對需求依賴關系進行自動獲取。最后,通過案例驗證及對比,證明了方法的可用性和切實性。

1 相關工作

在需求自動建模開發(fā)工具上,李天潁等人[2]基于依存文法,依次對自然語言進行分詞、詞性標注及語法分析,設計并實現(xiàn)了一個系統(tǒng),從中文需求文本自動生成i*框架中的SD(strategy dependency,策略依賴)模型,側重抽取策略依賴關系信息,他們研究的同一個需求內(nèi)部之間的依賴關系。Chetan Arora等人[3]應用NLP自動識別需求語句的組成短語,然后計算所有標識的成對相似度分數(shù),輸出句法和語義相似性函數(shù),以判斷需求之間存在關系,但他們并沒有得出需求之間存在的關系類型。韓德帥等[4]將可視化的UML與嚴格化的時間自動機相結合,但該方法側重于軟件的實現(xiàn)階段,不支持軟件自適應的需求建模和形式化驗證。

在定義需求依賴關系類型上,國內(nèi)外學者均做了若干相關研究。羅術通[5]依據(jù)UML的定義把需求定義為七種原子關系:調(diào)用、中斷、喚起、修改、通知、控制、資源控制,其次,提出了需求簇的概念以及基于需求之間關系劃分需求簇的方法。關系的兩個主體是直接影響彼此,并不依賴于其他主體,然而,這種關系并沒有形式上的語義。Arda Goknila等人[6]研究的重點是業(yè)務需求的演變所帶來的需求變化,旨在通過使用形式來改進需求中的變更影響分析需求關系和需求變更類型的語義,他們確定了五種關系類型:要求、精煉、包含、部分細化和沖突。R.P. Gohil等人[7]提出一個分析其影響的框架,并用依賴圖顯示需求之間的依賴關系,把需求看成事件,在框架中自動添加需求依賴關系。Hassine等人[8]基于UCM模型分析需求變化的影響,定義UCM元素之間依賴關系,并通過功能依賴、時間依賴、包含依賴和組件依賴性對它們進行分組。

在關系抽取領域上,國內(nèi)外已經(jīng)有很多研究成果,應用到各種不同的領域。甘麗新等人[9]主要利用依存句法分析中文實體關系抽取,肜博輝[10]提出多通道卷積神經(jīng)網(wǎng)模型,用于多通道卷積神經(jīng)網(wǎng)的實體關系抽取,還有的學者如李麗雙[11]和田生偉[12]等人將關系抽取應用到生物醫(yī)學和事件因果關系方面上。目前尚沒有一個方法是用于自動獲取需求間的依賴關系的研究。

2 需求依賴關系自動獲取方法

在同一系統(tǒng)中,兩個需求之間可能存在直接或間接的依賴關系,需求依賴關系描述了需求之間的功能調(diào)用,也就是說,一個需求可以直接或間接地作用于另一個需求,并對之產(chǎn)生影響。文中提出了一種自動獲取需求依賴關系的方法,其主要步驟如圖1所示。

圖1 需求關系自動獲取方法框架

以自然語言描述的文本需求,往往不能被計算機理解,在實踐中這已成為需求工程的一個顯著的問題。為解決這一問題,文中需要對自然語言描述的需求文本進行處理,處理的第一步就是將需求形式化[13]。將需求表示成由關鍵詞組成的數(shù)學集合。首先對已有的分詞工具HanLP(http://hanlp.com/)進行改進,添加特定領域的語法詞性對需求進行分詞以及詞性標注;其次提取需求文本中的關鍵詞,通過依賴關鍵字中動詞、名詞等詞性的語義特征來判斷不同需求之間的關系類型;最后,通過系統(tǒng)自動抽取需求依賴關系。

2.1 需求形式化處理

定義1:需求是指用戶解決某個問題或者達到某個目標所需要的條件或能力。每一個需求文本都由若干個需求組成,其中需求均被定義為以下形式的三元組:

Ri={R.content,R.kwset,R.relation}

其中,R.content是指需求文本的內(nèi)容,R.kwset指提取需求中添加約束后提取的關鍵詞集合,R.relation表示需求之間的依賴關系。關鍵詞集合和依賴關系的定義見定義2和定義3。

提取關鍵詞首先需要分詞,文中基于已有的工具HanLP進行中文分詞及詞性標注,但由于需求文本中存在大量的領域詞匯,一些詞匯在分詞或詞性標注的過程中可能會發(fā)生錯誤,會直接影響到關系抽取的準確性。例如:“注冊一個新指導教師”和“系統(tǒng)應使學生能夠檢索學生和預訂課程的講師的聯(lián)系信息”這兩條需求語句中“指導教師”和“聯(lián)系信息”會被注釋為動名詞,而需求文本中“指導教師”和“聯(lián)系信息”均被定義為名詞,這一差異會影響關系的抽取。為了解決該問題,文中在原有的分詞工具上添加了領域詞典,通過遍歷領域詞典,修改被錯誤標注的詞性和分詞結果,從而提高關系抽取的準確率?;?.1.1節(jié)測試的文本主要添加的領域詞匯有:指導教師(n)、聯(lián)系信息(n)、指定學校(n)、分數(shù)評定(v)、評估結果(n)、信息傳遞設施(n)、課程評估(v)、完成項目(v)、解答疑問(v)。下面是對分詞工具的改進方法之一:如CustomDictionary.insert(“聯(lián)系信息”,“n”)。

2.2 關鍵詞提取

基于2.1節(jié)的分詞及修改后的詞性標注,文本中的需求可以用若干個短語組成,常見的短語有很多種,如:動詞性短語、名詞性短語、形容詞性短語、副詞性短語、連詞性短語、介詞短語以及動名詞結構等。而提取出的關鍵詞的共現(xiàn)程度可以被視為其語義相關性的度量,由于動詞能夠很好地反映需求中某些事件之間的關系類型,很多依賴關系通??梢酝ㄟ^動詞來引發(fā)。同樣判斷兩個需求潛在的語義關系時需要通過動詞之間隱含的語義來引發(fā),然而只依靠動詞判斷關系勢必會造成很多不相關的需求也出現(xiàn)依賴關系,與研究結果差異太大,因此文中引入了通過名詞的共現(xiàn)程度來考慮是否需要聯(lián)系動詞的語義特征?;谏鲜鰡栴},文中主要保留動詞(v)和名詞(n)作為每個需求語句的關鍵詞,并把每個需求封裝成一個關鍵詞集合來表示。

定義2:關鍵詞集合是指對需求進行關鍵詞提取之后由動詞和名詞詞性所組成的集合。

R.kwset={v1,v2,…,vn,n1,n2,…,ni}

2.3 語義詞庫添加

文中重點在于需求關系特征的選擇和抽取,以需求文本表示的需求通常被用于全文本分析,因此會忽略與特定領域相關的語義特征,同時詞匯之間的語義信息也容易被忽略,這些潛在的問題給需求之間依賴關系的抽取任務帶來了挑戰(zhàn)。

為了解決上述問題,文中通過分析詞匯之間的語義,提出自動抽取需求之間依賴關系的方法。通過定義具有語義關系的關系詞庫(如:有前提關系的詞匯對),利用關鍵詞集合中各個詞的詞義來聯(lián)系兩個需求之間的語義關系,結合領域相關的語義特征,通過關鍵字詞性映射來抽取特定領域的需求依賴關系,更好地應用于抽取結果。此外,需求語義詞庫的建立是一個動態(tài)的過程,需要在更多了解用戶的需求上修改或補充需求以及關系詞庫表和語義關系。

表1給出了針對文中測試的需求文本領域所添加的關系詞庫表。由于測試文本篇幅較小,因此提取出的關系詞也有限??梢钥闯?,關系詞庫知識的引入豐富了需求文本中詞匯的語義,使得提取結果更為準確。

表1 含有語義關系的依賴關系詞庫表

2.4 需求依賴關系抽取

2.4.1 依賴關系定義

需求之間存在多種依賴關系類型,比如:前提、相似、解釋、影響、異常、沖突、業(yè)務相關、進化、價值、成本、精煉、包含、部分細化和不相關等多種關系[14-16]。

需求之間的關系采用統(tǒng)一建模語言中定義的關系語義來描述,并且在特定的系統(tǒng)中,所抽取的需求關系被限制在一定的范圍內(nèi)。文中主要對以下6種需求關系做自動化抽取,分別是:相似關系(similar:s)、聚合關系(polymerize,p)、喚起關系(arouse:a)、調(diào)用關系(call:c)、通知關系(notice:n)及沖突關系(conflict:co)。

定義3:需求依賴關系指的是一個系統(tǒng)中一個需求與另一個需求之間的關系,也就是說,需求與需求之間可能存在直接或間接的依賴性關系。它被定義為:

R.relation={R.s,R.p,R.a,R.c,R.n,R.co}。

通過系統(tǒng)對其進行抽取和驗證。以上關系的非正式定義如下:

相似關系:如果R1和R2需求相同,則具有相似關系。

聚合關系:如果需求R2是R1的一部分,則R1與R2是聚合關系。

喚起關系:如果需求R2需要在R1后才能實現(xiàn),則R1和R2有喚起關系。

通知關系:如果R1在實現(xiàn)后允許R2開始實現(xiàn),則R1和R2有通知關系。

調(diào)用關系:如果R1在實現(xiàn)的過程中需要先實現(xiàn)R2,即R1在R2之前實現(xiàn),但R2先于R1完成實現(xiàn),則R1和R2具有調(diào)用關系。

沖突關系:如果R1和R2不能同時實現(xiàn),則R1和R2有沖突關系。

2.4.2 計算相似度

文中把需求劃分為幾部分短語再提取出關鍵詞,通過關鍵詞在任意兩句的全部關鍵詞集合中出現(xiàn)的頻率,把詞頻表示成向量來計算余弦值得出相似度,這個方法分為以下三部分:(1)每條需求文本各取出若干個關鍵詞,合并成一個集合,計算每個需求對于這個集合中的關鍵詞的詞頻;(2)生成兩個需求各自的詞頻向量(這個向量是n維的,形如:A[A1,A2,…,An]);(3)計算兩個向量的余弦相似度,文中取余弦值大于0.4作為相似參考。常用的計算余弦值的公式為:

(1)

已有數(shù)學家證明,計算余弦值的這種方法在計算n維向量中同樣適用。在步驟2中把每個需求的詞頻分別用n維向量表示,如:A=[A1,A2,…,An],B=[B1,B2,…,Bn],那么A與B的夾角θ的余弦值為:

(2)

通過這個公式可以求得兩個需求之間的相似度,如:R13:指導教師選擇評估某個學校的作文,R14:指導教師選擇評估某個年級的作文。提取關鍵詞得出R13[學校,選擇,教師,評估,指導];R14[年級,教師,選擇,評估,指導],詞頻向量A:[1,1,1,1,1,0];B[0,1,1,1,1,1],通過公式計算余弦值為0.8。

算法1:計算相似度算法偽代碼。

GetSimilarity(int[]wordA,int[] wordB) returns num

wordA;{*需求文本A的詞頻向量*}

wordB;{*需求文本B的詞頻向量*}

dividend;{需求文本A、B詞頻向量的乘積*}

divisor1;{需求文本A的詞頻向量值*}

divisor2 ;{需求文本B的詞頻向量值*}

num;{需求文本A、B的相似度*}

for i←0 to wordA.length

dividend←dividend+wordA[i] * wordB[i]

divisor1←divisor1+Math.pow(wordA[i], 2)

divisor2←divisor2+Math.pow(wordB[i], 2)

end for

num←dividend / (Math.sqrt(divisor1) * Math.sqrt(divisor2))

Return num

End GetSimilarity

2.4.3 關系抽取方法

若要判斷直接關系(如相似等),通過關鍵詞的共現(xiàn)程度采取集合運算即可;若兩個需求之間存在間接依賴關系,那么在這兩個需求中一定會出現(xiàn)兩個動詞,通過這兩個動詞判斷出這兩個需求是否存在上下文關系,如果不考慮動詞之間所存在的語義關系,會讓抽取結果不準確或遺漏。

因此,為了解決上述問題,文中采用基于潛在語義獲取需求依賴關系的方法,通過關鍵詞的共現(xiàn)程度聯(lián)系動詞的語義特征來判斷需求依賴關系?;?.2節(jié)提取關鍵詞之后,關系抽取方法分為四步(如圖2):

圖2 依賴關系抽取方法

(1)抽取名詞。將分詞中的名詞抽取放在集合A1、B1中;(2)判斷名詞有無交集。若集合有交集[名詞有一致的部分-主語],則進行第3步;(3)抽取動詞。抽取的動詞放在集合A2、B2中;(4)判斷關系。通過在自定義的潛在語義關系詞典中,查找集合A2中動詞對應的關系詞C;若關系詞C存在集合B2中的動詞,則通過關系詞判定另兩個需求之間存在何種關系,最后確定依賴關系。為了證明文中方法的有效性,文獻[5]中基于需求文本提到的依賴關系被用來進行對比實驗,并對文獻[5]的需求依賴關系做自動抽取。

算法2:關系抽取算法偽代碼。

Dependencies(StringxqTextA,String xqTextB) returns result

xqTextA;{*需求文本A*}

xqTextB;{*需求文本B*}

List termA = NULL;

{*需求文本A的分詞詞組*}

List ermB = NULL;

{*需求文本B的分詞詞組*}

List NListTermA= NULL;

{*需求文本A的名詞集合*}

List NListTermB = NULL;

{*需求文本B的名詞集合*}

List VListTermA= NULL;

{*需求文本A的動詞集合*}

List VListTermB = NULL;

{*需求文本B的動詞集合*}

Boolean Nend = false;{*名詞是否匹配成功*}

Stringresult = NULL;{*需求依賴關系*}

termA= HanLP.segment(xqTextA);

termB= HanLP.segment(xqTextB);

for i←0 to term[A/B].size()

{*通過詞性標注n抽取termA,termB的名詞集合*}

if(term[i].nature.startsWith("n") = true) then

NListTerm[A/B].add(term[i].word)

end if

end for

for j←0 to NListTermA.size(){**}

if(NListTermB.contains(NListTermA[j])=true)

{*名詞匹配成功的話獲取動詞,之后可以根據(jù)語義詞庫獲取需求依賴關系*}

Nend=true;

for i←0 to term[A/B].size()

{*同理通過詞性標注v抽取termA,termB的動詞集合*}

if(term[i].nature.startsWith("v") = true) then

NListTerm[A/B].add(term[i].word)

end if

end for

Break;

end if

end for

if Nend == true{*根據(jù)語義詞庫獲取需求依賴關系*}

for i ← 0 to VListTermA.size()

for j ← 0 to VListTermB.size()

if((VListTermA[i],語義詞庫).contains

(VListTermB[j])) then

result ← 關系類型

end if

end for

end for

end if

Return result

End Dependencies

3 系統(tǒng)實現(xiàn)和實例驗證

3.1 實驗驗證和相關工作對比

3.1.1 實驗驗證

為證明該方法的可行性,文中采用如下評測標準:準確率P、召回率R和F1度量值,其中準確率P用來表示抽取結果中正確標注為給定關系類型所占的比率,召回率R表示相對于測試數(shù)據(jù)集抽取結果中正確給出關系類型所占的比率,F(xiàn)1度量值表示度量實驗的準確性。針對需求依賴關系抽取的結果,具體評價公式為:

P=(抽取結果中正確標注為給定關系類型的需求對的個數(shù))/(結果中標有存在給定關系類型的需求對總個數(shù))

(3)

R=(抽取結果中正確標注為給定關系類型的需求對的個數(shù))/(測試數(shù)據(jù)集中所有存在關系的需求對

總個數(shù)

(4)

(5)

文中測試了三個數(shù)據(jù)集來驗證方法的可行性,分別是文獻[2]、文獻[5]和文獻[6]中的需求文本,結果如表2所示。

表2 實驗結果 %

如表2所示,無論準確率還是召回率的均值均在70%以上,且文本一和文本二的準確率和召回率均較高,說明該方法是可行的。文本三的召回率只有50%,并不高,說明當前系統(tǒng)在關鍵詞的語義上處理得并不是很準確,主要原因在于文本三的需求文本采用文獻[6]的英文需求文本翻譯而來,在一些詞匯和句式上處理不準確,如一個英文單詞可能對應多個漢語釋義,在系統(tǒng)提取關鍵詞對比時匹配不到相同的關鍵詞而引起誤差。

3.1.2 相關工作對比

筆者分別對三個領域的需求文本做了實驗并與專家抽取的關系作對比,分別統(tǒng)計需求和需求間關系識別結果,其對比數(shù)據(jù)如表3所示。為了更直觀地表示文本一需求之間的依賴關系,圖3給出了文本一案例對比的需求依賴關系圖。

圖3 文本一需求依賴關系對比

由于文中是基于中文需求,和國外相關工作使用同一數(shù)據(jù)集作對比時有一定偏差,同義詞太多,系統(tǒng)無法正確做出判斷,導致了一些關系抽取的誤差。但從實驗結果來看,文中方法準確率較高,有一定的可用性。同時,表4給出了文中方法在不同關系類型抽取上的性能分析數(shù)據(jù)。從表3的效率以及表4的數(shù)據(jù)來看,文中在加入領域詞匯以及定義語義詞庫這兩大特征后,其效率以及各方面性能百分比都較高,從一定程度上證明了文中方法的可行性及可靠性。圖4表示了在不同領域上文中方法抽取結果的數(shù)據(jù)分析。

表3 相關工作對比

表4 文中方法在不同關系類型抽取上的性能 %

圖4 不同領域文中方法的數(shù)據(jù)分析

3.2 系統(tǒng)實現(xiàn)

使用servlet+jsp技術設計并實現(xiàn)了一個針對中文自然語言需求文本的依賴關系抽取系統(tǒng),對系統(tǒng)中用到的方法中的各個步驟進行了支持。該系統(tǒng)主要由需求文本添加、文本相似度、文本查詢以及需求依賴關系顯示4個模塊組成,想要查詢的需求對象與哪些需求有關并獲取需求之間的關系類型都可以在點擊此需求時顯示,頁面如圖5所示。

圖5 系統(tǒng)實現(xiàn)界面

4 結束語

文中基于領域知識和語義相結合的方法實現(xiàn)了對需求依賴關系的自動化抽取,首先對已有的分詞工具進行改進,其次提取關鍵詞,對關鍵詞集合里的詞性作集合判斷,聯(lián)系潛在的語義判斷需求依賴關系,最后通過系統(tǒng)證明方法的可用性,不僅對定義的幾種關系進行自動獲取,同時對參考文獻中定義的關系也進行了實現(xiàn)并與之結果進行比較得出該方法的優(yōu)點與不足。該方法的優(yōu)勢在于:(1)基于關鍵詞,不同關系上對關鍵詞處理可能不同,使結果更可信;(2)添加了一些領域詞匯,消除了自然語言固有的二義性;(3)建立語義詞庫表。根據(jù)用戶需求的特點,設計關系詞庫表,定義各個詞匯之間的語義關系,使結果更準確;(4)自動抽取關系。以便于在需求量巨大的時候可以節(jié)省人力物力,具有更高的效率。不足之處在于包含語義的詞庫添加上屬于人工添加并且僅僅是基于特定領域上,測試集越多,需要的人力資源也就越大,未來將在這方面以及需求變更上做進一步研究。

猜你喜歡
詞庫分詞語義
真實場景水下語義分割方法及數(shù)據(jù)集
分詞在英語教學中的妙用
一“吃”多用
結巴分詞在詞云中的應用
結巴分詞在詞云中的應用
輸入法詞庫乾坤大挪移
漢語依憑介詞的語義范疇
初探《計算機專業(yè)英語》教學
將用戶詞庫快速導入搜狗五筆詞庫
聚焦現(xiàn)在完成進行時
郑州市| 盈江县| 根河市| 佛坪县| 横山县| 醴陵市| 广德县| 平远县| 英吉沙县| 铜川市| 新沂市| 保靖县| 玉门市| 耿马| 墨玉县| 永新县| 云梦县| 丹江口市| 武鸣县| 大新县| 泰和县| 任丘市| 清水县| 江川县| 舞钢市| 宁城县| 班戈县| 顺昌县| 望都县| 上饶县| 宝兴县| 德令哈市| 惠安县| 湘乡市| 安宁市| 友谊县| 古蔺县| 台山市| 汕尾市| 克东县| 视频|