本發明涉及人機交互技術領域,尤其涉及用于評價知識庫中擴展問的擴展問質量的方法和裝置。
背景技術:
人機交互是研究系統與用戶之間的交互關系的科學。系統可以是各種各樣的機器,也可以是計算機化的系統和軟件。例如,通過人機交互可以實現各種人工智能系統,例如,智能客服系統、語音控制系統等等。人工智能語義識別是人機交互的基礎,其能夠對人類語言進行識別,以轉換成機器能夠理解的語言。
智能問答系統是人機交互的一種典型應用,其中當用戶提出問題后,智能問答系統給出該問題的答案。為此,智能問答系統中有一套知識庫,里面有大量的問題和與每個問題相對應的答案。智能問答系統首先需要識別用戶所提出的問題,即從知識庫中找到與該用戶問題所對應的問題,然后找出與該問題相匹配的答案。
知識庫中的基本知識點最原始和最簡單的形式就是平時常用的faq,一般的形式是“問-答”對。在本發明中,“標準問”是用來表示某個知識點的文字,主要目標是表達清晰,便于維護。例如,“彩鈴的資費”就是表達清晰的標準問描述。這里的“問”不應被狹義地理解為“詢問”,而應廣義地來理解一“輸入”,該“輸入”具有對應的“輸出”。例如,對于用于控制系統的語義識別而言,用戶的一個指令,例如“打開收音機”也應可以被理解為是一個“問”,此時對應的“答”可以是用于執行相應控制的控制程序的調用。
用戶在向機器輸入時,最理想的情況是使用標準問,則機器的智能語義識別系統馬上能夠理解用戶的意思。然而,用戶往往并非使用的是標準問,而是標準問的一些變形的形式。例如,若對于收音機的電臺切換的標準問形式是“換一個電臺”,那么用戶可能使用的命令是“切換一個電臺”,機器也需要能夠識別用戶表達的是同一個意思。
因此,對于智能語義識別而言,知識庫里需要有標準問的擴展問,該擴展問與標準問表達形式有略微差異,但是表達相同的含義。在用戶輸入用戶問句后,主要依靠擴展問來實現用戶問句與標準問的匹配。
作為示例,可以將用戶問句與知識庫中所有標準問的所有擴展問執行語義相似度計算,找出與該用戶問句具有最高語義相似度的擴展問,若該最高語義相似度高出系統所設的閾值,則該擴展問所對應的標準問被認為是與該用戶問句相匹配的標準問,進而將該標準問所對應的知識點中的答案反饋給用戶。另一方面,若計算出的該最高語義相似度低于系統所設的該閾值,則認為標準問匹配失敗。此時,可向用戶反饋語義識別失敗,提示用戶可再次輸入。
由此,擴展問的質量至關重要。目前人工智能領域主要還是依靠人工整理擴展問的方式,因為整理的內容多,測試中一直存在效率和效果不能兼得的問題。即如果抽測的內容少,結果的隨機性就大,如果抽測的內容多,則相當于測試人員重做知識庫。
因此,一種高效地評價擴展問質量的方案是本領域所希望的。
技術實現要素:
以下給出一個或多個方面的簡要概述以提供對這些方面的基本理解。此概述不是所有構想到的方面的詳盡綜覽,并且既非旨在指認出所有方面的關鍵性或決定性要素亦非試圖界定任何或所有方面的范圍。其唯一的目的是要以簡化形式給出一個或多個方面的一些概念以為稍后給出的更加詳細的描述之序。
根據本發明的一方面,提供了一種用于評價知識庫中擴展問的擴展問質量的方法,該知識庫包括多個標準問,每個標準問具有關聯的多個擴展問,每個擴展問是相應標準問的相似問法,該方法包括:對各個標準問下的擴展問執行不預設聚類數量的聚類處理,以將每個標準問下的擴展問聚類為多個聚類;基于聚類的數目確定擴展問復雜度;以及將擴展問復雜度與復雜度對照表相對照以獲得擴展問質量信息。
根據本發明的另一方面,提供了一種計算機設備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,該處理器執行該計算機程序時實現上述方法的步驟。
根據本發明的另一方面,提供了一種計算機可讀存儲介質,其上存儲有計算機程序,該計算機程序被處理器執行時實現上述方法的步驟。
根據本發明的另一方面,提供了一種用于評價知識庫中擴展問的擴展問質量的裝置,該知識庫包括多個標準問,每個標準問具有關聯的多個擴展問,每個擴展問是相應標準問的相似問法,該裝置包括聚類模塊,用于對各個標準問下的擴展問執行不預設聚類數量的聚類處理,以將每個標準問下的擴展問聚類為多個聚類;復雜度確定模塊,用于基于聚類的數目確定擴展問復雜度;以及質量確定模塊,將擴展問復雜度與復雜度對照表相對照以獲得擴展問質量信息。
本發明中從另一個角度——擴展問的復雜程度,來判斷知識庫的質量。即在編輯不是刻意出錯的前提下,通過自動檢測擴展問的有效問法數量,來判斷編輯的“有效工作量”,從而判斷知識庫的質量。在本發明中,對擴展問進行聚類處理,每一個聚類可以代表一種有效問法,因此,基于聚類的數目可以確定擴展問的復雜度,進而判斷擴展問質量。以此方式,能夠代替人工地對擴展問評估,極大地提高了評估效率。
附圖說明
在結合以下附圖閱讀本公開的實施例的詳細描述之后,能夠更好地理解本發明的上述特征和優點。在附圖中,各組件不一定是按比例繪制,并且具有類似的相關特性或特征的組件可能具有相同或相近的附圖標記。
圖1是示出了根據本發明的用于評價知識庫中擴展問的擴展問質量的方法的流程圖;
圖2是示出了根據本發明的一方面的對各個標準問下的擴展問執行聚類處理的方法的流程圖;
圖3示出了根據本發明的具體實施例的用于對各個標準問下的擴展問執行聚類處理的方法的流程圖;
圖4是示出了根據本發明的用于評價知識庫中擴展問的擴展問質量的裝置的框圖;以及
圖5是示出了根據本發明的一方面的聚類模塊的框圖。
具體實施方式
以下結合附圖和具體實施例對本發明作詳細描述。注意,以下結合附圖和具體實施例描述的諸方面僅是示例性的,而不應被理解為對本發明的保護范圍進行任何限制。
實踐中,擴展問的一個形式是普通問句形式的相似問句。擴展問的另一種形式是語義表達式。一個標準問可以由若干語義表達式來表征。采用語義表達式進行標準問匹配效果較好。
語義表達式主要由詞和詞類構成,其核心依賴于“詞類”,詞類簡單的理解即為一組有共性的詞,這些詞在語義上可以相似也可以不相似,這些詞也可以被標注為重要或不重要。詞類是對一組相關詞的匯總,詞類由詞類名和一組相關詞所組成。詞類名是在這組相關詞中具有標簽作用的詞,即詞類的代表。一個詞類中至少包含一個詞(即詞類本身)。
語義表達式與用戶問句關系與傳統的模板匹配有了很大的不同,在傳統模板匹配中,模板和用戶問句只是匹配與未匹配的關系,而語義表達式與用戶問句之間關系是通過量化的值(相似度)來表示,同時這個量化的值與相似問句和用戶問句之間的相似度是可以互相比較的。
以下說明語義表達式的具體組成和符號的表示。為區分表達式中的詞與詞類,規定詞類必須出現在方括號“[]”中,方括號中出現的詞類一般為“狹義詞類”,但是也可通過配置系統參數以支持“廣義詞類”。詞類是按照詞的語義進行劃分的,把一組相關的詞組織在一起形成一個樹狀結構的詞類庫,在這個樹狀結構中的任意一個非葉子結點都稱作一個詞類(廣義詞類),其中直接包含詞的第一級詞類稱為狹義詞類。
下面是一些簡單表達式的示例:
[飛信][如何][開通]
[介紹][彩信][業務]
[飛信]的[登錄][方法]
[來電提醒][如何][收費]
從人工測試擴展問質量的工作中,可以得出如下經驗,如果擴展問都很相似,數量再多也沒多大效果,一個熟練的編輯,可以迅速圍繞一個標準問變化出字面上類似的擴展問,主要的難度在那些意思相近,但文字差距大的問法上,而這樣的問法一旦被編輯發現,則可以迅速變化出文字相似的擴展問。
本發明中從另一個角度——擴展問的復雜程度,來判斷知識庫的質量。即在編輯不是刻意出錯的前提下,通過自動檢測擴展問的有效問法數量,來判斷編輯的“有效工作量”,從而判斷知識庫的質量。具體而言,在本發明中,對擴展問進行聚類處理,每一個聚類可以代表一種有效問法,因此,基于聚類的數目可以確定擴展問的復雜度,進而判斷擴展問質量。
圖1是示出了根據本發明的用于評價知識庫中擴展問的擴展問質量的方法100的流程圖。如圖1所示,方法200可包括如下步驟:
步驟110,對各個標準問下的擴展問執行不預設聚類數量的聚類處理,以將每個標準問下的擴展問聚類為多個聚類。
聚類處理可以采用任何已知的算法,例如birch算法、k-means算法、dbscan算法,此處執行的聚類算法均為不預設聚類數量的。例如:可以采用對k-means算法做如下改進得到不預設聚類數量的聚類結果。
獲取語料數據,提取其中的問句信息;
對問句信息進行預處理和分詞處理,得到問句信息的特征詞;
獲取特征詞的詞向量,并根據詞向量構造問句信息的句向量;
根據相似度計算對問句信息進行聚類處理,聚類處理包括:分別獲取第m個問句信息的句向量與已聚類的k個問句信息組的句向量平均值之間的最大相似度值,當最大相似度值大于預設值時,將第m個問句信息聚類到最大相似度值對應的問句信息組中;當最大相似度值小于預設值時,將第m個問句信息作為第k+1個問句信息組,k小于或等于m-1。
上述方法采用改進的k-means算法實現問句的聚類:改進的k-means算法避免了傳統的k-means算法中k值選擇難的問題。該算法是指對問句依次進行聚類;k值從1開始遞增,并且在此過程中不斷更新中心點來實現整個聚類。聚類處理具體包括:
對t個句向量qt進行聚類,其中t≥m,m≥2;其中,t個句向量為:q1,q2,…,qt。
初始k值、中心點pk-1、以及聚類問題集{k,[pk-1]},其中,k表示聚類的類別數,k的初始值為1,中心點pk-1的初始值為p0,p0=q1,q1表示第1個句向量,聚類問題集的初始值為{1,[q1]};
依次對剩下的qt進行聚類,計算當前句向量與每個聚類問題集的中心點的相似度,如果當前句向量與某個聚類問題集的中心點的相似度大于或等于預設值,則將當前句向量聚類到相應的聚類問題集中,保持k值不變,將相應的中心點更新為聚類問題集中所有句向量的向量平均值,相應的聚類問題集為{k,[句向量的向量平均值]};如果當前句向量與所有聚類問題集中的中心點的相似度均小于預設值,則令k=k+1,增加新的中心點,新的中心點的值為當前句向量,并增加新的聚類問題集{k,[當前句向量]}。
下面以對q2聚類進行舉例說明:計算q2與q1的語義相似度i,若相似度i大于0.9(根據需求設定預設值),則認為q2和q1屬于同一個類,此時k=1不變,p0更新為q1和q2的向量平均值,聚類的問題集為{1,[q1,q2]};若相似度i不滿足要求,則q2和q1屬于不同的類,此時k=2,p0=q1,p1=q2,聚類的問題集為{1,[q1]},{2,[q2]}。
采用上述方法依次對剩余其他問句進行聚類完成的同時可以得到k最終值。
也可以采用本發明所提出的一種聚類方案,如下文詳細描述的。
步驟120,基于聚類的數目確定擴展問復雜度。
通過聚類處理,每個標準問的擴展問被分為了一定數目的聚類。聚類的數目可以被用作確定擴展問復雜度的依據。
在一實例中,統計所有標準問的聚類總數,以及計算聚類總數與標準問總數的比值以作為整體擴展問復雜度。在另一實例中,將每個標準問自身的聚類數目作為該標準問的個體擴展問復雜度。
步驟130,將擴展問復雜度與復雜度對照表相對照以獲得擴展問質量信息。
復雜度對照表中記載了復雜度數值及相對應的擴展問質量指數以表示相應的擴展問質量信息。例如,復雜度對照表的復雜度數值包括多個區間,復雜度數值越大的區間指示越優良的擴展問質量信息。
在評價某一個標準問的個體擴展問質量的實例中,將各個標準問的個體擴展問復雜度與復雜度對照表相對照以獲得每個標準問的個體擴展問質量信息。
在評價知識庫中所有標準問的擴展問質量的實例中,將上述整體擴展問復雜度與復雜度對照表相對照以獲得所有標準問的整體擴展問質量信息。
在上述聚類處理中,除了可以采用常規的birch算法、k-means算法、dbscan算法外,本發明也提出了一種新的聚類方式。
如前所述,聚類的目的是找出彼此之間具有相似性的擴展問,一個聚類可以表示問法相近的多個擴展問,這與語義表達式的作用類似。一個語義表達式可以視為多個問法的聚類。因此,可以基于擴展問建立新的語義表達式以作為聚類,即每個新生成的語義表達式作為原始擴展問的一個聚類。
在本發明中,通過比較多個擴展問的分詞結果,取交集的方式,獲取最短語義表達式;通過跑錯,驗證語義表達式的有效性,并以語義表達式的有效性,篩選繼續生成加長語義表達式所用的普通相似問句,并淘汰無效的語義表達式;通過多次反復循環,獲得最終的語義表達式。
圖2是示出了對各個標準問下的擴展問執行聚類處理的方法200的流程圖。如圖2所示,方法200可包括如下步驟:
步驟210:數據獲取步驟
在該步驟中,針對每個標準問獲得與其多個擴展問相應的多個擴展問分詞結果,其中每個擴展問分詞結果由對應擴展問的各詞類或各單詞所屬的詞類組成。
如前所述,擴展問包括兩種形式,一種是普通問句形式,一種是語義表達式形式。如果擴展問是普通問句形式,則數據獲取步驟可包括兩個部分,首先是對每個標準問的每個擴展問執行分詞處理,如前所述,每個標準問具有與之相關聯的多個擴展問,對每個擴展問執行分詞處理。這里的分詞處理可采用任何已知的分詞算法來完成,對此不再贅述。
分詞后,每個標準問的每個擴展問被分為多個單詞,然后每個單詞由該單詞所屬的詞類替換。由此,標準問的每個擴展問對應有一個分詞結果,由此每個標準問獲得與其多個擴展問相應的多個擴展問分詞結果。
如果擴展問本身就是語義表達式形式,則擴展問本身就是由詞類和詞組成,則分詞本身就可以獲得多個詞類。
作為示例,一個標準問的6個擴展問的6個分詞結果可以為:
[a][b][c][d][e][f][g]
[a][b][k][j][l][m]
[a][c][m][q]
[d][k][m][q]
[a][b][c][d]
[a][b][d]
其中的[a]、[b]、[c]、[d]、[e]、[f]、[g]、[h]、[j]、[k]都是分詞結果中的詞類。
步驟220:聚類創建步驟
在該步驟中,針對每個標準問,從該標準問的多個擴展問分詞結果的交集中依據詞組出現的頻率選擇詞組以構成該標準問的至少一個聚類,每個詞組由預定數目個詞類組成。
在一實例中,針對每個標準問,從該標準問的多個擴展問分詞結果的交集中選擇出現頻率最高的詞組,將選出的詞組作為該標準問的一個聚類,然后從該標準問的未包括該詞組的擴展問分詞結果的交集中選擇出現頻率最高的詞組,將選出的詞組繼續作為該標準問的一個聚類,重復此過程直至該標準問下沒有其余的擴展問分詞結果或者剩余的擴展問分詞結果之間沒有達到該預定數目個詞類的交集。
剩余的擴展問分詞結果之間沒有達到該預定數目個詞類的交集,也就不再作為聚類的生成原料,這些擴展問分詞結果對應的擴展問直接作為擴展問在后續使用。
上述組成詞組的詞類的預定數目可以大于等于1。即,詞組也可以本身就是一個詞類。
以上述標準問的6個擴展問的6個分詞結果為例,假設組成每個詞組的詞類的預定數目為1,則該標準問的6個分詞結果的交集中:[a]出現5次,[b]出現4次,[c]出現3次,[d]出現3次……
則詞類[a]作為該標準問的聚類被保存。同時,未包括[a]的分詞結果僅為[d][k][m][q]。由于僅剩余一個分詞結果,也就不可能再存在交集,所以生成聚類的過程結束。
再假設該組成每個詞組的詞類的預定數目為2,則該標準問的6個分詞結果的交集中,[a][b]出現頻率最高,則將[a][b]作為該標準問的一個聚類。未包括[a][b]的兩個分詞結果為[a][c][m][q]和[d][k][m][q],它們之間的交集為[m][q],則[m][q]也被保存作為該標準問的聚類。即,在該預定數目為2的情況下,生成了兩個聚類[a][b]、和[m][q]。
依照上述過程針對每個標準問生成聚類。較優地是,在該聚類創建步驟中,按照復雜度由低到高的順序為各標準問創建聚類,在創建過程中,若為在后的標準問生成的聚類與在前的標準問的已生成聚類重復,則該重復的聚類不作為該在后的標準問的聚類保存。
假設針對前一個標準問創建的聚類包括[a][b],若在針對后續標準問生成的聚類也包括[a][b],則后續標準問的該聚類[a][b]不被保存。
實踐中,復雜度基于標準問的字數,字數越少復雜度越低。字數相同時,帶有“介紹”字樣,或“介紹”同義詞的標準問優先。
步驟230:檢測步驟
在此步驟中,針對所有標準問的所有擴展問,執行標準問匹配處理,對于為每個標準問創建的每個聚類,判斷該聚類是否被匹配至其標準問的至少一個擴展問,若是,則該聚類被標記為第一狀態,例如狀態true,否則被標記為第二狀態,例如狀態false。
實例中,針對每個擴展問,該執行標準問匹配處理包括將該擴展問與針對所有標準問生成的所有聚類執行語義相似度計算,并將該擴展問匹配至具有最高語義相似度且該最高語義相似度高于閾值的聚類。
此檢測步驟是對上述初步建立的各標準問的聚類進行“跑錯”的過程。此跑錯的核心就是以每個標準問自身相關聯的擴展問為測試樣例來測試先前為該標準問創建的聚類是否可行,換言之,就是標準問的擴展問是否能夠匹配至先前自動創建的聚類,進而由此匹配至該標準問。
如果標準問的至少一個擴展問能夠匹配至先前為該標準問創建的一個聚類,則認為該聚類是可用的,該聚類可被標記為狀態true。注意,針對某一標準問的某個擴展問的標準問匹配是在為所有標準問生成的所有聚類的范圍內來執行的,即將該擴展問不僅與該標準問的所有聚類執行語義相似度計算,而且還與其他標準問的所有聚類執行語義相似度計算。由此,對于某個標準問的某個擴展問而言,該擴展問可能會被定位匹配至其他標準問的某個聚類,換言之,對于某個標準問的某個聚類而言,該聚類可能與其他標準問的擴展問相匹配。
如果一個標準問的先前創建的某一個聚類,該標準問的所有的擴展問都未能與該聚類相匹配,則即使有其他標準問的擴展問定位匹配至該聚類也,認為該聚類是無效的。所有被認為無效的聚類可被標記為狀態false。
另一方面,在上述標準問匹配過程中,對于某個標準問的某個擴展問而言,若該擴展問被定位匹配至該標準問的任何一個聚類,則在一實例中可將這樣的擴展問記為第四狀態,例如狀態false;否則若該擴展問未被定位匹配至該標準問的任何一個聚類,例如匹配失敗(即未找到與之具有高于閾值語義相似度的聚類)或者被定位至其他標準問的某一個聚類(即與其他標準問的某一個聚類具有最大語義相似度,也稱之為被其他標準問的該聚類“搶”),則將該擴展問記為第三狀態,例如狀態true。
步驟240:刪除步驟
在此步驟中,刪除所有狀態為第二狀態,例如狀態false的聚類。
由此,為標準問所生成的聚類經刪除后剩余的聚類即為該標準問的有效的聚類。
在一實施例中,在執行步驟240刪除步驟之后,還包括步驟250:可再次針對所有標準問的所有擴展問,執行標準問匹配處理,然后若是有狀態為第三狀態的擴展問被匹配至與之相關聯的標準問所屬的聚類,則該擴展問的狀態由第三狀態改為第四狀態。這是因為先前狀態為false(即只會“搶”其他擴展問)的聚類被刪除之后,有可能一些標記為第三狀態(例如被“搶”)的擴展問有可能被觸發到自己對應的標準問下。
較優地,可循環執行所述聚類創建步驟、所述檢測步驟、和所述刪除步驟預定次數,其中在聚類創建步驟中用于組成詞組的詞類的所述預定數目隨著循環依次遞增,且在后續循環中只有狀態為true的擴展問參與聚類創建。
換言之,在下一次循環中,在執行聚類創建時,使用比上一次循環中加1的詞類數目來構建聚類。例如,假設循環執行3次,在第一次循環中,構成聚類的詞組由1個詞類組成;則在第二次循環中,構成聚類的詞組由2個詞類組成,在第三次循環中,構成聚類的詞組由3個詞類組成。
而且,后續循環中只有狀態為true的擴展問參與聚類創建。例如在第一次循環中,從一個標準問的多個擴展問分詞結果的交集中依據詞組出現的頻率選擇詞組以構成該標準問的至少一個聚類。但是如前所述,在第一次循環中經過檢測步驟之后,該標準問的一些擴展問的狀態為true,另一些狀態為false,則在第二次循環中,在執行聚類創建步驟時,僅使用狀態為true的擴展問創建聚類。具體而言,從該標準問的狀態為true的那些擴展問分詞結果的交集中依據詞組出現的頻率選擇詞組以構成該標準問的聚類。
經過預訂次數的這種循環,每次循環聚類的長度逐漸增加,為每個標準問創建出越來越準確、完善的聚類。圖3示出了根據本發明的具體實施例的用于對各個標準問下的擴展問執行聚類處理的方法的流程圖。
較佳地,如果以上述預訂次數的循環為一個例程,可重復執行此例程若干次,后續每次例程中,只有狀態為true的擴展問參與聚類創建。換言之,只有第一個例程的第一次循環中的聚類創建步驟是所有的擴展問參與聚類創建,在第一個例程的后續所有循環中以及在后續例程的所有循環中都是只有狀態為true的擴展問參與聚類創建。
最后,標記為true的擴展問可被加到對應標準問的“普通問句形式的擴展問”參與標準問匹配過程中的相似度計算。
上述循環和例程的執行如下:
步驟220~步驟240循環
i=i+1
}
k=k+1
}
其中,m為聚類長度下限;n為聚類長度上限;i為循環索引;j為例程執行次數,k為例程索引。
示例:
3條標準問:
開通彩鈴;取消彩鈴;介紹彩鈴,其對應的擴展問如下:
“開通彩鈴”的擴展問
我想用彩鈴
如何開通彩鈴
如何啟用彩鈴
幫我開通彩鈴
幫我啟用彩鈴
介紹一下如何開通彩鈴
介紹彩鈴的開通方法
“取消彩鈴”的擴展問
如何取消彩鈴
如何關閉彩鈴
幫我取消彩鈴
幫我關閉彩鈴
介紹一下如何取消彩鈴
介紹彩鈴的取消方法
我不想用彩鈴了
“介紹彩鈴”的擴展問
彩鈴是什么
幫我介紹一下彩鈴
介紹一下彩鈴
彩鈴?
設m=1,n=3,j=2
循環開始,i從下限1開始執行。
執行步驟120,生成聚類時,設定生成長度1,每條標準問都會生成聚類[彩鈴],因為執行時帶有“介紹”的標準問優先,所以,只有“介紹彩鈴”能夠保存模板[彩鈴],其他幾條因為保存時出現沖突,都不能保存聚類。這里的沖突即是指先前以有其他標準問保存了[彩鈴]作為其聚類,后續的標準問則不能再將已被保存為其他標準問的聚類保存作為自己的聚類。
執行步驟130,“介紹彩鈴”中擴展問“彩鈴?”能夠匹配聚類“[彩鈴]”,擴展問“彩鈴?”由此標記為“false”,聚類“[彩鈴]”標記為“true”。其他標準問下的擴展問都標記為“true”。
執行步驟140,沒有聚類被刪除,結果和上一步一樣。另一方面,如果沒有擴展問“彩鈴?”,則執行這一步時,聚類“[彩鈴]”會被刪掉。
第二次循環,i加1變成2
執行步驟120,三個標準問分別生成聚類:
“[開通][彩鈴]”、“[啟用][彩鈴]”
“[取消][彩鈴]”、“[關閉][彩鈴]”
“[介紹][彩鈴]”;
執行步驟130,“開通彩鈴”的擴展問“我想用彩鈴”、“介紹一下如何開通彩鈴”、“介紹彩鈴的開通方法”沒有匹配任何一個聚類,標記為“true”,其他擴展問標記為“false”,聚類“[開通][彩鈴]”、“[啟用][彩鈴]”標記為“true”;
“取消彩鈴”的擴展問“我不想用彩鈴了”、“介紹一下如何取消彩鈴”、“介紹彩鈴的取消方法”沒有匹配任何一個聚類,標記為“true”,其他擴展問標記為“false”,聚類“[取消][彩鈴]”、“[關閉][彩鈴]”標記為“true”;
“介紹彩鈴”的擴展問“彩鈴是什么”沒有匹配任何一個聚類,標記為“true”,其他擴展問標記為“false”,聚類“[介紹][彩鈴]”、“彩鈴”標記為true。
執行步驟140,沒有聚類被刪除,結果和上一步一樣。
第三次循環,i=3
執行120:“開通彩鈴”新增聚類[介紹][開通][彩鈴];
“取消彩鈴”新增聚類[介紹][取消][彩鈴];
“介紹彩鈴”沒有生成新模板。
執行步驟130:“我想用彩鈴”、“我不想用彩鈴了”、“彩鈴是什么”3個擴展問皆未能匹配各自的任何一個聚類,因此狀態還是“true”,其他擴展問都是“false”,所有聚類也都被各自標準問下的某一個或多個擴展問所匹配,所以狀態都是“true”。
執行步驟140,沒有聚類被刪除,結果和上一步一樣。
三次循環作為一個例程執行完畢后,執行下一個例程,直至j=2個例程執行完畢。最終,為這三個標準問分別生成了聚類如下:
“開通彩鈴”的聚類:“[開通][彩鈴]”、“[啟用][彩鈴]”、[介紹][開通][彩鈴];
“取消彩鈴”的聚類:“[取消][彩鈴]”、“[關閉][彩鈴]”、“[介紹][取消][彩鈴]”;
“介紹彩鈴”的聚類:“[介紹][彩鈴]”、“[彩鈴]”
另外,擴展問“我想用彩鈴”、“我不想用彩鈴了”、“彩鈴是什么”3可作為各自標準問的普通擴展問使用。此時利用所有擴展問作為測試樣例跑錯的正確率達到100%。
盡管為使解釋簡單化將上述方法圖示并描述為一系列動作,但是應理解并領會,這些方法不受動作的次序所限,因為根據一個或多個實施例,一些動作可按不同次序發生和/或與來自本文中圖示和描述或本文中未圖示和描述但本領域技術人員可以理解的其他動作并發地發生。
圖4是示出了根據本發明的用于評價知識庫中擴展問的擴展問質量的裝置400的框圖。如圖4所示,裝置400可包括聚類模塊410、復雜度確定模塊420、以及質量確定模塊430。
聚類模塊410可用于對各個標準問下的擴展問執行不預設聚類數量的聚類處理,以將每個標準問下的擴展問聚類為多個聚類。聚類模塊410可采用以下算法中的任一種來執行聚類處理:birch算法、k-means算法、dbscan算法,此處執行的聚類算法均為不預設聚類數量的。例如:可以采用對k-means算法做如下改進得到不預設聚類數量的聚類結果。
獲取語料數據,提取其中的問句信息;
對問句信息進行預處理和分詞處理,得到問句信息的特征詞;
獲取特征詞的詞向量,并根據詞向量構造問句信息的句向量;
根據相似度計算對問句信息進行聚類處理,聚類處理包括:分別獲取第m個問句信息的句向量與已聚類的k個問句信息組的句向量平均值之間的最大相似度值,當最大相似度值大于預設值時,將第m個問句信息聚類到最大相似度值對應的問句信息組中;當最大相似度值小于預設值時,將第m個問句信息作為第k+1個問句信息組,k小于或等于m-1。
上述方法采用改進的k-means算法實現問句的聚類:改進的k-means算法避免了傳統的k-means算法中k值選擇難的問題。該算法是指對問句依次進行聚類;k值從1開始遞增,并且在此過程中不斷更新中心點來實現整個聚類。聚類處理具體包括:
對t個句向量qt進行聚類,其中t≥m,m≥2;其中,t個句向量為:q1,q2,…,qt。
初始k值、中心點pk-1、以及聚類問題集{k,[pk-1]},其中,k表示聚類的類別數,k的初始值為1,中心點pk-1的初始值為p0,p0=q1,q1表示第1個句向量,聚類問題集的初始值為{1,[q1]};
依次對剩下的qt進行聚類,計算當前句向量與每個聚類問題集的中心點的相似度,如果當前句向量與某個聚類問題集的中心點的相似度大于或等于預設值,則將當前句向量聚類到相應的聚類問題集中,保持k值不變,將相應的中心點更新為聚類問題集中所有句向量的向量平均值,相應的聚類問題集為{k,[句向量的向量平均值]};如果當前句向量與所有聚類問題集中的中心點的相似度均小于預設值,則令k=k+1,增加新的中心點,新的中心點的值為當前句向量,并增加新的聚類問題集{k,[當前句向量]}。
下面以對q2聚類進行舉例說明:計算q2與q1的語義相似度i,若相似度i大于0.9(根據需求設定預設值),則認為q2和q1屬于同一個類,此時k=1不變,p0更新為q1和q2的向量平均值,聚類的問題集為{1,[q1,q2]};若相似度i不滿足要求,則q2和q1屬于不同的類,此時k=2,p0=q1,p1=q2,聚類的問題集為{1,[q1]},{2,[q2]}。
采用上述方法依次對剩余其他問句進行聚類完成的同時可以得到k最終值。
復雜度確定模塊420可基于聚類的數目確定擴展問復雜度,質量確定模塊430可將擴展問復雜度與復雜度對照表相對照以獲得擴展問質量信息。
在一實例中,復雜度確定模塊420可統計所有標準問的聚類總數并計算聚類總數與標準問總數的比值以作為整體擴展問復雜度,質量確定模塊430可將整體擴展問復雜度與復雜度對照表相對照以獲得所有標準問的整體擴展問質量信息。
在另一實例中,復雜度確定模塊420可將每個標準問自身的聚類數目作為該標準問的個體擴展問復雜度,質量確定模塊430可將每個標準問的個體擴展問復雜度與復雜度對照表相對照以獲得每個標準問的個體擴展問質量信息。
復雜度對照表的復雜度數值可包括多個區間,復雜度數值越大的區間指示越優良的擴展問質量信息。
圖5是示出了根據本發明的一方面的聚類模塊500的框圖。聚類模塊500可包括數據獲取模塊510、聚類創建模塊520、檢測模塊530、以及編輯模塊540。
數據獲取模塊510可用于針對每個標準問獲得與其多個擴展問相應的多個擴展問分詞結果,其中每個擴展問分詞結果由對應擴展問的各詞類或各單詞所屬的詞類組成。
聚類創建模塊520可針對每個標準問,從該標準問的多個擴展問分詞結果的交集中依據詞組出現的頻率選擇詞組以構成該標準問的至少一個聚類,每個詞組由預定數目個詞類組成。該預定數目可大于等于1。
作為實例,聚類創建模塊520可針對每個標準問,從該標準問的多個擴展問分詞結果的交集中選擇出現頻率最高的詞組,將選出的詞組作為該標準問的一個聚類,然后從該標準問的未包括該詞組的擴展問分詞結果的交集中選擇出現頻率最高的詞組,將選出的詞組繼續作為該標準問的一個聚類,重復此過程直至該標準問下沒有其余的擴展問分詞結果或者剩余的擴展問分詞結果之間沒有達到所述預定數目個詞類的交集。
剩余的擴展問分詞結果之間沒有達到所述預定數目個詞類的交集,也就不再作為聚類的生成原料,這些擴展問分詞結果對應的擴展問直接作為擴展問在后續使用。
作為示例,該復雜度可基于標準問的字數,字數越少復雜度越低。
較優地,聚類創建模塊520可按照復雜度由低到高的順序為各標準問創建聚類,在創建過程中,若為在后的標準問生成的聚類與在前的標準問的已生成聚類重復,則該重復的聚類不作為該在后的標準問的聚類保存。
檢測模塊530可針對所有標準問的所有擴展問,執行標準問匹配處理,對于為每個標準問創建的每個聚類,判斷該聚類是否被匹配至其標準問的至少一個擴展問,若是,則該聚類被標記為第一狀態,例如狀態true,否則被標記為第二狀態,例如狀態false。
作為實例,檢測模塊530可包括語義相似度計算單元531,針對每個擴展問,語義相似度計算單元531可將該擴展問與針對所有標準問生成的所有聚類執行語義相似度計算,并將該擴展問匹配至具有最高語義相似度且該最高語義相似度高于閾值的聚類。
此檢測步驟是對上述初步建立的各標準問的聚類進行“跑錯”的過程。此跑錯的核心就是以每個標準問自身相關聯的擴展問為測試樣例來測試先前為該標準問創建的聚類是否可行,換言之,就是標準問的擴展問是否能夠匹配至先前自動創建的聚類,進而由此匹配至該標準問。
如果標準問的至少一個擴展問能夠匹配至先前為該標準問創建的一個聚類,則認為該聚類是可用的,該聚類可被標記為狀態true。注意,針對某一標準問的某個擴展問的標準問匹配是在為所有標準問生成的所有聚類的范圍內來執行的,即將該擴展問不僅與該標準問的所有聚類執行語義相似度計算,而且還與其他標準問的所有聚類執行語義相似度計算。由此,對于某個標準問的某個擴展問而言,該擴展問可能會被定位匹配至其他標準問的某個聚類,換言之,對于某個標準問的某個聚類而言,該聚類可能與其他標準問的擴展問相匹配。
如果一個標準問的先前創建的某一個聚類,該標準問的所有的擴展問都未能與該聚類相匹配,則即使有其他標準問的擴展問定位匹配至該聚類也,認為該聚類是無效的。所有被認為無效的聚類可被標記為狀態false。
最后,編輯模塊540可刪除所有狀態為false的聚類。剩余的聚類即為獲得的有效聚類。
進一步地,檢測模塊530還可包括狀態標記單元532,用于在語義相似度計算單元531執行標準問匹配處理之后,對于每個標準問的每個擴展問,判斷該擴展問是否被匹配至與之相關聯的標準問所屬的聚類,若是將該擴展問標記為第四狀態,例如狀態false,否則若該擴展問未被定位匹配至該標準問的任何一個聚類,例如匹配失敗(即未找到與之具有高于閾值語義相似度的聚類)或者被定位至其他標準問的某一個聚類(即與其他標準問的某一個聚類具有最大語義相似度,也稱之為被其他標準問的該聚類“搶”),將該擴展問標記為第三狀態,例如狀態true。
在此實例中,聚類創建模塊520、檢測模塊530、和編輯模塊540依次循環執行所述聚類創建、所述檢測、和所述刪除的步驟預定次數,其中,聚類創建模塊530用來組成所述詞組的詞類的所述預定數目隨著循環依次遞增,換言之,在下一次循環中,在執行聚類創建時,使用比上一次循環中加1的詞類數目來構建聚類。例如,假設循環執行3次,在第一次循環中,構成聚類的詞組由1個詞類組成;則在第二次循環中,構成聚類的詞組由2個詞類組成,在第三次循環中,構成聚類的詞組由3個詞類組成。且在后續循環中只有狀態為true的擴展問被所述聚類創建模塊用來參與聚類創建。
經過預訂次數的這種循環,每次循環聚類的長度逐漸增加,為每個標準問創建出越來越準確、完善的聚類。
在每個循環周期中,在編輯模塊540執行刪除的步驟之后,檢測模塊530可立即再次針對所有標準問的所有擴展問,執行標準問匹配處理,然后若是有狀態為第三狀態的擴展問被匹配至與之相關聯的標準問所屬的聚類,則其狀態被狀態標記單元532由第三狀態改為第四狀態。這是因為先前狀態為false(即只會“搶”其他擴展問)的聚類被刪除之后,有可能一些標記為第三狀態(例如被“搶”)的擴展問有可能被觸發到自己對應的標準問下。
在一進一步的實例中,以該預定次數的循環為一個例程,聚類創建模塊520、檢測模塊530、和編輯模塊540重復執行所述例程若干次,后續每次例程中,只有狀態為true的擴展問參與聚類創建。
本發明還提供了一種計算機設備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,該處理器執行所述計算機程序時實現上述方法中的步驟。
本發明還提供了一種計算機可讀存儲介質,其上存儲有計算機程序,該計算機程序被處理器執行時實現上述方法中的步驟。
其中,計算機設備、計算機可讀存儲介質以及用于評價知識庫中擴展問的擴展問質量的裝置的具體實現方式和技術效果均可參見上述用于評價知識庫中擴展問的擴展問質量的方法的實施例,在此不再贅述。
根據本發明的方案,通過對標準問的擴展問進行聚類,以聚類的數目作為擴展問的復雜度依據,并由此來評價擴展問質量。以此方式,能夠代替人工地對擴展問評估,極大地提高了評估效率。
本領域技術人員將進一步領會,結合本文中所公開的實施例來描述的各種解說性邏輯板塊、模塊、電路、和算法步驟可實現為電子硬件、計算機軟件、或這兩者的組合。為清楚地解說硬件與軟件的這一可互換性,各種解說性組件、框、模塊、電路、和步驟在上面是以其功能性的形式作一般化描述的。此類功能性是被實現為硬件還是軟件取決于具體應用和施加于整體系統的設計約束。技術人員對于每種特定應用可用不同的方式來實現所描述的功能性,但這樣的實現決策不應被解讀成導致脫離了本發明的范圍。
結合本文所公開的實施例描述的各種解說性邏輯模塊、和電路可用通用處理器、數字信號處理器(dsp)、專用集成電路(asic)、現場可編程門陣列(fpga)或其它可編程邏輯器件、分立的門或晶體管邏輯、分立的硬件組件、或其設計成執行本文所描述功能的任何組合來實現或執行。通用處理器可以是微處理器,但在替換方案中,該處理器可以是任何常規的處理器、控制器、微控制器、或狀態機。處理器還可以被實現為計算設備的組合,例如dsp與微處理器的組合、多個微處理器、與dsp核心協作的一個或多個微處理器、或任何其他此類配置。
結合本文中公開的實施例描述的方法或算法的步驟可直接在硬件中、在由處理器執行的軟件模塊中、或在這兩者的組合中體現。軟件模塊可駐留在ram存儲器、閃存、rom存儲器、eprom存儲器、eeprom存儲器、寄存器、硬盤、可移動盤、cd-rom、或本領域中所知的任何其他形式的存儲介質中。示例性存儲介質耦合到處理器以使得該處理器能從/向該存儲介質讀取和寫入信息。在替換方案中,存儲介質可以被整合到處理器。處理器和存儲介質可駐留在asic中。asic可駐留在用戶終端中。在替換方案中,處理器和存儲介質可作為分立組件駐留在用戶終端中。
在一個或多個示例性實施例中,所描述的功能可在硬件、軟件、固件或其任何組合中實現。如果在軟件中實現為計算機程序產品,則各功能可以作為一條或更多條指令或代碼存儲在計算機可讀介質上或藉其進行傳送。計算機可讀介質包括計算機存儲介質和通信介質兩者,其包括促成計算機程序從一地向另一地轉移的任何介質。存儲介質可以是能被計算機訪問的任何可用介質。作為示例而非限定,這樣的計算機可讀介質可包括ram、rom、eeprom、cd-rom或其它光盤存儲、磁盤存儲或其它磁存儲設備、或能被用來攜帶或存儲指令或數據結構形式的合意程序代碼且能被計算機訪問的任何其它介質。任何連接也被正當地稱為計算機可讀介質。例如,如果軟件是使用同軸電纜、光纖電纜、雙絞線、數字訂戶線(dsl)、或諸如紅外、無線電、以及微波之類的無線技術從web網站、服務器、或其它遠程源傳送而來,則該同軸電纜、光纖電纜、雙絞線、dsl、或諸如紅外、無線電、以及微波之類的無線技術就被包括在介質的定義之中。如本文中所使用的盤(disk)和碟(disc)包括壓縮碟(cd)、激光碟、光碟、數字多用碟(dvd)、軟盤和藍光碟,其中盤(disk)往往以磁的方式再現數據,而碟(disc)用激光以光學方式再現數據。上述的組合也應被包括在計算機可讀介質的范圍內。
提供對本公開的先前描述是為使得本領域任何技術人員皆能夠制作或使用本公開。對本公開的各種修改對本領域技術人員來說都將是顯而易見的,且本文中所定義的普適原理可被應用到其他變體而不會脫離本公開的精神或范圍。由此,本公開并非旨在被限定于本文中所描述的示例和設計,而是應被授予與本文中所公開的原理和新穎性特征相一致的最廣范圍。