本文将介紹 Alexa Prize Socialbot Challenge 2019 的冠亞軍參賽方案
- 第一名通過構造大量的對話模版,并維持使用者資訊表和狀态表,來實作個性化主題對話
- 第二名通過深度生成模型(GPT-2 等預訓練模型)來生成對話,并構造對話樹(treelet)來實作對話控制
- 最終專家評分排名情況如下
award final score team school last $500,000 3.81 Emora The Emory University #4 $100,000 3.17 Chirpy Cardinal Stanford University - $50,000 3.14 Alquist Czech Technical University #2
1st Emora
Emora: An Inquisitive Social Chatbot Who Cares For You
Introduction
Emora 能夠針對各種熱門話題和使用者進行個性化聊天。
設計目标不僅是建立有趣且流暢的對話,而且還超越了基于資訊的聊天範圍,使 Emora 感覺更像是使用者的貼心朋友,而非簡單的 QA。
遵循此目标,Emora 不僅支援先前 Alexa Prize 比賽中的熱門話題(如電影,音樂和體育),還能在更具個性化的話題(如學校,工作和業餘愛好) 進行豐富的對話。
為了促進混合式對話,作者賦予了 Emora 觀點和個性,通過積極詢問使用者的觀點和個人資訊來維持對話的進行,同時通過分享 Emora 自己的态度和個人資料與使用者建立聯系。
Architecture
- ASR (Automatic Speech Recognizer)
- 傳回語音識别結果(包括多個候選文本)
- NLP pipeline
- 負責特征提取,并進行相關文本分類任務(情感識别、主題/意圖分類等)
- Dialogue Manager
- 基于目前對話狀态、提取的特征以及使用者的話語,選擇最合适的回複
- Amazon 服務可以有效存儲和檢索特定主題的資訊(關系資料庫RDS,檢索服務ElasticSearch)
- Profanity Detector Service
- 檢查回複中是否有敏感内容,沒有則調用 Amazon Lambda function 合成語音傳回給使用者
- 若包含敏感内容,則随機從通用回複集合中選擇一個傳回

NLP Pipeline
進行特征提取和文本分類任務(情感識别、主題/意圖分類等),用于後續對話管理和主題管理
- 情感識别(Sentiment)
- Valence Aware Dictionary and sEntiment Reasoner, VADER
- Python 第三方庫
- 是一種基于詞典和規則的情感分析工具(處理速度快)
- 專門針對社交媒體中表達的情感進行調整
Alexa Prize 2019 冠亞軍方案介紹
- Valence Aware Dictionary and sEntiment Reasoner, VADER
- 命名實體識别(Named Entity Recognition,NER)
- SpaCy NER
- 在 OntoNotes 5 Corpus 上訓練的統計模型(CRF)
- 能夠識别 18 種類别的實體,包括 person,organization,location等
- SpaCy NER
- EVI
- 亞馬遜提供的 EVI QA 服務
- 傳回的回複被存儲用于後續子產品使用
- 實體識别和連接配接(Entity Recognition and Linking)
- 使用實體名稱和單詞特征來綜合識别實體,給定一句話,能夠傳回所有和 n-gram 比對的實體
- 維護超過 370 萬的實體和類型庫,并且能夠使用相應子產品更新,包括來自 RottenTomatoes 的電影名,Washington Post API 的人名或者組織名
- 同時也索引了 DBPedia 從2016年至今的快照,來確定覆寫最新的實體
- 主題和意圖識别(Topic and Intent Classification)
- 開放域對話中的主題和意圖分類,可以看作文本分類問題,其難點在于
- 使用者說的話語一般較短
- 可能存在 ASR 錯誤
- 使用者經常提及未登入的單詞或者實體(OOV)
- 缺少可擷取的帶标簽的開放域人機對話資料
- Mixture of Experts Model(MOE)
- 上下文相關主題和對話意圖分類模型
- 例如使用者回複 “Oh, yeah”,可能對應 “Accept-Agree“ (接受同意)或者 ”Topic-Switch“(主題切換)
- 此時需要根據上下文來識别具體的意圖
- 混合 Amazon classifier和自定義的主題/意圖分類器
- 自定義分類模型在自行人工标注的資料集上訓練得到
- 主要還是依賴于 Amazon classifier,自定義分類模型用于補充(對結果中 Other 的情況進行更細緻的分類)
- 自定義分類器(CNN)
- 在新的主題上訓練分類器,比如 “Food-Drinks”,“Travel-Geo”,或者新的意圖 “Yes-Answers”
- 通過分析 Amazon 分類器存在問題來改進
- 例如 Amazon 意圖分類器将使用者的所有不同意(拒絕)分類為 “Topic-Switching”(主題切換)
- 但是使用者雖然不同意目前的系統回複,但是不想結束目前的話題,額外添加新的意圖 “Reject”
Alexa Prize 2019 冠亞軍方案介紹 - 上下文相關主題和對話意圖分類模型
- 開放域對話中的主題和意圖分類,可以看作文本分類問題,其難點在于
Dialogue Manager
對話管理器負責在給定對話上下文的情況下選擇系統回複,基于**狀态機(state machine)**實作
- Classifier
- 狀态機中的每個使用者轉換都對應一個分類器,來判斷目前轉換分支
- 通過結合基于規則的比對和神經網絡模型實作分類器
- Tagging Model
- 通過 Tagging Model 來增強轉換
- Tagging Model 從使用者的回複中提取有用的實體或者其他資訊
- 主要基于規則比對的方式來實作 Tagging Model,并使用 ontology 提高準确率(也會使用 NLU 中的 Entity Linker 的結果)
- 提取的标記資訊會儲存在狀态表中(Variable Table),用于後續的轉換(開啟新的話題/轉換 或者 用于NLG槽填充)
- NLG
- 主要使用手寫的**對話模闆(handcrafted templates)**實作,生成結果可控
- 模闆中包含各種槽引用變量(slots referencing variables),這些變量可以從先前對話儲存的**狀态表(Variable Table)**中擷取,進而實作根據使用者提供的資訊來自生成個性化的回複
- 比如下圖簡化的狀态機中,狀态a對應多種系統回複
- 轉換S1中包含引用變量
,是以隻有當變量不為空時才選擇該轉換(例如上文提到和朋友在一起,這種情況下回複 “What were you doing with your friend”)$RELATED_PERSON
- 如果
為空,則選擇預設轉換 S2$RELATED_PERSON
- 轉換S1中包含引用變量
“ONTOLOGY” 表示NLU識别出的 ontology 的節點;U2使用基于規則的模闆比對;U5使用情感分類器;所有的 $
都表示一個變量
- Ontology
- 為了提供NLU分類器的通用性,dialogue manager 還配備了 ontology
- 從各種來源(包括 WordNet 和 Wikipedia)來擴充本體庫
- 尤其在使用模闆比對的 NLU 分類器中,本體可以用來識别使用者表達的同義詞,下位詞和成語以及各種實體類型
- ontology 包括
- life events (e.g. illness, birth, romantic event, etc.)
- related persons (e.g. family, partner, etc.)
- states of being (e.g. injury, positive state, negative state, etc.)
- locations (e.g. cities, countries, etc.)
- activities (e.g. chore, errand, exercise, etc.)
- life stages (e.g. child, teenager, adult, student, etc.)
- status (e.g. employment status, relationship status, education status, etc.)
- political affiliation
- emotions
- adjectives
- animals
- names
- personality traits
Alexa Prize 2019 冠亞軍方案介紹
- Inter-Topic Transitions
- 基于狀态機的對話管理器具有高效的上下文表示的優勢,并為開發人員提供了對對話流的高度控制,但是不支援主題之間的靈活過渡
- Global transition table
- 每個狀态節點添加狀态對
(user_state, topic_start)
- 使用全局轉換表擴充對話管理器,可以根據使用者的目前狀态從狀态機的任意位置進行主題轉換
- 每個狀态節點添加狀态對
- State Stack
- 用于目前狀态,當轉換到其他主題(比如sub-dialogue)後能夠傳回
- 狀态機中的任意狀态都能壓入狀态棧(State Stack),或者當狀态彈出時傳回
- 例如
- COVID-19 主題的對話可以通過全局轉換進入疫情期間遠端學習的子主題
- 此時将 COVID-19 狀态壓入棧中,當結束遠端學習子主題的讨論後,可以将 COVID-19 從棧中彈出傳回到該狀态
- Conversation Flow 中将具體說明
Conversation Flow
遵循将 Emora 設計為能夠參與類似于人的社交對話的聊天機器人的目标,設計系統來實作超越以觀點為導向(opinion-oriented)的對話并支援個性化的對話(personal conversation)。
主要表現位根據說話者是否對經常出現并影響其日常生活的實體分享想法和态度,将個性化對話(personal conversation)與以觀點為導向(opinion-oriented)的對話區分開來。
例如,陳述關于電影的觀點将被認為是有觀點的,但不是個性化觀點,而對于個人經曆中的事物發表觀點則視為個性化的觀點。
雖然兩個形式的對話時交叉進行的,但是明确地專注于進行更多的個性化對話有利益提高機器人的拟人特征。這包括為機器人的個性和經曆建立個人資料(Topic Handlers中詳細說明)。
- Personal-experience-focused dialogue strategy
- Emora 的主要創新點
- 提供一種通用的互動方式,可以和使用者分享或者聆聽個人經曆
- 通過**開放式陳述 (open-ended statements)+ 提問(question-asking)**的方式,使得使用者可以自由選擇自己想要的答案
- 如下圖中(a)+(b)
- Variable Table
- 儲存對話中擷取的使用者個性化資訊
- Emora 可以在以後與使用者的興趣和生活直接相關的點上選擇對話主題,進而加深與使用者的親切感
- 比如 U2 中提到遠端學習,在 E8(b)中用到
- Stack Column
- 儲存對話狀态
- 比如通過 U1 識别子主題(covid_sympathy),則壓入棧中,用于後續讨論該話題
- U1-E3(a)是遠端學習子主題的讨論結果,E3(a)結束之後,則選擇棧中的狀态作為下一個主題
- 有選擇地添加對話狀态作為将來要傳回的對話點,可以提高對話中整體的連貫感,并允許 Emora利用對話記憶來推動對話前進
- Life Counter
- Stack 中可以儲存多個狀态
- 每個狀态會被設定 Life Counter 來記錄存活時間,當時間到期之後,當彈出棧後,不會傳回到該狀态
- 預設的政策按LIFO**(Last In, First Out)**
CoS: covid_sympathy, CoE: covid_end
Topic Handlers
Topic | Desc | Source |
---|---|---|
COVID-19 | (1)向使用者告知有關大流行的有用事實和最新資訊 包括已确診的病例和特定地區的死亡率 (2)以opinion-oriented的方法來讨論COVID-19的持續事件 重點關注病毒對整個社會造成的變化如何影響使用者 | 約翰·霍普金斯大學系統科學與工程中心(CSSE) |
General Activities | (1)讨論使用者的日常活動 (2)探索階段,通過問答收集使用者活動資料 根據頻率排名,手動整理對最頻繁發生的日常活動類型的回複 包括工作,學校,差事,家務和視訊遊戲。 (2)在開發階段,将日常活動主題的互動作為總體對話開始 作為和其他主題處理程式之間的過渡 | |
Holiday | (1)對于各種受歡迎的假期設定簡短的互動回複 (2)這些互動是臨時開放的,主要用于獲得使用者的假期計劃 (3)持續不超過5個回合,完成後過渡到對話系統的核心元件 | Valentine’s Day April Fool’s Day Easter |
Life | (1)生活部分着重于了解使用者對日常生活的感受和想法 (2)包括多個子主題,每個子主題都是單獨實作的 (3)但是每個子主題中擷取的使用者屬性作為全局資訊 | Children Home Relationships Siblings School Work |
Movies | (1)使用觀點向(opinion-oriented)的問題以吸引使用者并分析他們的偏好 (2)基于學習到的使用者資訊來推薦新電影 (3)根據電影院的上映情況,實時索引 | RottenTomatoes Elasticsearch Python imbdpy |
Music | (1)同樣通過使用用動态模闆化問題來擷取使用者喜好 (2)收集音樂流派和藝術家的興趣名額 (3)推薦相似的藝術家或流派或提供感興趣的資訊 | Billboards SeatGeek Spotify lastFM DynamoDB |
News | (1)搜尋使用者感興趣的新聞,并傳回新聞摘要 (2)通過其他主題擷取的資訊來完善搜尋結果 | Washington Post API News API New York Times Article Reuters newswire RSS feeds |
Pets | (1)賦予 Emora 個性化特征和經曆 (2)通過建立共同的體驗引起使用者的興趣 (3)根據不同寵物類型,定制不同回複 (4)抓取動物電影或者笑話,整合到對話中 | |
Sports | (1)使用對話模闆融合最新的體育事件 (2)定期更新實時資訊(體育比賽、球員、球隊資訊 包括實時事件,如COVID-19導緻NBA停賽以及科比去世 (3)賦予 Emora 個性化經曆 如自己的籃球比賽風格以及參加現場體育比賽的經曆 | basketball football soccer baseball sports-ref |
Travel | (1)與使用者在旅行時最關心的某些方面進行互動 例如旅遊景點,文化,美食,活動和節日。 (2)從讨論某個城市開始對話 該城市是從預先确定的城市清單中随機生成的 (3)使用者沒有去過該城市,則提出建議計劃 (4)若去過,則對使用者的經曆表現出興趣 | |
Teleportation | 讨論圍繞使用者和Emora關于将來可能進行隐形傳送的觀點及其優缺點進行的讨論 | |
Virtual Reality | 由關于虛拟現實和增強現實技術的以體驗為導向的讨論組成 | |
Video Games | 與識别二十種遊戲之一的使用者進行特定于遊戲的獨特對話 |
2nd Chirpy Cardinal
Neural Generation Meets Real People: Towards Emotionally Engaging Mixed-Initiative Conversations
Motivation
建立一個與真實人交談的開放域社交機器人是一項挑戰,因為這種系統必須滿足多個使用者的期望,例如廣泛的世界知識,對話風格和情感聯系。
Chirpy Cardinal 将站在使用者的角度,優先考慮使用者的興趣,感受和自主權。進而提供個性化的使用者體驗,能夠熟練地談論各種主題,并能有感情地談論普通的生活。
神經生成在實作這些目标中起着關鍵作用,為對話和情感基調提供了基礎。
GPT-2 的在對話生成中的廣泛使用,局限性在于持續對話時對話品質和一緻性較差
- Initiative
- 對話引導能力,在任務對話系統中被廣泛研究;Mixed initiative 是一種使用者和機器人共享主動性的模式,由使用者進行對話引導,但是不讓使用者完全負責新的主題和方向
- 為了提升 Mixed initiative 同時仍然進行足夠的對話深度,設計了嚴重依賴系統主動性的 initial system,但同時探索了幾種以受控方式增加使用者主動性的途徑
- 為了支援混合主動性,系統具有全局導航意圖分類器和實體跟蹤器,進而可以跟蹤使用者和機器人的進階主題更改。此外,我們的響應優先級系統允許使用者啟動主題更改時插入單個響應生成器(RG)
- High-Coverage World knowledge
- Alexa Knowledge Graph,The Washington Post,Reddit and Twitter,Wikipedia and Wikidata entities
- 世界知識必須通過對話的形式來表達,這是 sociabot 和 virtual assistant 的差別
- 在 TopicalChat 資料集上微調了一個生成模型,來将外部知識轉換為對話的形式
- Personal experiences and emotions
- 讨論個性化經曆和情感
- Neural Chat Module 允許使用者分享他們每天的經曆和目前情感,使用神經生成模型進行情感回複
- Opinion Module 允許使用者通過 like 和 dislike 表達情感,為了營造互惠的氛圍,機器人還分享了自己獨特的感受,經驗和觀點
Architecture
基于 CoBot 搭建
- NLP Pipeline
- 基于使用者輸入話語和目前狀态生成注釋(annotations),用于後續處理
- 使用 directed acyclic graph(DAG)組織,允許子產品使用其他子產品的 annotations 作為輸入
- 為了最小化延遲(latency),子產品并行運作
- Dialogue Manager
- 分析使用者的話語,判斷使用者是否想要談論某些實體(Navigational Intent)
- 更新目前讨論的實體(Entity Tracker)
- Response Generator(RGs)
- 每個子產品負責不同的任務
- 每個 RG 可以産生回複或者 None,當生成回複後,response prority 判斷是否需要從另外一個response generator 添加 prompt
- Priority Ranking 子產品選擇優先級最高的 response
- Entity Tracker 更新目前實體
NLP Pipeline
- CoreNLP
- 一系列預訓練操作:tokenization, sentence splitting, part-of-speech tagging, lemmatization, named entity recognition, constituency parsing, dependency parsing, coreference resolution, and sentiment analysis
- 考慮到使用者話語的形式(lowercase,no puncuation),選擇 caseless model
Alexa Prize 2019 冠亞軍方案介紹
- Dialogue Act Classifier
- Dialogue Act 可以用于支援了解使用者的意圖(positive answer,statement,negative answer)
- 實作過程中,在 HuggingFace 實作的 BERT 分類器上使用 MIDAS 資料集微調
- MIDAS 資料集時 Alexa Prize 2018 的冠軍隊伍 Gunroc k收集的
- 形式為(bot utterance,user’s response to utterance, the user’s dialogue act)
- Question Classifier
- 動機:語音識别結果中缺少問号,此外使用者的問題可以分為事實性問題(factual question)和開放性問題(open-ened question)
- 在簡化版的 Dialogue Act 訓練資料上微調了 RoBERTa 模型
- 僅以使用者的回複作為輸入,F1 達到 0.92
- 分類結果用于确定某些RG應該何時響應,例如 Evi RG 何時應該回答事實性問題
- GPT-2 對于問号較為敏感,是以根據分類器結果添加問号
Dialogue Management
用于處理進階邏輯,跟蹤目前和使用者讨論的主題,以及哪個回複或者prompts用于組成機器人的回複
- Navigational Intent Classifier
- 手工編輯的規則,精度更高
- 當使用者想要讨論或者不想談論某個主題時(positive,negative),會有導航意圖
- 使用者可能指定某個主題
- (can we talk about Minecraft, stop talking about minecraft)
- 或者指定目前的主題
- (let’s discuss this more, could you change the subject)
- 或者不指定主題
- (alexa can we talk, i don’t want to chat any more)
- 或者在同一句中給出 postive 和 negtive 的導航意圖
- (i don’t want to talk about movies any more let’s chat about you)
- Entity Tracker
- 追蹤目前正在讨論的主題(已經讨論結束,但是可能在将來讨論的實體)
- 假設每個對話中都有一個 current entity,并且要麼是 Wikipedia entity 或者 None(每輪最多更新三次)
- After analyzing the user’s utterance
- entity tracker 使用 entity linker 的輸出,包括使用者目前輪提及的實體按優先級排序的清單以及得分
- 如果使用者對目前實體表達負面情緒,目前實體則被拒絕
- 如果使用者對某個實體表達積極情緒,則在使用者的話語中搜尋這些主題插槽,最高優先級的實體的得分高于門檻值(1,1000),則選擇目前實體
- 如果目前輪有我們希望使用者提及的實體(比如,what’s your favorite movie?),并且有對應的wikipedia 條目,得分高于門檻值,則選擇作為目前實體
- 其他情況, entity linke 以足夠高的分數(超過10,000)做出了預測,則它将成為目前實體
- 如果不滿足這些條件,則目前實體保持不變
- After choosing the response
- 當RG提供回複時,如果回複被 priority ranker 選中,則每個RG指定新的目前實體
- 我們将目前實體更新為所選RG提供的任何實體
- After choosing the prompt
- 如果獲得某個 prompt,則類似地更新目前實體
- After analyzing the user’s utterance
- 系統允許使用者初始化實體;允許RG初始化主題,允許多種RG談論相同的主題;允許RG決定何時結束目前主題
- Response Priority Ranking System
- 用來決定哪個RG的回複應該在目前輪選擇
- 當生成回複時,每個RG提供一個 response priorities,來保持對話的連續性
- 雖然是簡單的規則,但是滿足需求
- 每個RG決定自己是否回複以及回複是否高品質(每個RG獨立存在,不會互相影響)
Alexa Prize 2019 冠亞軍方案介紹
- Response and Prompt System
- RG 可以解決使用者目前的話語,但是不能引導對話繼續進行
- 或者回複的 RG 已經結束讨論的主題,并且需要另外一個 RG 來改變話題
- response-and-prompt system可以很容易通過問使用者問題來引導對話
- Prompt Priority Sampling System
- 雖然我們使用确定性排名系統來選擇最高優先級的響應,但提示通常代表主題的變化,而不受上下文的限制,并且(在人與人的對話中)傾向于具有一定程度的随機性。
- 是以,我們使用優先級采樣系統來選擇提示。生成提示時,每個RG提供表中的提示優先級之一
Alexa Prize 2019 冠亞軍方案介紹
Response Generator
- Treelets:A system to Organize Dialogue Graphs
- 建構對話樹,可以循環可以互相指向
Alexa Prize 2019 冠亞軍方案介紹 - Neural Chat
- 目标是生成帶有個性化和情感的回複
- 在 GPT-2-medium 上使用 EmpatheticDialogues 資料集微調(包含speaker和listener,模型在listener角色上訓練,即情感撫慰)
- Emotion-focused Conversation
- 嘗試多種情感撫慰方式
- 多種回複政策與使用者回複長度的影響
- 當機器人負面情緒回複時,使用者的回複長度更長
- 當機器人添加自己的故事(個性化時),使用者的回複長度更長
Alexa Prize 2019 冠亞軍方案介紹 Alexa Prize 2019 冠亞軍方案介紹
- Wiki
- 使用 ElasticSearch 檢索 article
- 使用 TopicalChat 資料集微調 GPT-2-medium
- Others
- Alexa-Knowledge Graph + Hand-written Templates