天天看點

Alexa Prize 2019 比賽及 Topical-Chat 資料集介紹

本文将介紹 Alexa Prize Socialbot Challenge 2019 的比賽情況以及 Topical-Chat 資料集

Aelxa Prize 介紹

Alexa 是為 Amazon Echo 提供支援的語音服務,它使客戶僅使用語音即可以更直覺的方式與周圍的世界互動。

Alexa Prize Socialbot Grand Challenge 是一項旨在促進對話 AI 發展的大學生競賽,比賽中要求參賽隊伍開發一個社交機器人(将作為 Alexa 的一項技能),可以在熱門話題和新聞事件上與人類進行連貫和持續的互動交流。

參賽隊伍的任務包括知識擷取,自然語言了解,自然語言生成,上下文模組化,常識推理和對話管理。具體來說,機器人需要具備的能力包括:1)自然的話題切換;2)合理地選擇知識;3)能夠将事實和觀點(知識)融入到對話中。

參賽隊伍的機器人将與全美 Alexa 使用者進行對話,并且 Alexa 使用者可以進行打分和回報,來将幫助參賽隊伍改進算法。

最終獲勝的隊伍将獲得50萬美金的大獎。

Alexa Prize 2019

Alexa Prize 從 2017 年開始,目前已經舉辦三屆,第三屆(即 Alexa Prize 2019)于不久前結束(2020年7月)。

時間安排

Alexa Prize 2019 整個比賽持續一年多,具體時間安排如下:

時間 事件
2019年3月-5月 隊伍申請階段
2019年6月 宣布參賽隊伍(10支)
2019年12月 向Alexa使用者開放
2020年2月-3月 四分之一決賽(9支)
2020年3月-4月 半決賽(5支)
2020年5月-7月 決賽(3支)
2020年7月 專家團評審

比賽結果

半決賽期間,所有隊伍的平均得分(Alexa 使用者評分,最高5分)為 3.47 分

year average score
2017 2.91
2018 3.19
2019 3.47

來自埃默裡大學的冠軍隊伍平均對話時長為 7分37秒

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

Alexa 使用者最感興趣的話題(橙色)包括電影、科技和音樂;其中 Other 為其他主題,COVID-19 新冠病毒占比重較大

Alexa Prize 2019 比賽及 Topical-Chat 資料集介紹

比賽過程中,參賽隊伍将獲得 Amazon 官方支援,包括 研究經費,Alexa 裝置,AWS 服務等。除此以外,本次比賽還提供了對話機器人工具包(CoBot)以及主題對話資料集(Topical-Chat)。

Conversaton Bot (CoBot)

Advancing the State of the Art in Open Domain Dialog Systems through the Alexa Prize

系統圖

CoBot 是一個對話式機器人工具包,提供一系列的基本子產品和預訓練模型供參賽隊伍使用,可以最大程度上減少參賽隊伍在基礎架構部署和擴充上耗費的精力,

CoBot 的系統圖和工作流程如下:

  • Alexa Skill Kit 提供基本的語音技術功能,比如進行自動語音識别(ASR,automatic speech recognize)以及意圖識别等功能
  • AWS lambda 是 AWS 的無伺服器接口,開發者可以定義基本的響應事件,來調用後續的觸發子產品
  • AWS ECS 是 Amazon 的雲服務,可以托管預訓練等模型
  • TTS 将文本轉為語音(text-to-speech)
Alexa Prize 2019 比賽及 Topical-Chat 資料集介紹

架構圖

CoBot 内置預設的處理流程,包括主題分類、情感識别和NER等 NLU 子產品功能,Evi QA 服務,以及全局的狀态管理器(用 key-value 形式儲存在 DynamoDB 中),開發者可以在此基礎上開發自定義功能及子產品。

Alexa Prize 2019 比賽及 Topical-Chat 資料集介紹
  • Dialog Act and Topic Classification
    • 使用基于 層次RNN(HRNN)的主題和意圖聯合分類模型(單層 GRU)
      Alexa Prize 2019 比賽及 Topical-Chat 資料集介紹
  • Neural Response Generation
    • 基于 GPT-2 在 Topical-Chat 資料集上訓練融入知識的生成模型
    • 調用時,輸入使用的知識以及對話曆史,輸出融入知識的回複
      Alexa Prize 2019 比賽及 Topical-Chat 資料集介紹

Topical Chat 資料集

Topical-Chat : Towards Knowledge-Grounded Open-Domain Conversations

基本介紹

Topical-Chat 是一個基于知識的人人對話資料集,其基礎知識涵蓋8個主題,包括多個知識來源(Washington Post Articles,Reddit fun facts,Wikipedia articles about entities)。

每輪對話标注了說話人情感以及回複的品質,總共包括 10,000 個會話(conversation),230, 000 輪對話(utterance)。

對話中沒有明确定義參與者的角色(Wizard of Wikipedia, WoW 中存在一個 Wizard 進行對話引導),更符合開放域真實對話特點。

所有主題及對應的實體個數如下:

Alexa Prize 2019 比賽及 Topical-Chat 資料集介紹

知識來源

知識庫由三個原語構成:實體(entity),事實(fact)和文章(article),擷取過程如下

  • 實體選擇(Entities Selection)
    • 從前幾屆比賽使用者的回複選擇最受歡迎的 8 個主題共300個實體
  • 事實選擇(Fact Selection)
    • 擷取 300個實體的 Wikipedia 引言部分,然後使用 Reddit 衆包為每個實體構造 8-10 個有趣的事實(根據 Wikipedia 引言構造)
    • 對于每個實體,構造兩個版本的 Wikipedia 引導部分,第一個是包含引導部分第一句話的短版本(50詞),第二個是使用 TextRank 生成引導部分的摘要介紹(150 詞)
  • 文章選擇(Article Selection)
    • 擷取 Washington Post 自2018年以來的文章(600-1000詞),總共 3088篇文章,每篇文章至少包含三個上述的實體

知識集構造中,以article作為基礎,并且構造多種資訊不對稱的知識集,并提供給對話雙方使用(雙方知識集可能不對稱,模拟現實情況)。

對話構造過程中,每個實體包含 wikipedia 的短介紹或者摘要介紹以及有趣的事實,過程中對目前回複進行情感标注(Angry, Disgusted, Fearful, Sad, Happy, Surprised, Curious to Dive Deeper, Neutral),以及對對話上一個回複的知識使用進行品質評估(Poor,Not Good,Passable,Good and Excellent)。

資料擷取

從 GitHub alexa/Topical-Chat 下載下傳,需要構造知識源資料,過程如下

  • reddit 偏好設定 建立 API Key
    參考 Instructions for getting Reddit API keys? #1
Alexa Prize 2019 比賽及 Topical-Chat 資料集介紹
  • 運作指令
    # Ensure that your Python Interpreter >= 3.7
    git clone https://github.com/alexa/Topical-Chat.git
    cd Topical-Chat/src
    pip install -r requirements.txt
    
    # Building the data requires Reddit credentials. 
    # Please create your own Reddit API keys: https://www.reddit.com
    python3 build.py  --reddit_client_id CLIENT_ID --reddit_client_secret CLIENT_SECRET --reddit_user_agent USER_AGENT
               
  • 構造過程(科學上網,用時2個小時)
Alexa Prize 2019 比賽及 Topical-Chat 資料集介紹

資料示例

資料集中包含 frequent 和 rare 兩種驗證集,前者中的實體在訓練集中頻繁出現,後者在訓練集中較少甚至沒有出現過

Train Valid Freq. Valid Rare Test Freq. Test Rare All
# conversations 8628 539 539 539 539 10784
# utterances 188378 11681 11692 11760 11770 235434
average # turns per conversation 21.8 21.6 21.7 21.8 21.8 21.8
average length of utterance 19.5 19.8 19.8 19.5 19.5 19.6
  • 對話檔案
    {
    <conversation_id>: {
    	"article_url": <article url>,
    	"config": <config>, # one of A,B,C, D
    	"content": [ # ordered list of conversation turns
    		{ 
    		"agent": "agent_1", # or “agent_2”,
    		"message" : <message text>,
          
        # Angry, Disgusted, Fearful, Sad, Happy, Surprised, Curious to Dive Deeper, Neutral
    		"sentiment": <text>, 
          
        # Factual Section 1-3, Article Section 1-4 and/or Personal Knowledge
    		"knowledge_source" : ["AS1", "Personal Knowledge",...], 
          
    		"turn_rating": "Poor", # Note: changed from number to actual annotated text
    		},…
    	],
    	"conversation_rating": {
    		"agent_1": "Good", # Poor, Not Good, Passable, Good and Excellent
    		"agent_2": "Excellent"
    		}
    	},
      ......
    }
               
  • 知識集合
    {
    <conversation_id> : {
    	"config" : <config>,
        "agent_1": {
            "FS1": {
               "entity": <entity name>,
               "shortened_wiki_lead_section": <section text>,
               "fun_facts": [ <fact1_text>, <fact2_text>,...]
              },
            "FS2": {...}
         },
        "agent_2": {
             "FS1": {
                 "entity": <entity name>,
                 "shortened_wiki_lead_section": <section text>,
                 "fun_facts": [ <fact1_text>, <fact2_text>,...],
              },
              "FS2": {...}
          },
        "article": {
              "url": <url>,
              "headline" : <headline text>,
              "AS1": <section 1 text>,
              "AS2": <section 2 text>,
              "AS3": <section 3 text>,
              "AS4": <section 4 text>
    	    }
    	}
    ...
    }
               

繼續閱讀