1. 程式人生 > >NLP之人機對話系統

NLP之人機對話系統

人機對話系統

人機對話系統又稱口語對話系統(spoken dialogue system)。一個典型的人機對話系統主要包括如下6個技術模組:①語音識別器(speech recognizer);②語言解析器(language parser);③問題求解(problem resolving)模組;④語言生成器(language generator);⑤對話管理(dialogue management)模組;⑥語音合成器(speech synthesizer)。

語音識別模組實現使用者輸入語音到文字的識別轉換,識別結果一般以得分最高的前n(n≥1)個句子或詞格(word lattice)形式輸出。語言解析模組對語音識別結果進行分析,獲得給定輸入的內部表示。語言生成模組根據解析模組得到的內部表示,在對話管理機制的作用下生成自然語言句子。語音合成模組將生成模組生成的句子轉換成語音輸出。問題求解模組依據語言解析器的分析結果進行問題的推理或查詢,求解使用者問題的答案。對話管理模組是系統的核心,一個理想的對話管理器應該能夠基於對話歷史排程人機互動機制,輔助語言解析器對語音識別結果進行正確的理解,為問題求解提供幫助,並指導語言的生成過程。可以說,對話管理機制是人機對話系統的中心樞紐。

1.口語解析器

對於一個基於中間表示的口語翻譯系統和人機對話系統來說,口語解析器的作用可以簡要地用圖16-1表示。語音識別模組首先將使用者語音轉換成文字串,口語解析模組對其分析、理解,並將其轉換成中間表示格式。在口語翻譯系統中,語言生成器基於中間表示生成目標語言句子,而在人機對話系統中,語言生成器在對話管理模組的指導和控制下生成系統響應的句子。口語翻譯系統中的語音合成器生成目標語言的語音,而對話系統中的語音合成器生成使用者語言的語音。

接下來介紹兩種面向中間表示格式的漢語口語解析方法,一種是規則方法和HMM統計方法相結合的解析方法;另一種是基於語義分類樹的解析方法。(中間表示採用C-STAR定義的IF格式)

1.1中間表示格式

IF格式的理論基礎是對話行為(dialogue acts, DAs)理論,其基本觀點認為,語言不只用來陳述事實,而且還附載著說話者的意圖。

一個IF表示式通常由說話者(speaker)、話語行為(speech act)、概念序列(concept)和引數-屬性值對的列表4個部分組成:
Speaker:Speech-Act[+Concept]*[(Argument=Value[,Argument=Value]*)]
其中,概念序列與話語行為合稱為領域行為(domain action)。
星號“*”表示它所限定的左邊成分可以重複出現多次。 

(1)說話人標誌(Speaker):表示說話人的身份。在IF中只有兩種說話人身份,一種是顧客(client),用“c”表示,另一種是代理(agent),用“a”表示。
(2)語句意圖或稱話語行為或言語行為(Speech-Act):表示“詢問資訊、動作請求、返回資訊”等各種話語意圖。
如“give-information”表示提供某種資訊;“pardon”表示請求說話人重複剛才所說的內容。
(3)概念(Concept):表示句子的主題(topic)概念。
如“reservation”表示“預訂”,“room”表示“房間”等。各個概念之間按照一定的規則可以組合成更加廣泛的主題。概念之間用“+”連線,表示並列關係,如“reservation+room”表示“預訂房間”。
(4)具體引數(Argument):表示句子的具體內容。例如,房間個數、房間標準等。每個具體引數可以有不同的屬性值(value),取值可以是原子值、引數-屬性值對、或幾個原子值按一定關係的組合(常對應句子中的聯合結構)。
例如,引數“room-spec”表示屬性“房間種類”,它的取值可以是“single(單間)”、“double(雙人間)”等。

例: 明天我想預訂一個單人間。
IF:c:give-information+reservation+room(room-spec=(room-type=single, quantity=1), reservation-spec=(time=(relative-time=tomorrow)))
該IF的含義為:說話人為“c”,該句子的意圖是提供資訊,主題概念為“預訂房間”,關於“房間”的具體資訊由一組“屬性-值”對描述:房間型別(room-type)為單人間(single),數量(quantity)為1;“預訂”的具體要求通過“相對時間(relative-time)”這一引數描述,引數值取“明天(tomorrow)”。

1.2基於規則和HMM的統計解析方法

本方法的基本思想可以用圖表示。對於一個來自語音識別器的待解析句子,首先由詞彙分類模組對其詞彙進行詞義分類,即把句子中的每一個詞對映到相應的詞義類中去。然後,語義組塊分析器從句子對應的詞義類序列中分析出語義組塊,組塊分析器輸出的是一個語義組塊序列。接下來,統計解析模組從語義組塊序列分析出句子IF表示的主要框架。語義組塊解釋模組把各個語義組塊解釋為相應的IF表示式片段。最後,經過對上述兩部分的合併,得到最終的IF表示式。

下面具體介紹各個部分的實現方法。1,詞彙分類:根據詞彙的語義功能,把每個詞彙劃分到不同的類。為此,我們定義了一個詞彙語義類詞典。在分類時參考了《同義詞詞林》和IF的相關規範。其分類依據是詞彙在句子中的語義功能,語義功能相同的詞彙歸為一類。2.語義組塊分析: 語義組塊是指口語句子中不依賴於其他詞彙而能表示某種特定語義的最小部分。同時,我們根據語義組塊具體的意義,對語義組塊進行了語義分類。語義組塊分析器採用基於規則的線圖分析演算法(chart-parsing)實現組塊識別,語法規則為基於詞彙語義類的CFG,規則描述的是詞彙語義類或語義組塊之間組合成新語義組塊的條件和結果。這些規則是通過觀察和分析語料手工編寫的。組塊分析器的分析結果不一定是一個句子的完整語義結構樹,可能是多個並列的區域性語義結構子樹。每個子樹對應一個組塊,一個句子的子樹序列對應句子的語義組塊序列。3.統計解析過程: 統計解析模組用於從輸入的語義組塊序列中解析出IF表示的主框架,採用HMM實現,其核心思想是將輸入的語義組塊序列作為HMM的觀察,而將句子的IF表示作為HMM的內部狀態。4.組塊解釋方法: 在語義組塊分析時,通過規則方法獲得語義組塊的同時,也可以得到語義組塊內部的層次結構,但這種層次結構並不是我們所需要的IF表示,因此,我們設計了語義組塊解釋模組,用來把這種層次結構轉換為IF表示。語義組塊解釋模組是與組塊分析模組配合工作的,組塊分析過程中用到的每一條規則都對應一個規則的解釋方法,利用這些解釋方法可以把規則所涉及的詞彙解釋為相應的IF表示。5.IF的生成:從上面的介紹可以看出,基於HMM的解析模組輸出的結果和語義組塊解釋的結果都只是IF的片段,只有把它們合併才能得到完整的IF表示。語義組塊解釋模組把每個語義組塊轉換為IF片段,同時每個語義組塊經過統計解析模組解析後,又對應一個標註符號,並且該標註符號最終要作為IF表示中的一個結點。在各組塊合併時,IF生成器把語義組塊解釋結果作為該結點的子結點,把經過簡化處理的concepts序列還原為原來的concepts序列,這樣就得到了IF表示。

1.3基於語義決策樹的口語解析方法

從上面的介紹中可以看出,基於語義組塊的口語解析方法在限定領域內能夠獲得較好的解析效果。

但是,該方法存在如下不足之處:①上下文視窗偏小。在使用HMM對句子進行解析時,視窗一般限定在左右兩個詞彙或組塊,而在口語句子中存在很多不規範的現象,很多情況下一個詞或短語的語義與離它較遠的詞彙密切相關,如果視窗太小,不利於處理長距離的約束關係。②領域行為中的多個概念需要根據人工預先定義的語義符號經解釋獲得。這樣,對於每一個可能存在的概念序列都需要定義一個符號和相應的解釋規則,這項工作不但繁瑣,而且主觀性強,並且影響系統的領域移植能力和IF的表達能力。③在獲取話語意圖時,主要從解析結果的單個特殊單元來理解,這樣也存在一定的侷限性。

基於語義決策樹的口語解析方法,該方法用統計方法從訓練語料中自動獲取規則,從而避免了人工編寫規則的繁瑣和主觀性,並具有較高的魯棒性,用統計模型直接獲得整個領域的行為表示,便於句子整體意義的理解。

通過觀察,我們發現一個漢語句子的領域行為和句子中的一些關鍵詞語存在密切關係。因此,我們可以根據詞語所在的上下文環境來確定其語義。

該方法的基本思路是:在對訓練語料進行標記的基礎上,為每一個與領域行為密切相關的詞彙生成一棵語義分類樹,語義分類樹包含了在其生成過程中從訓練語料中自動獲取的一系列語義規則和語義的概率資訊。當一個需要解析的句子輸入時,首先用語義分類樹對與領域行為密切相關的詞語進行解析,獲得它們對應的語義資訊及其概率。然後,用統計模型對多個詞語的語義結果進行組合,從而獲得整個句子的領域行為。為了減小系統規模和資料稀疏問題,可以在對句子進行預處理的基礎上對句子的詞類或組塊進行解析。

2.基於MDP的對話行為識別

對話行為(dialog acts, DAs)是說話人對話意圖的表現形式。

2008提出了一種基於馬爾可夫決策過程(Markov decision processes, MDPs)和SVM方法相結合的對話行為預測方法,其基本思路是:用MDP預測對話行為,然後將預測結果融入基於語句的SVM分類器,最終獲得對話行為的識別結果。對話行為的預測對映為一個馬爾可夫決策過程,定義為一個4元組(S, A, T, R),其中,S表示狀態,由說話人是否變化的標記(sp_change)和對話行為(DA)的歷史描述。如果說話人發生了變化,則sp_change=1,否則sp_change=0。對話歷史包括同一說話人前一句話的對話行為和對方說話人前一句話的對話行為。

A為動作集,一共包括13個動作,每個動作表示一個對話行為標籤,作為對下一個對話行為的預測。如s表示陳(statement)、qy表示是非問(Y/N question)、qw表示特指問(Wh-question)等。
T為狀態轉移概率矩陣,Tij=P(Sj|Si,Ai)表示系統由狀態Si轉移到Sj的概率。
R表示回報(reward)。回報方程(reward function)是預測結果正確或錯誤的反映。Zhou et al.(2008b)從經驗的角度對轉移概率矩陣進行回報或懲罰。如果預測結果正確,回報因子為1.1,否則給出的懲罰因子為0.9,該資料為一組實驗中測得的最優值。

最後用SVM分類器對MDP的預測結果進行分類識別。

3.基於中間表示的口語生成方法

自然語言生成(natural language generation)技術研究的是如何利用計算機把非自然語言的表示形式轉換成某種自然語言的表示形式,從而產生人們可理解的,表達確切、自然流暢的自然語言語句。接下來介紹基於IF的漢語口語生成方法。

基於IF的漢語口語生成器是面向多語言口語翻譯系統設計的,該系統採用基於模板的方法和基於特徵的深層生成方法相結合的混合生成方法。採用這種混合方法的主要理由有如下幾點:首先,特定領域的口語對話中常用一些固定的表達模式。其次,對於非固定的表達方式,由於其表達形式靈活多樣,採用基於特徵的深層生成方法無疑更能滿足系統對於靈活性的要求。此外,基於特徵的生成方法可以把不同語言的差異作為特徵加入系統中,更易於用統一的程式框架實現不同語言的生成過程,便於系統擴充套件和移植。

根據上述考慮,基於IF的漢語口語生成器主要由三個模組組成:微觀規劃器、表層生成器和後處理模組。一個給定的IF表示式,首先經過微觀規劃器得到對應的句法功能結構,然後,句法功能結構通過表層生成器得到最終的漢語句子。這裡所用的句法功能結構是基於系統功能語法而定義的,其格式是多個特徵-屬性值對的集合,包含生成一個句子所必須的各種資訊(語氣、時態、語態、謂詞框架等)。表層生成器採用功能合一文法,利用生成語言的句法知識把句法功能結構中的各個特徵逐步聚合,並進行線性化處理。後處理模組完成句子最後的修飾和補充,包括新增助詞、量詞等。

3.1微觀規劃器

在基於IF的漢語口語生成器中,一個給定的IF表示式與一個句子或片語相對應,生成句子所需要的各項淺層資訊都已經在IF的引數中給出,所以生成器所要做的事情就是根據IF和領域知識生成對應的語句,而無需進行句子內容的確定。但是,由於IF沒有提供句子生成所需要的謂詞-論元資訊,需要生成器根據IF表示式、領域知識和中心詞的搭配資訊進行推斷。因此,生成器中的微觀規劃器需要實現如下幾個功能:①根據IF和領域知識確定句子的型別,獲得句子生成所必需的謂詞-論元框架;②將領域概念轉化為詞彙,進行詞彙選擇,並從詞典中獲得所有與選定詞彙相關的詞語搭配資訊等;③將領域關係轉化為語法關係;④獲得句子的語氣、時態和語態等資訊。

微觀規劃器完成的任務分為句子規劃和短語規劃兩個層次。句子規劃的功能主要是根據IF表示式和領域知識推斷句子的頂層資訊,如主要動詞、時態、語態,語氣等,並根據主要動詞獲得生成句子所必需的謂詞-論元框架;短語規劃是把IF格式中的屬性和概念轉換為句子的參與角色,即獲得生成句子的淺層短語資訊。

一個IF表示式經微觀規劃器轉換後成為句子的句法功能結構,句法功能結構將直接作為表層生成器的輸入。領域知識體現在規劃規則的表示上。

句子規劃規則可以由一個三元組(P,C,A)描述。P指IF的主體部分(包括說話者和領域行為)的模式(pattern),C是約束
(constraints),可以是空集,也可以是對IF所含概念(concepts)和引數(arguments)狀況的約束。A是動作(action),指在給定IF滿足P和C的條件下,執行A操作獲得該IF所對應的句子的功能結構。句子規劃時,微觀規劃器輸入的IF首先與P中的模式匹配,如果匹配,再看輸入是否滿足C中的約束,如果兩者都滿足,則執行動作A,獲得句子的主要動詞及框架資訊。

語規劃主要處理IF中的“引數-屬性值”描述,或者某些概念與“引數-屬性值”的組合描述。與句子規劃規則類似,短語規劃規則也由三元組形式構成。

3.2表層生成器

表層生成器是語言生成器的最後一個階段,其任務是藉助於語法規則將微觀規劃器的輸出生成正確、流暢的自然語言句子。

表層生成器首先利用詞法和句法規則對輸入的句法功能結構表示進行合一運算,得到非線性化的句子模式,然後,利用句子和短語中各成分排列順序規則對句子模式進行線性化處理,得到初步的生成語句,並由後處理模組做最後的修飾處理。

由於IF本身是一種不完備的語義表示,而且語音識別和句子解析模組造成的錯誤往往使IF含有噪聲或出現資訊缺失等現象,因此,為了確保生成器具有一定的魯棒性,能夠在給定IF含有錯誤或不完整的情況下生成正確或可以理解的句子,該生成器中採用了預設值處理措施,並放寬了對微觀規劃規則和表層生成器中語法規則的約束,使其能夠在某些條件不滿足的情況下生成不完整的句子。