"餐廳預訂"。根據(jù)知識本體,"餐廳預訂"域的結(jié)構(gòu)化查詢?nèi)芜x地包括參數(shù) 諸如{菜系}、{時間}、{日期}、{同行人數(shù)}等。在一些實施例中,基于包含在用戶話語 中的信息,自然語言處理器332為餐廳預訂域生成部分結(jié)構(gòu)化的查詢,其中部分結(jié)構(gòu)化的 查詢包括參數(shù){菜系="壽司類"}和{時間="晚上7點"}。然而,在該實例中,用戶話語 包含的信息不足以完成與該域相關(guān)聯(lián)的結(jié)構(gòu)化查詢。因此,基于當前可用信息,在結(jié)構(gòu)化查 詢中未指定其他必要參數(shù)諸如{:同行人數(shù)}和{日期}。在一些實施例中,自然語言處理器 332用所接收的上下文信息來填充結(jié)構(gòu)化查詢的一些參數(shù)。例如,在一些實施例中,如果用 戶請求"附近的"壽司店,則自然語言處理器332可用來自用戶設(shè)備104的GPS坐標來填充 結(jié)構(gòu)化查詢中的{位置}參數(shù)。
[0077] 在一些實施例中,自然語言處理器332將結(jié)構(gòu)化查詢(包括任何已完成的參數(shù)) 傳送至任務流處理模塊336 ( "任務流處理器")。任務流處理器336被配置為接收來自自 然語言處理器332的結(jié)構(gòu)化查詢、完成結(jié)構(gòu)化查詢(如果必需的話)、以及執(zhí)行"完成"用戶 最終請求所需的動作。在一些實施例中,完成這些任務所必需的各種過程在任務流模型354 中提供。在一些實施例中,任務流模型包括用于獲取來自用戶的附加信息的過程、以及用于 執(zhí)行與可執(zhí)行意圖相關(guān)聯(lián)的動作的任務流。
[0078] 如上所述,為了完成結(jié)構(gòu)化查詢,任務流處理器336有時需要發(fā)起與用戶的附加 對話,以便獲得附加信息、和/或弄清可能有歧義的話語。當此類交互有必要時,任務流處 理器336調(diào)用對話處理模塊334 ( "對話處理器334")來進行與用戶的對話。在一些實施 例中,對話處理器334確定如何(和/或何時)向用戶詢問附加信息,并接收和處理用戶響 應。通過I/O處理模塊328將問題提供給用戶并接收來自用戶的回答。在一些實施例中, 對話處理器334經(jīng)由音頻和/或視覺輸出來呈現(xiàn)對用戶的對話輸出,并接收經(jīng)由口頭或物 理(例如,點擊)響應的來自用戶的輸入。繼續(xù)上文的實例,當任務流處理器336調(diào)用對話 流處理器334來為與域"餐廳預訂"相關(guān)聯(lián)的結(jié)構(gòu)化查詢確定"同行人數(shù)"和"日期"信息 時,對話流處理器335生成問題諸如"共有多少人用餐?"和"具體哪天用餐? "來傳送至用 戶。一旦接收到來自用戶的回答,對話流處理器334就可用缺失信息填充結(jié)構(gòu)化查詢,或?qū)?信息傳遞給任務流處理器336來完成結(jié)構(gòu)化查詢的缺失信息。
[0079] 在一些情況下,任務流處理器336接收具有一個或多個含糊不清的屬性的結(jié)構(gòu)化 查詢,例如在"發(fā)送消息"域的結(jié)構(gòu)化查詢指示期望收件人是"Bob"、但用戶碰巧有多個名字 為"Bob"的聯(lián)系人時。在這樣的情況下,任務流處理器336任選地請求對話處理器334明確 結(jié)構(gòu)化查詢的這個屬性。繼而,對話處理器334任選地詢問用戶"哪個Bob?",并顯示(或 讀出)名為"Bob"的聯(lián)系人的列表,用戶可從該列表中進行選擇。
[0080] 在一些具體實施中,消除歧義模塊350對代詞消除歧義。在這樣的具體實施中,消 除歧義模塊350將所述一個或多個詞語中的一個識別為代詞,并確定這個代詞所指代的名 詞。在一些具體實施中,消除歧義模塊350通過使用與電子設(shè)備用戶相關(guān)聯(lián)的用戶數(shù)據(jù)348 或詞匯索引344來將代詞所指代的名詞確定為實體、活動、或位置的名稱。
[0081] 在一些具體實施中,消除歧義模塊350訪問從手持式電子設(shè)備(例如,用戶設(shè)備 104)的一個或多個傳感器(例如,接近傳感器214、光傳感器212、GPS接收器213、溫度傳 感器215、和運動傳感器210)獲得的信息,以用于確定這些詞語中的一個或多個的含義。在 一些具體實施中,消除歧義模塊350識別分別與實體、活動、或位置中的一者相關(guān)聯(lián)的兩個 詞語。例如,這兩個詞語中第一個是指人,這兩個詞語中第二個是指位置。在一些具體實施 中,消除歧義模塊350識別分別與實體、活動、或位置中的一者相關(guān)聯(lián)的三個詞語。
[0082] -旦任務流處理器336已針對可執(zhí)行意圖完成結(jié)構(gòu)化查詢,任務流處理器336就 繼續(xù)執(zhí)行與可執(zhí)行意圖相關(guān)聯(lián)的最終任務。因此,任務流處理器336根據(jù)結(jié)構(gòu)化查詢中包 含的具體參數(shù)來執(zhí)行任務流模型中的步驟和指令。例如,可執(zhí)行意圖"餐廳預訂"的任務流 模型任選地包括用于聯(lián)系餐廳并實際請求在特定時間針對特定同行人數(shù)的預訂的步驟和 指令。例如,通過使用結(jié)構(gòu)化查詢諸如:{餐廳預訂,餐廳=ABC咖啡館,日期=2012年3月 12日,時間=晚上7點,同行人數(shù)=5人},任務流處理器336任選地執(zhí)行以下步驟:(1)登 錄ABC咖啡館的服務器或者諸如〇PENTABLEl;這樣的餐廳預訂系統(tǒng),⑵在網(wǎng)站上的表 格中輸入日期、時間和同行人數(shù)信息,⑶提交表格,以及⑷在用戶日歷中針對該預訂制 作日歷條目。
[0083] 在一些實施例中,任務流處理器336利用服務處理模塊338 ( "服務處理器")的輔 助來完成用戶輸入中所請求的任務或者提供用戶輸入中所請求的信息性回答。例如,服務 處理器338可以任務流處理器336的名義來進行電話呼叫、設(shè)置日歷條目、調(diào)用地圖搜索、 調(diào)用用戶設(shè)備上安裝的其他用戶應用程序或與所述其他用戶應用程序交互、以及調(diào)用第三 方服務(例如,餐廳預訂門戶網(wǎng)站、社交網(wǎng)站、銀行門戶網(wǎng)站等)或與第三方服務交互。在 一些實施例中,可由服務模型356中的相應服務模型來指定每項服務所需的協(xié)議和應用編 程接口(API)。服務處理器338針對服務訪問適當?shù)姆漳P?,并依?jù)服務模型根據(jù)該服務 所需的協(xié)議和API生成針對該服務的請求。
[0084] 例如,如果餐廳已啟用在線預訂服務,則餐廳可提交指定進行預訂的必要參數(shù)的 服務模型、以及用于將必要參數(shù)的值傳送至在線預訂服務的API。在被任務流處理器336 請求時,服務處理器338可利用存儲在服務模型中的網(wǎng)址來建立與在線預訂服務的網(wǎng)絡(luò)連 接,并將預訂的必要參數(shù)(例如,時間、日期、同行人數(shù))以根據(jù)在線預訂服務的API的格式 發(fā)送至在線預訂接口。
[0085] 在一些實施例中,自然語言處理器332、對話處理器334、以及任務流處理器336共 同且反復地被使用以推斷和限定用戶的意圖、獲取進一步澄清和明確用戶意圖的信息、并 最終生成滿足用戶的意圖的響應(例如,給用戶的輸出、或完成任務)。
[0086] 在一些實施例中,在已執(zhí)行滿足用戶請求所需的所有任務之后,數(shù)字助理326制 定確認響應,并通過I/O處理模塊328將該響應發(fā)送回用戶。如果用戶請求尋求信息性回 答,則確認響應向用戶呈現(xiàn)所請求的信息。在一些實施例中,數(shù)字助理還請求用戶指示用戶 對數(shù)字助理326生成的響應是否滿意。
[0087] 關(guān)于數(shù)字助理的更多細節(jié)可在提交于2010年1月18日的名稱為"Intelligent AutomatedAssistant"的美國實用專利申請12/987, 982、以及提交于2011年6月3日的 名稱為"GeneratingandProcessingDataItemsThatRepresentTaskstoPerform', 的美國實用專利申請61/493, 201中找到,這兩個美國實用專利申請的整個公開內(nèi)容以引 用方式并入本文。
[0088] 在很多情況下,數(shù)字助理能夠基于來自用戶的請求的形式的語音輸入來推斷用戶 的意圖,并通過提供用戶請求所尋求的信息或者通過根據(jù)用戶請求執(zhí)行任務來滿足用戶的 請求。然而,有時數(shù)字助理未能為針對信息或動作的用戶請求提供令人滿意的響應。失敗 的原因可能有很多,諸如有缺陷的語音識別、用戶請求中未識別的詞語和概念、數(shù)字助理的 服務中不正確或不完整的信息和不足的能力,等等。不管數(shù)字助理未能為用戶請求提供令 人滿意的響應的原因是什么,都期望為數(shù)字助理實施適當?shù)挠柧毺卣鱽矸乐刮磥聿荒軡M足 所述用戶請求。
[0089] 如圖3B中所示,在一些實施例中,數(shù)字助理326還包括訓練模塊340,訓練模塊 340被配置為在訓練模塊340檢測到未能為用戶請求提供令人滿意的響應(或者檢測到在 數(shù)字助理和用戶之間的對話中出現(xiàn)僵局)時改變或調(diào)整語音轉(zhuǎn)文本處理(例如語音識別中 使用的語言模型、聲音模型、詞匯)、自然語言處理(例如語法、知識本體等)或任務流處理 的一個或多個參數(shù)。在一些實施例中,訓練模塊使用在未能生成對用戶請求的令人滿意的 響應之后來自用戶的澄清輸入。在一些實施例中,訓練模塊引出與失敗的用戶請求有關(guān)的 來自用戶的澄清響應。
[0090] 在一些實施例中,數(shù)字助理326還包括眾包模塊342,眾包模塊342被配置為收集 來自一個或多個其他DA客戶端102 (例如一個或多個外部CS信息源)的與失敗的用戶請求 相關(guān)的反饋信息并使用反饋信息來補充數(shù)字助理在語音處理(包括語言識別)、自然語言 處理(包括意圖推斷)、和/或任務流處理(包括任務執(zhí)行)方面的能力。例如,眾包反饋 信息有助于識別特定口音或方言的語音、擴展與域相關(guān)聯(lián)的詞匯、和/或識別附加域?qū)嶓w。 在一些實施例中,眾包反饋信息被(數(shù)字助理自己或者數(shù)字助理的提供方)用來創(chuàng)建附加 域和任務流,以進一步擴展數(shù)字助理的能力。
[0091] 在一些實施例中,眾包模塊342建立并維持眾包(CS)知識庫358。CS知識庫358 存儲應對數(shù)字助理提供給用戶的信息性或任務請求的眾包信息。在一些實施例中,CS知識 庫358的內(nèi)容通過數(shù)字助理最初未能成功響應、但隨后利用眾包信息滿足的先前用戶請求 的紀錄來組織。CS知識庫358向數(shù)字助理提供參考和信息,以針對未來接收的相同或類似 的用戶請求提供令人滿意的響應。在一些實施例中,CS知識庫358被組織以便于自然語言 處理器的搜索。例如,CS知識庫358中的信息和回答通過知識本體360中的節(jié)點來索引, 使得自然語言處理器的基礎(chǔ)結(jié)構(gòu)可被操控以快速地找到一個或多個相關(guān)域中過去的問題 和回答。
[0092] 在一些實施例中,訓練模塊340、眾包模塊342和CS知識庫358是數(shù)字助理系統(tǒng) 326的部件,并且能通過各種內(nèi)部應用接口訪問各種其他部件。在一些實施例中,訓練模塊 340、眾包模塊342、和CS知識庫358中的一者或多者、或者其一個或多個子部件任選地獨 立于數(shù)字助理系統(tǒng)326來提供,并且數(shù)字助理系統(tǒng)326通過一個或多個外部應用編程接口 (API)訪問這些模塊中的每一者及其子部件。在一些實施例中,基于存儲在CS知識庫358 中的信息來修改數(shù)字助理系統(tǒng)326的各個方面(諸如語言轉(zhuǎn)文本、自然語言處理或任務流 處理),以提高數(shù)字助理系統(tǒng)326的未來性能。
[0093] 在一些實施例中,數(shù)字助理基于用戶請求和數(shù)字助理與用戶之間的交互來為用戶 設(shè)備104的用戶維持用戶日志370。用戶日志任選地存儲信息,諸如所接收的用戶請求、 圍繞用戶請求的上下文信息、提供給用戶的響應、和用戶提供的反饋(例如澄清輸入或拒 絕)、數(shù)字助理用來生成和提供響應的參數(shù)、模型、第三方服務、和過程等等。在一些實施例 中,用戶日志能通過各種搜索參數(shù)來搜索,各種搜索參數(shù)諸如是時間、位置、用戶、人口統(tǒng)計 特征、響應類型、反饋類型、任務類型、持續(xù)時間、失敗類型等。
[0094] 雖然圖3B沒有明確地示出數(shù)字助理326的所有部件之間的通信接口,但應當理 解,所示出的部件能夠直接地或者通過一個或多個其他接口(諸如應用編程接口(API)、數(shù) 據(jù)庫查詢接口、和/或其他接口、協(xié)議、和/或通信信道)與數(shù)字助理326的其他部件通信。
[0095] 圖4A至4C是根據(jù)一些實施例的用于訓練數(shù)字助理的方法400的流程圖。在一些 實施例中,方法400在包括一個或多個處理器和存儲器的電子設(shè)備(例如相應DA客戶端 102或DA服務器106)處執(zhí)行。在一些實施例中,方法400由被電子設(shè)備的所述一個或多個 處理器執(zhí)行的存儲在存儲器(例如非暫態(tài)計算機可讀存儲介質(zhì))中的一組指令來管理。
[0096] 在一些實施例中,在數(shù)字助理與用戶之間的對話(402)期間,電子設(shè)備接收(404) 來自用戶的至少一個語音輸入。在數(shù)字助理與用戶的對話期間,圖3B例如示出了被配置為 接收來自用戶的至少一個語音輸入的I/O處理模塊328。語音輸入例如包括用戶對動作的 請求(諸如"給媽媽打電話")或者用戶對信息的請求(諸如"告訴我去往大盆地州立公園 的路線")。
[0097] 在一些實施例中,在對話期間,電子設(shè)備基于所述至少一個語音輸入來推斷(406) 初始意圖。圖3B例如示出了被配置為生成與用戶請求(例如"給媽媽打電話")相關(guān)聯(lián)的 相應符號序列的語音轉(zhuǎn)文本處理模塊330。繼而,自然語言處理器332被配置為從語音轉(zhuǎn)文 本處理模塊330獲取相應符號序列,并將相應符號序列與可執(zhí)行意圖(或任務)關(guān)聯(lián)。這 個將相應符號序列與可執(zhí)行意圖關(guān)聯(lián)的過程有時被稱為意圖推斷。自然語言處理器332將 相應符號序列與跟知識本體360內(nèi)的域(例如"電話呼叫"域)相關(guān)聯(lián)的可執(zhí)行意圖(例 如"發(fā)起電話呼叫"可執(zhí)行意圖)關(guān)聯(lián)。隨后,自然語言處理器332生成結(jié)構(gòu)化查詢來代表 所識別的可執(zhí)行意圖。例如,用于"發(fā)起電話呼叫"的結(jié)構(gòu)化查詢?nèi)芜x地包括以下參數(shù):名 字}、{:電話號碼},等等。在一些實施例中,自然語言處理器332用來自用戶請求的"媽媽" 填充{名字}參數(shù),并用用戶數(shù)據(jù)348中存儲在用戶通訊錄中的媽媽的手機號碼填充{:電 話號碼}參數(shù)。
[0098] 在一些實施例中,在對話期間,電子設(shè)備提供(408)初始響應來滿足已推斷出的 初始意圖。任務流處理模塊336被配置為從自然語言處理器332獲取結(jié)構(gòu)化查詢,并執(zhí)行 與可執(zhí)行意圖相關(guān)聯(lián)的最終任務。因此,任務流處理器336根據(jù)結(jié)構(gòu)化查詢中包含的具體 參數(shù)來執(zhí)行相應任務流模型中的步驟和指令。例如,用于可執(zhí)行意圖"發(fā)起電話呼叫"的任 務流模型包括用于發(fā)起電話呼叫的步驟和指令。例如,通過使用結(jié)構(gòu)化查詢諸如:{發(fā)起電 話呼叫,名字=媽媽,電話號碼=媽媽的手機號碼},任務流處理器336執(zhí)行以下步驟:(1) 詢問用戶其是否希望接著給媽媽的手機號碼打電話;以及(2)調(diào)用電話呼叫應用程序來給 媽媽的手機號碼打電話。
[0099] 在一些實施例中,在對話期間,電子設(shè)備接收到(410)來自用戶的拒絕初始響應 的跟進語音輸入。圖3B例如示出了被配置為接收來自用戶的拒絕初始響應的跟進語音輸 入的I/O處理模塊328。例如,用戶通過說"不。停止"(例如跟進語音輸入)來對數(shù)字助 理的初始響應"您想要我給媽媽的手機打電話嗎? "進行響應。
[0100] 電子設(shè)備檢測(412)數(shù)字助理與用戶之間對話期間的僵局,其中對話包括至少一 個來自用戶的語音輸入。圖3B例如示出了被配置為檢測數(shù)字助理與用戶之間對話(例如 包括至少一個用戶語言輸入)期間的僵局的訓練模塊340。參考以上實例,訓練模塊340在 數(shù)字助理接收到來自用戶的拒絕初始響應的跟進語音輸入(例如"不。停止")時檢測到對 話中的僵局。
[0101] 在一些實施例中,僵局包括由以下各項組成的組(414)中的一者:對所述至少一 個語音輸入的初始響應的單次用戶拒絕,其中初始響應與令人滿意的響應不同;對所述至 少一個語音輸入的一個或多個相應不同響應的兩次或更多次用戶拒絕;以及結(jié)束對話的用 戶命令。在一些具體實施中,訓練模塊340被配置為在單次用戶拒絕初始響應之后檢測到 僵局,如以上實例中所述。在一些具體實施中,訓練模塊340被配置為在兩次或更多次用戶 拒絕對所述至少一個語音輸入的兩個或更多個相應不同響應之后檢測到僵局。例如,數(shù)字 助理接收來自用戶的拒絕來自數(shù)字助理的初始響應(例如"您想要我向媽媽的手機打電話 嗎?)的跟進語音輸入(例如"不。停止"),并且在接收到拒絕初始響應的跟進語音輸入之 后,數(shù)字助理問用戶"您想要我給媽媽的辦公室打電話嗎?",其中辦公室電話號碼不同于 手機號碼。在該實例中,數(shù)字助理接收來自用戶的拒絕第二響應的第二跟進語音輸入(例 如"不。我也不想給媽媽的辦公室打電話")。在接收到來自用戶的拒絕第二響應的第二跟 進語音輸入之后,數(shù)字助理檢測到僵局。在一些具體實施中,訓練模塊340被配置為在用戶 執(zhí)行退出與數(shù)字助理的對話的命令時檢測到僵局。例如,用戶按下結(jié)束命令來停止電話呼 叫連接到媽媽,或者用戶鎖定電子設(shè)備,或者用戶按下主命令來退出對話。在上述實例中, 用戶中斷與用戶請求相關(guān)的任務的完成。
[0102] 在一些實施例中,在檢測到僵局之后,電子設(shè)備獲?。?16)建立學習會話的用戶 授權(quán)。圖3B例如示出了被配置為獲取來自用戶的建立學習會話的授權(quán)的訓練模塊340。例 如,訓練模塊340調(diào)用對話處理模塊334來向用戶查詢其是否想要建立學習會話以解決僵 局并生成對用戶請求的令人滿意的響應。
[0103] 響應于檢測到僵局,電子設(shè)備建立(418)與來自用戶的所述至少一個語音輸入相 關(guān)聯(lián)的學習會話。圖3B例如示出了被配置為在檢測到僵局之后建立學習會話以生成對用 戶請求的令人滿意的響應以及防止未來與該用戶請求相關(guān)聯(lián)的僵局的訓練模塊340。在一 些實施例中,在學習會話期間,訓練模塊340被配置為臨時調(diào)整語音轉(zhuǎn)文本處理(包括語音 識別)、自然語言處理(包括意圖推斷)和/或任務流處理(包括任務執(zhí)行)的一個或多 個參數(shù),以生成對用戶請求的令人滿意的響應。在一些實施例中,在學習會話期間,訓練模 塊340被配置為臨時改變語音轉(zhuǎn)文本處理和/或自然語言處理的一個或多個閾值,以與在 正常操作期間相比生成對用戶請求的更多的不同響應。
[0104] 在一些實施例中,在學習會話期間并且在接收來自用戶的一個或多個后續(xù)澄清輸 入之前,電子設(shè)備提供(420)對來自用戶的所述至少一個語音輸入的兩個或更多個替代響 應。圖3B例如示出了被配置為提供對用戶請求的兩個或更多個替代響應的訓練模塊340。 例如,在用戶拒絕數(shù)字助理對用戶請求(例如"給媽媽打電話")的初始響應(例如"您