專利名稱:使用輸入-輸出示例的語義實體操縱的制作方法
技術領域:
本發明設計語義實體操縱,尤其是使用輸入-輸出示例的語義實體操縱。
背景技術:
世界范圍內的數百萬人使用電子表格等來存儲和操縱數據。這些數據操縱場景通常包括將大量的輸入信息從一種格式轉換為另一種格式,或者需要對輸入信息執行計算以產生所需輸出。通常,手動地或使用小的、通常是一次性的應用來實現這些任務,這些應用由終端用戶或由程序員為終端用戶來創建。
發明內容
·
此處描述的語義實體操縱技術實施例生成能夠基于輸入-輸出示例來操縱表示語義實體的字符串的概率程序。該程序隨后可用于從輸入-輸出示例中包括的一種類型的輸入來生成與該示例一致的所需輸出。這允許基于終端用戶所提供的輸入-輸出示例來將輸入信息從一種格式轉換成另一種格式,并在輸入信息上執行計算以產生所需輸出。一般而言,在一個實現中可通過首先接收前述的輸入-輸出示例來實現上述內容。每個輸入-輸出示例提供一個或多個輸入項和對應的所需輸出項。對所接收的輸入和輸出項進行解析以產生經加權的解析集。這些經加權的解析中的每個表示對每個輸入和輸出項的不同的潛在解析,其中根據對基于與規定的解析庫相比該解析是有效的解析的可能性的度量來對該解析進行了加權。接下來,對于每個輸入-輸出示例,從一種類型的變換庫中標識一個或多個變換,該一個或多個變換可從該示例的輸入項生成所需輸出項。另外,標識格式化指令,該格式化指令能夠對輸出項進行格式化以便與輸入-輸出示例的所需輸出項的格式化相匹配。當已經處理了全部輸入-輸出示例時,生成概率程序,在給定與輸入-輸出示例的輸入項類型相同的一個或多個輸入項時,該概率程序采用所標識的變換和格式化指令來產生與該一個或多個輸入項相對應的輸出項。隨后接收與輸入-輸出示例的輸入項類型相同的一個或多個輸入項,并且使用所生成的概率程序來產生輸出項。應該注意,提供本發明內容是為了以簡化的形式介紹將在以下具體實施方式
中進一步描述的一些概念。本發明內容并非旨在標識所要求保護的主題的關鍵特征或必要特征,也不旨在用于幫助確定所要求保護的主題的范圍。
參考以下描述、所附權利要求書以及附圖,將更好地理解本發明的具體特征、方面和優點,附圖中圖I示出了用于生成基于輸入-輸出示例執行數據操縱任務的程序的程序生成系統,以及將該程序應用于新的輸入項的程序執行模塊。圖2示出了包括圖I的程序生成系統和程序執行模塊的數據操縱系統。圖3是示出圖2的程序生成系統的一種操作方式的概覽的流程圖。
圖4是示出(圖2的)程序生成系統如何使用三部分操作來生成程序的流程圖。圖5和6共同示出一個示出圖2的程序生成系統中使用的變換模塊的一種操作方式的示例。圖7是例如通過示出變換模塊的一種操作方式的概覽來補充圖5和6的示例的流程圖。圖8示出用來對語義實體實例進行舍入的舍入變換過程。圖9示出貨幣數據表,其中終端用戶想要使用列-3中所示的日期的貨幣兌換率將列-I中的貨幣轉換成列-2中所示的貨幣類型,從而獲得輸出列中所示的結果。第一行示出了終端用戶所提供的輸入-輸出示例。圖10示出了距離數據表,其中取決于到某些特定位置的通勤屬性(諸如到用戶辦·公室的高峰時間駕駛時間、到最近體育館的步行距離、以及到最近大學的駕駛距離),終端用戶想要從(在表的第一列中概括地呈現其地址的)8個公寓中作出明智的選擇。圖11示出了用于將雙精度值格式化成各種輸出格式的格式串表。圖12示出了用于將日期-時間24/9/1986 18:23:05格式化成各種輸出格式的格式串表。圖13示出了帶有三種不同格式的日期的電子表格(即,美國格式月/日/年,歐洲格式日.月.年,以及中國格式年-月-日)。注意到這些日期中的某些缺少年份,其被假定默認為今年。圖14是大致闡述實現此處描述的語義實體操縱技術實施例的示例性過程的流程圖。圖15示出了用于實現圖14的過程的語義實體操縱系統的一個實現。圖16是描繪了構成用于實現此處所描述的語義實體操縱技術實施例的示例性系統的通用計算設備的圖示。
具體實施例方式在以下對語義實體操縱技術實施例的描述中,對附圖進行了參考,附圖構成了實施例的一部分且在其中作為說明示出了可在其中實踐該技術的具體實施例。可以理解,可以使用其他實施例并且可以做出結構改變而不背離本發明技術的范圍。另外,一些附圖在一個或多個結構組件(被不同地稱為功能、模塊、特征、元素等)的上下文中描述概念。附圖中所示的各個組件可以用任何方式來實現。在一種情況下,附圖中所示出的將各種組件分離為不同的單元可以反映在實際實現中使用對應的不同的組件。可另選地,或者另外地,附圖中所示出的任何單個組件都可以通過多個實際組件來實現。可另選地,或者另外地,對附圖中的任何兩個或更多個單獨的組件的描繪可以反映由單個實際組件所執行的不同的功能。其他附圖以流程圖形式描述了概念。以此形式,某些操作被描述為構成以某一順序執行的不同的框。這樣的實現是說明性的而非限制性的。此處描述的某些框可被分組在一起并在單個操作中執行,某些框可被分成多個組成框,并且某些框可以按與此處所示出的不同的次序來執行(包括以并行方式執行這些框)。流程圖中所示的各個框可以用任何方式來實現。
關于術語,短語“配置成”涵蓋可以構造任何種類的功能來執行所標識的操作的任何方式。術語“邏輯”或“邏輯組件”涵蓋用于執行任務的任何功能。例如,流程圖中示出的每一個操作都對應于用于執行該操作的邏輯組件。在由計算系統(例如,“計算功能”)實現時,邏輯組件表示作為計算系統的物理部分的、無論是如何實現的物理組件。下列的說明可以將一個或多個特征標識為“可選”。這種陳述不應該被解釋為可以被視為可選的特征的詳盡的說明;也就是說,其他特征也可以被視為可選,雖然在文本中沒有顯式地標識。類似地,說明可以指出一個或多個特征可以以復數實現(即,通過提供一個以上的特征)。這種陳述不應該被解釋為可以重復的特征的詳盡的說明。最后,術語“示例性”或“說明性”指的是可能多個實現中的一個實現。I. O概覽及與父專利申請的關系在本部分延續申請的父申請中,描述了基于多個輸入-輸出示例來生成程序的程序生成系統。輸入-輸出不例包括輸入項和對應的輸出項。在一個實現中,該程序生成系·統包括三個組件模塊。解析模塊分別處理輸入項和輸出項以提供多個輸入部分和輸出部分。變換模塊為每個輸出部分確定使用從候選轉換器模塊集合中選擇的一個或多個轉換器模塊是否能從對應的輸入部分產生該輸出部分。格式化模塊生成將所選擇的輸出部分變換成原始輸出項所指定的形式的格式化指令。這三個模塊產生實現從輸入-輸出示例學習到的邏輯的所生成的程序;該所生成的程序隨后可用于將新的輸入項變換成新的相應的輸出項。為了更好地理解此處描述的語義實體操縱技術實施例,首先將呈現對父申請中描述的系統的回顧,并隨后將呈現對該系統的表示語義實體操縱技術實施例的修改。I. I父專利申請系統圖I示出了基于輸入-輸出示例來創建程序的說明性程序生成系統102。每個輸入-輸出不例包括一個輸入項和對應的輸出項。輸入項可包括此處被稱為輸入部分的一個或多個組成部分。輸出項也可包括被稱為輸出部分的一個或多個組成部分。每個輸出項表示對對應的輸入項執行的某種類型的變換。例如,一個輸出項可包括表示對從輸入項取得的一個或多個對應輸入部分的直接復制的一個或多個輸出部分。另夕卜,或另選地,一個輸出項可包括表示對一個或多個對應輸入部分的變換(非直接復制)的一個或多個輸出部分。另外,或另選地,一個輸出項可包括被應用到其內容的格式化,該格式化不同于被應用到對應輸入項的格式化。另外,或另選地,一個輸出項可包括不具有對應輸入項內的相對部分的一個或多個輸出部分。另外,或另選地,輸出項不需要包括對應輸入項中的每個輸入部分的相對部分。例如,圖I呈現了數據文件106的說明性輸入-輸出示例集104。輸入-輸出示例集104包括多個輸入項108和對應的多個輸出項110。在該示例中,輸入項包括單列字母數字輸入信息;同樣,輸出項110包括單列字母數字輸出信息。然而,在其他情形中,數據文件106可包括映射到兩列或更多列輸出信息的單列輸入信息。在另一情形中,數據文件106可包括映射到單列輸出信息的兩列或更多列輸入信息。在又一情形中,數據文件106可包括映射到兩列或更多列輸出信息的兩列或更多列輸入信息,以此類推。此外,數據文件106可以按照任何方式來組織輸入信息和輸出信息的集合(即,作為列組織的替換或補充)。更一般而言,圖I所示的示例可以按照很多不同的方式來變化。
在圖I的特定場景中,輸入項表示原始格式的發票。輸出項表示輸出格式的經變換版本的發票。例如,第一輸入項包括特定格式的日期(“2-2-15”),表示2015年2月2日的日期。輸出項將該日期變換成另一種格式,即通過打印月份名稱的縮寫(即,“Feb. (二月)”)。另外,輸出項將月份縮寫的第一個字母從大寫變換成小寫,從而產生“feb. ”。第一個輸入項還包括城市的名稱,即“Denver (丹佛)”。輸出項將該城市信息變換成對應的經縮寫的州信息,即“CO(科羅拉多)”。第一個輸入項還包括以美元計的成本值,即“152. 02”。輸出項重復該成本值,但將該值舍入到最接近的美元金額,從而產生了 “152”。第一個輸入項還包括串“Paid(已付)”。輸出項以逐字的方式重復該串。此外,注意(第一個輸入-輸出不例的)輸出項包括對應的輸入項中不存在的附加信息。例如,輸出項包括三個逗號,而輸入項僅包括單個逗號。此外,輸出項在成本數字“152”的前面添加美元符號“$”。此外,與對應的輸入項相比,輸出項以不同的方式來排列信息。例如,輸入項將位置信息(“Denver”)放置在成本信息(“152.02”)之前,而輸出項將成本信息(“152”)放置在位置信息(“CO”)之前。最后,輸出項用黑體來呈現最后的串(“Paid”),而在輸入項中不用黑體來呈現它。如可以理解的是,僅出于解釋的目的來·呈現該特定的示例。其他輸入-輸出示例可以按照任何方式不同于該場景。數據文件106還包括尚不具有對應的輸出項的另一組未經變換的輸入項112。對于小型數據集,用戶可以研究輸入-輸出示例集104以便發現被用于將輸入項變換成對應的輸出項的邏輯。用戶可隨后為符合該邏輯的一組新的輸入項112手動地生成新的輸出項。然而,該手動操作隨著數據文件106的大小的增加而變得不切實際。為了解決這個問題,程序生成系統102自動地生成幫助用戶將一組輸入項112變換成所需輸出形式的程序114。從高級觀點來看,程序生成系統102基于輸入-輸出示例集104來生成程序114。程序執行模塊116隨后將程序114應用到一組新的輸入項112。這產生了一組新的輸出項。例如,程序114自動地將新的輸入項“4-19-15 Yakima 292.88,Paid” 變換成 “apr 2015,$293,WA, Paid”。圖2示出了可利用圖I的程序生成系統102和程序執行模塊116的一個說明性數據操縱系統200。通常,圖2劃分了不同的模塊以清晰地標識這些相應的模塊所執行的功能。在一種情形中,這些模塊可以表示不同的物理組件。在其他情形中,一個或多個模塊可以表示一個或多個其他模塊內的組件。從高級觀點來看,程序生成系統102結合任何類型的數據操縱功能202來操作。數據操縱功能202表示用于對數據項執行處理的任何工具。在一種情形中,數據操縱功能202可以提供允許用戶檢查并修改數據項的用戶界面。例如,在一種情形中,數據操縱功能202可以表示允許用戶以表格形式操縱數據項的電子表格系統。可被使用的一個電子表格系統是位于華盛頓州雷德蒙市的微軟 公司所提供的Microsoft OfficeExcel 。在另一情形中,數據操縱功能202可以表示文檔編輯應用內的表操縱功能,等等。數據操縱功能202可以與其他功能204交互。例如,數據操縱功能202可以從其他功能204接收數據項,或者向其他功能204發送數據項。其他功能204可以表示任何類型的應用模塊(諸如文檔編輯應用、電子表格應用等)。另選地,或者另外,其他功能204可以表示任何類型的網絡可訪問的實體。例如,其他功能204可以表示可經由因特網訪問的遠程數據存儲中所維護的數據項集合。
在操作中,用戶可向數據操縱功能202提供輸入-輸出示例集合。例如,在一個情形中,用戶可以手動地創建輸入-輸出示例集。在另一情形中,用戶可以指導數據操縱功能202在包括輸入-輸出示例的數據文件中讀取。可以從任何源獲得數據文件,諸如可表示(相對于數據操縱功能202的)本地源和/或遠程源的其他功能204。在指導后,數據操縱功能202可使用程序生成系統102來提供程序114。該程序114表達了在輸入-輸出示例中體現的邏輯。程序執行模塊116可隨后使用程序114來自動地處理新的輸入項以便生成新的輸出項。圖2將數據操縱功能202和程序生成系統102作為兩個不同的相應模塊來示出。在另一情形中,數據操縱功能202可以合并程序生成系統102作為其組件之一,反之亦然。同樣,圖2將程序執行模塊116作為數據操縱功能202內的一個組件來示出。在另一情形中,數據操縱功能202和程序執行模塊116可以表示兩個不同的模塊。數據操縱功能202可在不同的模式中調用程序生成系統。在一種模式中,用戶可以例如通過在數據操縱功能202所提供的用戶界面演示內激活命令按鈕、菜單項等來顯式·地調用程序生成系統102的功能。用戶可隨后顯式地標識輸入-輸出示例集以便用于生成程序114。在另一模式中,數據操縱功能202可包括檢測功能,該檢測功能檢測用戶正在對輸入項集合重復地執行相同類型的變換以提供對應的輸出項。數據操縱功能202可隨后基于用戶已經提供的輸入-輸出示例來自動地調用程序生成系統102。這些使用模式是代表性的,而非窮盡性的。數據操縱功能202可在其他操作模式中與程序生成系統102交互。用戶可以直接地或間接地調用程序生成系統102以實現不同的數據操縱目標。在第一個場景中,在存在將以第一格式表達的信息轉換為以第二格式表達的信息的某些環境專用的需求的情況下,用戶可以調用程序生成系統102。例如,在一個情形中,用戶可從另一個人(或多個人)接收第一格式的信息。基于任何環境專用的考慮,用戶可能希望將該信息變換成該用戶更能接受的第二格式。在另一情形中,用戶本身可能已經用第一格式創建了該信息。用戶現在可能希望將該信息變換成第二格式。在又一情形中,用戶可以從源應用、數據存儲等接收以第一格式表達的信息。用戶可能希望將該信息轉換成更適于目標應用、數據存儲等的第二格式。例如,用戶可能希望將該信息從文檔編輯應用所使用的格式轉換成電子表格應用所使用的格式,反之亦然。在又一情形中,用戶希望將以標記語言格式(例如,XML、HTML等)表達的信息轉換成非標記語言格式,等等。這些示例是作為示例而非限制來呈現的。在第二場景中,出于從(從任何源獲得的)輸入項提取一個或多個數據項的主要目的,用戶可以直接地或間接地調用程序生成系統102。在該場景中,第二格式表示以第一格式表達的信息的子集。在第三場景中,用戶可以基于與第一場景和第二場景相關聯的理由的組合,直接地或間接地調用程序生成系統102。例如,除從輸入項提取信息以外,用戶可能希望對所提取的信息執行任何類型的變換。用戶還可以向輸出項添加輸入項中不具有相對部分的信
肩、O上文所描述的數據操縱場景是代表性的,且非窮盡性的。用戶可以調用程序生成系統102以實現其他的數據操縱目標。關于物理實現,圖2中所示的各個模塊和系統可由一個或多個計算設備來實現。這些計算設備可以位于單個位置或可以分布在多個位置。例如,本地數據操縱功能202可以與本地程序生成系統102交互以便執行上面所總結的功能。在另一情形中,本地數據操縱功能202可以與遠程網絡實現的程序生成系統102交互以便實現此處描述的功能。此外,圖2中所示的各個模塊和系統可由單個實體或多個實體來管理。任何類型的計算設備可用于實現圖2中所描述的功能,諸如本說明書的示例性操作環境部分中提到的那些。程序生成系統102和數據操縱功能202還可以與一個或多個數據存儲206交互。例如,數據存儲206可以存儲輸入-輸出示例等。有了上面的介紹,解釋現在前進至程序生成系統102的說明性合成。程序生成系·統102包括(或可被概念化為包括)模塊集合。該部分提供對這些模塊的概覽。后面的各個部分提供有關每個模塊的附加細節。作為概覽,程序生成系統102可以用三部分過程將輸入-輸出不例轉換為程序114 :解析模塊208執行第一部分;變換模塊210執行第二部分;以及格式化模塊212執行第三部分。更具體而言,解析模塊208標識輸入項的各個部分。解析模塊208還可以標識輸出項的各個部分。變換模塊210確定能否使用一個或多個轉換器模塊來計算解析模塊208所標識的每個輸出部分。變換模塊通過在數據存儲220內搜索來執行該任務。數據存儲220提供候選轉換模塊集合。一般地,每個候選轉換模塊基于至少一個預定規則,將輸入信息變換成輸出信息。格式化模塊212提供將所選擇的輸出部分變換成原始輸出項所指定的形式的格式化指令。例如,格式化模塊212可以按照與輸出項所指定的格式相匹配的次序來排列輸出部分。此外,格式化模塊212可以打印常量信息以與輸出項中呈現的不變信息進行匹配。程序生成系統102可以輸出所生成的程序114,該程序114反映了解析模塊208、變換模塊210和格式化模塊212所執行的處理。所生成的程序114可用于基于輸入-輸出示例集合中所體現的邏輯來將新的輸入項變換成新的輸出項。在一個情形中,程序生成系統102將所生成的程序114表達為要以特定次序調用的程序模塊的集合。一個或多個程序模塊可以表示變換模塊210所標識的轉換器模塊的實例化。一個或多個其他程序模塊可以通過提取新輸入項中的內容并在對應的新輸出項中打印所提取的內容來操作。一個或多個其他程序模塊可以執行格式化模塊212所標識的影響輸出部分的外觀(但不必是內容)的格式化操作,等等。圖3示出了呈現圖I的數據操縱系統200的操作的高級描述的過程300。在框302,數據操縱系統200接收輸入-輸出示例集。每個輸入-輸出示例包括數據項(包括一個或多個輸入串項)和輸出項。在框304,數據操縱系統200基于輸入-輸出示例來創建程序114。在框306,數據操縱系統200使用程序114來將附加的新輸入項(尚未被變換的)變換成新的輸出項。圖4示出了呈現對程序生成系統102產生所生成的程序114的方式的更詳細的描述的過程400。在框402,程序生成系統102接收輸入-輸出示例集。在框404,程序生成系統102將每個輸入項解析為各組成輸入部分,并將每個輸出項解析為各組成輸出部分。在框406,程序生成系統102標識可將輸入部分轉換成相應的輸出部分的變換(如果有的話)。這些變換由從候選轉換器模塊集合中選擇的各個轉換器模塊來執行。在框408,程序生成系統102生成將所選擇的輸出部分變換成輸出項所指定的適當形式的格式化指令。在框410,程序生成系統102在框404-408所執行的分析的基礎上輸出所生成的程序114。2. O語義實體操縱此處描述的語義實體操縱技術實施例通常修改前述的解析、變換和格式化模塊操作的方式、以及程序生成系統產生所生成的程序的方式。更具體而言,此處描述的語義實體操縱技術實施例引入了關于解析、變換、格式化和程序生成的概率方法。一般地,引入了語義實體的模塊框架,該模塊框架擴展了類的概念以使其功能對使用串界面的終端用戶而言是容易訪問的,該模塊框架允許設計者輕松地定義新實體以及對這些實體的操作。另外,引入了對概率編程方案的設計以便于操縱表示前述語義實體的串。該方案中的程序包括經加權的解析-計算-打印表達式集。還呈現了與用戶提供的輸·入-輸出示例集一致的使用概率編程方案的方式。一般地,語義實體就像(使用無負效應方法的)庫類周圍的包裝器以使其功能對使用串界面的終端用戶而言是容易訪問的。它方便了從非結構化且可能有噪聲的串到底層類的正則表示的轉換,以及采用優質打印機來將底層類的正則表示轉換成串。提供基于串的輸入和輸出界面具有允許終端用戶對類功能(包括在線可用的功能或字典)的輕松訪問的益處。然而,注意到終端用戶提供的輸入和輸出示例可以展示潛在的模糊性(即多個解釋)、噪聲(即數據差錯)、和丟失的信息(諸如隱式的默認)。為了解決這種情形,采用要求實體設計者指定可能字段值的硬和軟約束以及任何串和有效字段值之間的相似度度量的通用概率解析器框架。為了操縱語義實體的串表示,采用前述的概率編程方案,其程序由經加權的解析-計算-打印表達式集(也稱為pep表達式)來構成。解析表達式位于pep表達式的葉端,并且允許從串表示轉換為某種正則表示(即某種歸一化的中間表示)。打印表達式位于表達式的頂層,并且允許從正則表示轉換為所需串表示。由于即使在給定解析表達式下輸入串也可具有多種解析,因此每個PCP表達式對輸入串的語義解釋返回經加權的一組輸出串。具有(經加權的)這種PCP表達式集服務于兩個目的。第一,它允許對條件控制流進行編碼。另外,由于這些表達式是從不完美的信息學習到的,因此它允許對PCP表達式的概率分布的表示。每個程序還包括經加權的解析描述符集。該集合捕捉了可從示例的語料庫中構建的統計解析知識。該集合用于在pep表達式中執行給定串之前進一步細化對該給定串的可能解析。此處描述的語義實體操縱技術實施例還使終端用戶能夠使用web上可用的數據進行計算。這是重要的,因為研究表明大多數用戶通過使用web上可用的數據或服務來解決他們日常生活中的大部分計算問題。此處描述的語義實體操縱技術實施例提供多種方式來啟用對web上可用的數據和服務的無縫訪問。例如,在一個實現中,對計算模塊的界面不作假設,并且實際上,這些計算模塊可以是通過因特網的API調用,諸如以便計算給定日期的兩種貨幣間的兌換率,或者以便計算兩個地址之間的駕駛距離。此外,在一個實現中,一個實體的有效值集合或一個實體的給定字段可被某個數據服務提供方約束為屬于web上可用的集合。這在這種集合是巨大的并且無法被本地地存儲或無法隨時間持續地更新時是有用的。現在將在隨后部分中更詳細地描述語義實體操縱技術實施例的前述特征。2. I語義實體語義實體(或簡單地,實體)是庫類周圍的包裝器以使其功能對使用串界面的終端用戶而言是容易訪問的。在一個實現中,一個實體與底層類、字段集合、約束、以及ToCanonical和FromCanonical方法相關聯。可從這種實體的數據庫中獲得這些語義實體。另外,開發者可以生成新的實體,并且直接地提供它們或者將其存儲在語義實體數據庫中。底層語義實體類具有帶有一組無負效應的方法的未暴露的規范接口。語義實體字段具有(類型化的)表示,其中每個類型可以是另一個實體或基類型。注意到本說明書中使用的術語“字段”還可以指實際字段的某些表示。語義實體約束包括硬和軟約束兩者。軟約束是指定有效的字段分配和字段或定界符之間可能的次序的經加權的約束集。硬約束·被定義為是具有權重等于I的軟約束。還可以包括可作為對實體實例(包括對字段的某些子集的分配)和解析格式描述符(字段名稱和定界符序列)的布爾檢查來實現的任何約束集。在一個實現中,使用以下謂詞來表達約束I) InSet (f,S):字段 f 從有限集 S 取值。Range (f,i,j)是 InSet (f,S)的特殊情形,其中 S= {i, . . . , j}。2)FieldOrder (f,Γ ):在實體解析格式描述符中字段Γ跟在f之后。 3) DelAfter (f,d):定界符d跟在字段f之后。4) DelBefore (f, d):定界符d出現在字段f之前。例如,假設名為“DateTime (日期時間)”的類的語義實體具有以下字段集“Month (月),,,“Day(日),,,“Year (年),,,“Hours (時),,,“Minutes (分)'“Seconds (秒),,和“AM-PM(上午-下午)”,并且“Month”字段具有帶有對應的硬約束的以下表示MonthNum :該表示從集合{1,2, · · · , 12},即 Range (MonthNum, 1,12)中取整數月份值;以及Monthffords :該表示從集合{January, February, . . . , December},即InSet (Monthffords, {January, , December})中取串月份值。還假設“DateTime”與以下軟約束相關聯。即,“Hours”字段后面更有可能跟著“Minutes” 字段,即(FieldOrder(Hours, Minutes))。另外,“AM-PM” 字段前面更有可能是“Seconds”、“Minutes” 或“Hours” 字段,即 FieldOrder (Seconds, AM-PM)、FieldOrder (Minutes, AM-PM)、和 FieldOrder (Hours, AM-PM)。軟約束的某些其它示例包括使用用于匹配Name(姓名)實體的姓、名以及Address (地址)實體的地址的在線字典。前述的ToCanonical和FromCanonical方法用于分別將實體實例轉換為正則表示以及從正則表示轉換為實體實例。更具體而言,ToCanonical方法e — e。用于將實體實例轉換為實體的正則表示。FromCanonical方法^eXF — e執行將正則表示形式的實體實例轉換為給定字段集F的逆操作。例如,假設名為“ Length (長度)”的類的語義實體具有以下字段集“ kms (千米)”,“m(米)”,“cm(厘米)”,“_(毫米)”,“ft (英尺)”,“inches (英寸)”等。還假設“cm”字段表示該實體的正則表示。“Length”的ToCanonical方法在使用針對“cm”的轉換因子對全部字段值進行適當地歸一化之后將其相加。FromCanonical方法取正則長度單位實例e。和字段集(f\,. . .,fn),并且在各字段間拆分實體值e。,使得該值被包裝在下一更高字段。如果沒有可用的更高字段來包裝,則最高字段存儲額外的量。例如,假設學校教師想要以ft-inches (英尺-英寸)的格式來登記班級中學生的身高,但是從學生獲得的
身高數據非常不規則-即以各種度量系統(例如,m、cm、in、m-cm等)。ToCanonical和
FromCanonical方法可將不規則的輸入轉換為一致的格式,諸如ft-inches或任何其他所需格式。這通過首先將數據轉換為正則形式并隨后轉換為所需格式來完成。在一個實現中,實體字段由基類型而非實體類型來表示時,該基類型與將一個串作為輸入并產生另一個串的優質打印機PP集合相關聯。這種基類型的示例是整型、串、雙精度型。在一個實現中,采用以下優質打印機方案來便于對基類型進行豐富的格式化(進而使得能夠對其字段具有這種基類型的實體進行豐富的格式化)。
·
I) Identity :Identity打印機如實地打印串;2) UpperCase UpperCase打印機以大寫格式打印串;3)LowerCase LowerCase打印機以小寫格式打印串;4)ProperCase ProperCase打印機以合適的大小寫格式打印串;5) Prefix (k) =Prefix (k)打印機打印串的長度為k的前綴;6) IntOrd =IntOrd打印機以序數形式打印串所表示的整數,例如I打印成Ist (第一);7) IntegerPrecision (d) IntegerPrecision (d)打印機以整數 d 位表示的格式打印該整數;8)DoublePrecision(d) DoublePrecision(d)打印機打印具有確切的 d個小數點位精度的浮點數;9) DoubleAtMost (d) =DoubleAtMost (d)打印機打印具有最多d個小數點位精度的浮點數;以及10) DoubleAtLeast (d) DoubleAtLeast (d)打印機打印具有至少d個小數點位精
度的浮點數。解析格式描述符中的優質打印機從這些打印機之一中取值。解析格式描述符需要學習 Prefix(k)、IntegerPrecision(d)和 DoublePrecision(d)優質打印機的附加自變量參數。開發者可以提供可能對給定實體有用的一組這種自變量值。例如,對于“DateTime”中的“Month”字段,大小k = 3的前綴通常可能是有用的。2. 2概率編程方案如前所述,在一個實現中,采用概率編程方案以便于操縱表示前述的語義實體的串。現在將描述該編程方案。隨后將在對語義實體的解析、操縱和打印的描述中采用該方
案的語目。一般地,使用概率編程方案生成的程序包括經加權的解析-計算-打印(pep)表達式集。該方案的獨特特征是對于給定輸入,所生成的程序產生經加權的一組輸出,而不是單個輸出。2. 2. I 句法在一個實現中,概率編程方案采用以下句法
I)程序 P = {PD, PCP},其中 F1D = Kp1, W1), . . . , (pk, wk)},并且 PCP = {(O1,W1), . . . , (0n, wn)};2)解析描述符 P = [fd1; . . . , fdj ;3)字段-定界符對 fd = (fjj, constStr);4)pcp 表達式 O := printEntityE(C, q);5)計算表達式 C := parseEntityJsp p) IiKC1, · · · , Cn);以及6)打印格式 q := Format ((JM1, PP1),…,(fdn, ppn))。該語言中的程序P被定義為經加權的解析描述符集H)和解析-計算-打印表達式集PCP。符號W表示這些權重。·(實體的E)解析(格式)描述符P是對fd的序列,其中每個對包括E的某個字段(及其表示標識符)和定界符。為記法方便,解析描述符的表示通常通過簡單地串接序列中和對內的全部元素來被展平為一個串(例如,[況!Str1), (f2 ;str2), (f3 ;str3)]被表不為 fjStrjf2Str2T3Str3)。也被稱為pep表達式的解析-計算-打印表達式O是printEntityE(C,q)形式,其中C是某個計算表達式并且q是實體E的打印格式描述符。計算表達式C具有遞歸的句法。它或者是將串Si和實體E (基本情形)的解析格式描述符P作為輸入的parSeEntityE(Si,P)表達式,或者是其自變量也是計算表達式(遞歸情形)的變換表達式T。打印(格式)描述符q就像解析描述符,除了每個字段與優質打印機相關聯。其類型是實體的字段的優質打印機本身是打印格式描述符,而其類型是基類型的字段的優質打印機是其相關聯的優質打印機之一(如2. I節所描述的)。例如,考慮帶有兩個輸入列的電子表格。第一列包括日期,并且第二列包括表示多個營業日的整數。終端用戶想要將第二列中的營業日的數量添加到第一列中的日期,并且在第三列中以特定方式對所得的日期進行格式化。例如,如果一個電子表格行在第一列中包括串“24/09/1986”在第二列中包括串“3”,且用戶期望在第三列中顯示“Monday,24thSeptember 1986” (1986年9月24日,星期一),則程序中執行所需操縱的pep表達式O之一可被表不為O = printEntityDateTime (addBusinessDays (C1, C2), q3),其中Cl = parseEntity^^^^Si, P1)C2 = parseEntityDuration(s2, p2)P1 = Day1ZMonth2ZYear1p2 = Days1q3 = Format ((DayOfffeek1, ", " ), stringP), (Day1, " "), intSupP),(Month2, " " ),stringP), (Year1, ε,intP))其中實體字段名稱的下標表示對應的字段表示。串S1和S2表示分別位于第一和第二列中的串。空串由ε來表示。2. 2. 2 語義在一個實現中,概率編程方案采用以下語義!{PD, ΡΟΡ}]σ = [PCP]PDffIUOpW1UOwW,,)-- = ((o,', w/ X ιν/)|(ο :,νν;) G |θ7·|ροσ}
|01ΡΟσ = [J (ΙΟΙπ)
TregetAIIParses(a, PD)
getAIIParses(a,PD)
={[sj η (ToCanonica^e,·,),pi7,wy)] , | (ef/,p..,wy)
e getAIIParses(a(s;),PD)|·^priiitEntityE(C, ρ)]ττ=let(esw) = JCJn in
let Ci = FromCanonicaI(e,p) in(printEntityFD(e', p), w)
IT(C1iH^Cii)If=IetieilWi) = IQln in
let m/ = Min(wL,·", wn) in
(T(Wn)iW)
iparseEntityE(st!p)jTT=Zet(e,p w) = TT(Si) in
Ietw' = MatchParse(p\p) in
(ef w X w!)在輸入狀態O中對程序P求值的語義(向串變量Si分配值)就是在輸入狀態O中對pep表達式集PCP求值。在輸入狀態σ中對PCP = {(O1, W1), . . , (0n, wn)}求值的語義是首先在狀態σ中對每個pep表達式Oj求值以便獲得一組經加權的輸出串(0i,w' J,并且隨后在通過將權重w, i乘以Wj來對權重進行歸一化之后取所有這種集合的并集。在輸入狀態σ中對pep表達式Oj求值首先包括使用函數getAllParses (取所有解析)從σ計算經加權的已解析狀態集π。這就是使用作為程序P—部分的經加權的解析描述符集ro之處。將在2. 3節中描述解析串的getAllParses函數。與向變量分配串值的狀態σ不同,經加權的解析狀態向每個變量s分配包括實體實例e、解析描述符P和權重w的(正則表示的)元組(e,p, w)。隨后在每個經加權的已解析狀態π中對pep表達式(^求值以獲得經加權的串來作為輸出。于是,在輸入狀態σ中對(^_求值的結果就是全部這種經加權的串的集合。注意,這是如何將概率解釋分配到帶有可能的模糊解析的對輸入串的pep表達式的執行。在經加權的解析狀態π中對pep表達式O」=printEntityE(C, q)求值包括對π中的計算表達式C求值,這產生經加權的實體實例(e,w)。根據打印格式描述符q,將由此獲得的實體實例e從其正則表示轉換為表示e'。根據打印格式描述符q,進一步將實體實例e'轉換為串表示。對計算表達式T(C1; . . .,Cn)的遞歸情形求值包括對其自變量遞歸地求值。通過在與對自變量求值的結果相對應的正則實體實例上調用變換T來生成正則實體實例。對應的權重被計算為與每個自變量的求值結果相關聯的權重的最小值。這表示如下事實當且僅當計算所需要的每個輸入都具有高置信度時,高置信度才與計算的結果相關聯。在經加權的解析狀態π中對計算表達式parseEntiryJSi, ρ)的基本情形求值包括計算格式描述符V和P之間的接近度度量W',其中p'是元組π (Si)中的解析描述符。權重^隨后用于調整與狀態π中的串Si相對應的實體實例e的權重W。當且僅當串Si需要與P類似的有效解析描述符時,該加權歸一化有助于向頂層pep表達式提供更高的權重。注意,給定P= {PD,KOpW1), ·.,(0n, Wn)}} ο令σ為輸入程序狀態。與狀態O (中的變量元組)的每個(經加權的)解析JIi和每個pep表達式(0j,Wj)相對應,生成經·加權的輸出串對(0# w e _ σ。當且僅當以下量均為高時,W' ij的值是相對高的-與狀態η中(Oj中使用的)串的解析相對應的權重、那些解析與在pep表達式Oj的葉端出現的對應的解析描述符之間的相似度度量、以及Wjo接下來三節強調前述的概率編程方案的三個關鍵功能方面,即將串解析為實體、對實體進行計算、以及將實體打印為串表示。2. 3說明性解析模塊本節描述前述的解析模塊的一個實現,該解析模塊提供了前述概率編程方案提出以將串解析為經加權的解析集的豐富的概率支持——包括模糊串(帶有多個解析的串)和有噪聲的串(沒有有效解析的串)。在學習階段期間執行解析以解析示例中的輸入和輸出串兩者,從而學習潛在的計算表達式集。在運行時期間還對輸入執行解析以供程序執行。2. 3. I字段匹配解析始于標識字段匹配。這些將用于構建解析圖,如將稍后描述的。給定串s和實體e,字段匹配被定義為s中的與e的字段相匹配的最長子串。串s中字段f的全部字段匹配集Mf (S)被定義為Mf(s) = {(i, j) I s[i. . j]}是s的與字段f相匹配的最長子串。2. 3. 2 解析圖解析圖G用于表示作為實體e的示例的給定串s的全部解析。給定串s和實體e,可以如下構建解析圖。在一個實現中,通過以下方式從字段匹配集Mf (S)構建解析圖G= (V7E)0串s中存在與每個索引i相對應的一個節點Iii e V(G) (O < i < Len(s))。這帶來圖中的|V| =Len(s) (s的長度)個節點。圖中的邊集被劃分為兩種,即字段邊Ef (G)和定界符邊Ed(G),使得 E (G) = Ef (G) UEd (G)。有向邊(u, V, I) e E(G)對應于節點u到節點V之間的用標記I來標記的邊。如果(i,j) e Mf(S),則存在字段邊(叫,Iij, f) e Ef(G)0如果(j彡i),則還存在定界符邊(叫,Iij,d) e Ed(G)。注意,給定的子串可以與多個字段相匹配,并且因此兩個給定節點之間可存在多個字段邊。定界符邊還弓I起與定界符值e相對應的自循環。解析P被定義為G中從節點Ii1到Ikenis)的有向路徑,使得該路徑上的邊在字段邊Ef(G)和定界符邊Ed(G)之間交替。形式上,若滿足以下條件,則解析P被定義為有向路徑
02 · · · 7 θ]ζ):De1 · u = Ii1其中路徑的開始節點G1 · U是串的起始;
2)ek · V = nLen(s)其中路徑的結束節點ek · V是串的結尾;3)ei e Ef(G)當且僅當e Ed(G),Vi > 0,其中如果ei是字段邊,則路徑上的前一條邊Θη是定界符邊;以及4)e, e Ed(G)當且僅當e Ef (G),Vi > 0,其中如果力是定界符邊,則路徑上的前一條邊Θη是字段邊。解析集SP包括所有這種解析P。函數getParseGraph (取解析圖)將串s和實體e作為自變量,并且返回對應的解析圖G。2. 3. 3匹配解析函數MatchParse (匹配解析)將兩個解析描述符P1和P2作為自變量(其中解析描述符之一來自解析描述符庫,并且另一個與語義實體相關聯,該語義實體與輸入或輸出·項相關聯),并且計算表示這兩個格式描述符之間的相似度的權重I字段和定界符的完美匹配被賦予最高的權重。在一個實現中,如果兩個格式描述符未完美地匹配,則計算兩個格式描述符之間字段與定界符匹配之間的漢明距離。與漢明距離成反比地計算表示接近度度量的權重。2. 3. 4GetAl IParse 方法函數getAllParses將串s和解析描述符集H)作為自變量,并且返回經加權的實體實例集以及表示對串s的不同解析的對應解析描述符。該函數首先使用getParseGraph函數根據s和e來構建解析圖G。向程序中的每條解析路徑P分配與其滿足的軟約束的部分及與H)中解析描述符的相似度成比例的權重W。該函數隨后返回一組經加權的實體和解析描述符元組(e, P, w)。2. 4說明性變換模塊本節描述圖2的變換模塊210的一個實現。如前所述,變換模塊210標識可用于將輸入部分變換成對應的輸出部分的一個或多個轉換器模塊。如在父專利申請中所描述的,并且參考圖5和6,將示出不同的輸出部分如何對應于不同的各個輸入部分。對于每個這種情形,變換模塊210調查(數據存儲220中的)候選變換器模塊集合以確定是否存在可執行將所標識的輸入部分變換成對應的輸出部分的一個或多個轉換器模塊。在一個情形中,變換模塊210標識可執行所需轉換的單個轉換器模塊。在其他情形中,變換模塊210標識在以指定順序應用時執行所需轉換的兩個或更多個轉換器模塊。在其他情形中,變換模塊210可能無法找到執行所需轉換的任何轉換器模塊。以標記為“A”的場景開始,變換模塊210標識可基于輸入項中的數字月份“2”在輸出項中生成“feb”的兩個轉換器模塊(502、504)。即,轉換器模塊502接收數字月份作為輸入并且生成三個字母的月份標記(例如,Feb)作為輸出。轉換器模塊504接收首字母大寫的句子作為輸入并且生成小寫的句子作為輸出。在場景B中,變換模塊210標識可基于輸入項中的數字“15”在輸出項中生成“2015”的單個轉換器模塊506。即,轉換器模塊506接收兩位數字的年份數作為輸入,并且生成四位數字的年份數作為輸出。在場景C中,變換模塊210標識可基于輸入項中的“Denver”在輸出項中生成“CO”的單個轉換器模塊508。即,轉換器模塊508接收城市名稱作為輸入,并且生成對應的州名作為輸出,其中州名對應于該城市所位于的州。轉換器模塊508可使用預定的查找表來執行這種類型的轉換。在場景D中,變換模塊210標識可基于輸入項中的數字“152. 02”在輸出項中生成數字“152”的單個轉換器模塊602。即,轉換器模塊902接收浮點美元金額作為輸入,并且生成舍入后的美元金額作為輸出。雖然該示例中沒有使用,但在其他場景中,變換模塊210可以依賴轉換器模塊604將貨幣信息從一種貨幣基礎轉換為另一種,例如,從英鎊轉換為美兀等。在場景E中,變換模塊210基于解析模塊208所提供的解析信息來確定輸出項中的單詞“Paid”與輸入項中的同一單詞確切地匹配。在該情形中,變換模塊210可以放棄嘗試尋找一個轉換器模塊來生成輸出部分“Paid”。相反,程序生成系統102將生成程序模塊606,該程序模塊606簡單地提取輸入項中最后的單詞并在輸出項中將其作為最后的單詞
來重復。
·
在一個實現中,變換模塊210接連應用不同的候選轉換器模塊以標識產生所需結果的轉換器模塊。在使用特定轉換器模塊的每個計算之后,變換模塊210可以確定由該轉換器模塊生成的輸出信息是否以一致的方式與輸出項內的輸出部分相匹配。例如,對于場景C,變換模塊210可以接連向不同的候選轉換器模塊提供城市名稱集合。變換模塊210可以推斷城市-到-州轉換器模塊508生成與輸出項中所標識的州名一致地匹配的串。因此,變換模塊210可以推斷轉換器模塊508是用于在輸出項中生成州名的適當選擇。如上所述,在某些情形中,變換需要使用兩個或更多個轉換器模塊來將輸入部分轉換為對應的輸出部分。因此,變換模塊210還可有條不紊地調查轉換器模塊的不同組合。圖7示出了以流程圖形式總結以上概念的過程700。在框702,變換模塊210確定能否通過從對應的輸入項直接復制對應的輸入部分來得出考慮下的輸出部分。若是,則變換模塊210可以放棄框704中執行的調查。在框704,變換模塊210可以確定能否使用一個或多個轉換器模塊從對應的輸入部分得出考慮下的輸出部分。圖7中的循環指示了變換模塊210可以重復上面的分析直到它已經標識了可用于生成輸出項的輸出部分的轉換器模塊的完整集合。在某些情形中,變換模塊210可以推斷使用轉換器模塊無法得出一個或多個輸出部分。實際上,在某些情形中,變換模塊210可以推斷使用轉換器模塊無法得出任何輸出部分。在上面的示例中,假設(與輸入-輸出項相關聯的)全部輸入項采用了一致的格式。在該情形中,如果轉換器模塊(或轉換器模塊的組合)提供了對輸入-輸出示例的全部實例的成功變換,則該轉換器模塊是可行的選擇。在其他實現中,程序生成系統102可以處理采用兩種或更多種格式的輸入項。例如,假設圖I的輸入項包括描述發票信息的兩種方式。在該情形中,變換模塊210可以標識對輸入-輸出示例的第一子集有效的第一轉換器模塊(或轉換器模塊的組合)以及對輸入-輸出示例的第二子集有效的第二轉換器模塊(或轉換器模塊的組合)。所生成的程序114可以使用在輸入項中出現的條件線索來確定將調用第一轉換器模塊還是第二轉換器模塊。在一個實現中,程序生成系統102使用可擴展框架來實現候選轉換器模塊集合。如果新的轉換器模塊符合可擴展框架(在此處描述的語義實體操縱技術實施例的情形中,這可以是前述的概率編程方案)所闡述的格式,則開發者可將這些新的轉換器模塊添加到
^ 由
: 口卞 O
在此處描述的語義實體操縱技術實施例的上下文中,變換模塊210標識為示例輸入-輸出條目將與輸入相關聯的語義實體變換成與輸出相關聯的對應的語義實體的轉換器模塊。然而,當找到生成所需結果的一個搜索時,對合適的轉換器模塊的搜索并未終止。相反,由與正被考慮的語義實體的類型相關聯的每個轉換器模塊所產生的結果的連續分析繼續,直到考慮了全部這種轉換器模塊。當多個轉換器模塊(或多個轉換器模塊的不同組合)中的每個產生對語義實體的所需變換時,在產生輸出時考慮全部這些轉換器模塊,如將稍后描述的。另外,在此處描述的語義實體操縱技術實施例的上下文中,變換模塊采用之前描述的概率編程方案向設計者提供的實現任意計算模塊的豐富支持,而不需要終端用戶擔心可發現性或使用句法。回想計算表達式C是parseEntity^Si, p)表達式或變換表達式T(C1,.. .,Cn)。在此,T是將語義實體的正則表示作為輸入并以正則表示來輸出某個語義實體的任何變換。與被實體包裝的底層類或數據類型相關聯的無負效應方法是有用變換的良好選擇。
·
在以下章節中,描述了一些有用的變換來支持實際上終端用戶將期望的一大類任務。如可以理解的,這些示例是作為示例而非限制來呈現的。轉換器模塊集合還可包括其它類型的模塊。2. 4. I算術變換在多個上下文中,對輸入實體執行算術運算以產生所需輸出可以是有用的變換。例如,在一個實現中,可以構建標識輸入中的日期-時間串并還標識持續時間串的“DateTime”實體。給定該數據,可以執行多個算術變換以產生日期-時間輸出。例如,“addDuration (加上持續時間)”和“subtractDuration (減去持續時間)”轉換器模塊可被生成以分別加上或從所標識的日期-時間中減去所標識的持續時間以便產生另一個日期-時間。“DateTime”實體還可以支持計算兩個日期-時間串之間的營業日數量的“getBusinessDays (取得營業日)”轉換器模塊、或計算兩個日期-時間之間的持續時間的“getDuration(取得持續時間)”轉換器模塊。作為另一個示例,在一個實現中,可以構建標識表示長度度量的輸入中的串的“Unit”實體。可隨后計算“addLength(加上長度)”或“substractLength(減去長度)”轉換器模塊以分別加上或減去所標識的長度度量對以便計算輸出長度度量。2. 4. 2舍入變換對輸入實體執行舍入計算以產生所需輸出也可以是非常有用的變換。例如,可以使用轉換器模塊對表示從銀行余額、股票價格到員工的工作時間等數據的輸入實體進行舍入。該舍入可能需要將貨幣金額向上(upper)舍入到四分之一美元、將時間向下(lower)舍入到半小時時隙、將數字舍入到最接近(nearest)的整數等。與數字度量相關聯的以及具有其字段之間已定義的全部次序的全部實體可以支持達到所需精度的舍入變換。落入該種類的某些常見實體有日期-時間、持續時間、單位、數字和貨幣。在一個實現中,如下實現該舍入變換。將實體z作為零基準,roundoff (e, z, k, f,Mode)變換(使用可以是向下、向上或最接近輸入的模式“Mode”)將實體e的值舍入為字段f的k值的倍數。基于以下屬性來定義該舍入I)與實體實例e相關聯的數字度量匪(e)。為每個實體定義基本字段fbase e Fields (e)。為全部其他字段f e Fields (e)定義將字段值轉換為基本字段值的轉換因子C/ e t。數字度量隨后被定義為匪(e) =E
f E Fields (e)
(Cf*Vf),其中Vf表示字段f的值。2)零元素 z。·3)由PF = k*cf定義的精度因子(PF)。可采用諸如圖8中所示的“roundoff (舍入)”轉換器模塊計算來對實體實例e執行(e,z, k, f, Mode)舍入變換。它首先計算數字值度量匪(e)和精度因子PF值。隨后它·計算通過將匪(e)_z除以PF得到的商q和余數r。根據商和余數值,在位于所需精度邊界上的實體值上計算下限Le和上限Ue。方法getEntity Jnteger — e返回與數字度量自變量相對應的實體。根據所需舍入模式“Mode”,返回適當的實體e'。2. 4. 3網絡變換網絡變換是通過使用計算機網絡(諸如因特網或專用內聯網)上可用的語義字典或服務來支持的那些實體變換。此處描述的語義實體操縱技術實施例為終端用戶提供對這種服務的無縫訪問,而無需學習和編寫web腳本。下面描述了與兩個示例性實體(即,貨幣實體和地址實體)相關聯的一些示例性網絡變換。2. 4. 3. I 貨幣實體在一個實現中,對于兩種貨幣對和給定日期,可以設計并采用轉換器模塊來獲得給定日期的普遍貨幣兌換率。例如,在圖9所示的表900中,終端用戶想要使用列-3中所示日期906的貨幣兌換率來將列-I中的貨幣902轉換為列-2904中所示的貨幣類型,從而獲得輸出列908中所示的結果。出于此目的,終端用戶手動地采用接收源貨幣類型、目的貨幣類型和交易日期以給出貨幣兌換率的貨幣轉換小部件。具體而言,終端用戶向貨幣轉換小部件提供串“USD (美元)”、“EUR(歐元)”和“24/05/2010”,并得到例如結果“0.800192046091”。終端用戶使用該結果來填充輸出列中第一行的條目。此處描述的語義實體操縱技術實施例的一個實現使用貨幣轉換器模塊,自動地將用黑體示出的值填充在輸出列的其余單元格中。2. 4. 3. 2 地址實體某些示例性地址實體相關的變換包括以下。對于地址對象,獲得其當前的本地時間、天氣、緯度、經度、和最近的設施(例如,機場、公共汽車站、咖啡店等)。對于兩個地址對象的對,獲得駕駛時間/距離、在高峰時段交通的駕駛時間、它們之間的步行時間/距離。對于兩個城市的對(不是地址本身,而是位置)和給定日期,獲得它們之間直航的信息以及該直航最便宜的報價。可以經由因特網輕松地獲得這種類型的信息。因此,在一個實現中,給定一個地址(或某種類型的位置),轉換器模塊可被設計為獲得所需經計算的信息作為輸出。例如,在圖10所示的表1000中,取決于到某些特定位置的通勤屬性,諸如(表1000的各個輸出列標題1004、1006、1008呈現的)到用戶辦公室的高峰時段駕駛時間、到最近體育館的步行距離、和到最近大學的駕駛距離,終端用戶想要從(其地址位于表1000的第一列1002中的)8個公寓中作出明智的選擇。終端用戶為第一行獲得該信息。此處描述的語義實體操縱技術實施例的一個實現使用適合的轉換器模塊,自動地用所需信息(未示出)來填充輸出列的其余單元格。2. 4. 3. 3 其他實體
包括獲得與其他語義實體有關的信息的變換的其他感興趣實例包括取得各個網站所存儲的個人數據(例如,財務組合、信用卡花費)、或存儲在活動目錄中的有組織的數據(例如,日歷細節、管理分層結構)的那些變換。2. 5說明性格式化模塊本節描述了圖2的格式化模塊212的一個實現。如前所述,格式化模塊212生成格式化指令,該指令將輸出部分以原始輸出項指定的形式呈現給終端用戶,該原始輸出項是用戶所提供的示例的一部分。前述的概率編程方案為將實體作為串來打印提供了豐富的支持。這由pep表達式的頂層構建printEntityE來啟用,該pep表達式將打印格式描述符q = {(f!, (I1, pp),(fn,dn,ppn)}作為輸入,該打印描述符是包括字段表示、定界符和優質打印機的元組序列。printEntity構造函數的語義包括使用函數printEntityFD來打印使用q的對應的實體實例,該實體實例根據q將實體實例作為字段表示和定界符串的序列來打印。對字段表示的·打印使用元組中相關聯的對應優質打印機來發生。對基礎數據-類型字段的打印由2. I節中描述的優質打印機方案來處理。對實體-類型字段的打印通過在實體實例以及與該字段相對應的打印描述符上遞歸地調用printEntityFD來完成。例如,圖11不出微軟公司的Excel 電子表格應用或C#編程語言所需要的格式化串以便以不同格式打印雙精度值。圖12示出用于微軟公司的Excel 電子表格應用或C#編程語言中的日期-時間對象的格式串。打印格式描述符表達式q是足夠可表達的以便表示這些格式化意圖中的每個。此外,格式化模塊可從輸入-輸出示例中推斷出這些格式化意圖中的每個。因此,用戶無需記住格式化描述符。2. 6學習概率程序給定輸入-輸出示例,可以習得語義實體操縱程序P,當在其他非示例性輸入上運行時,該語義實體操縱程序P計算所需輸出。不失一般性,假設輸入是串的元組,而輸出是單個串。概率程序P包括兩個分量經加權的解析描述符集ro和經加權的pep表達式集。首先,將描述如何從給定的輸入和輸出示例中學習到經加權的解析描述符集H)。對于每個串s,在全部輸入和輸出示例中,使用方法getAllParses來計算s的全部解析的集合{(e1; P1, W1), . . . , (en, pn, wn)}。令 HV 為與每個串 s 相對應的集合{(P1, W1), . . . , (pn,Wn) }的多集合并集。如果P1 =Py貝1J (PirW^W2)可迭代地代替HV中的任意兩個元素(P1,W1)和(p2, W2) O PD隨后被定義為結果集HV O例如,考慮帶有三種不同格式的日期的電子表格(即,美國格式月/日/年,歐洲格式日.月.年,和中國格式年-月-日),如圖13所示。注意到這些日期中的某些缺少年份,其被假定默認為今年。用戶所需的該計算最好被描述為條件計算,其中從輸入(如果存在的話)復制輸出中的年份,或者如果輸入不包括年份則默認是今年。這由先前所描述的通過將語義實體操縱程序表示為(經加權的)pep表達式集來處理。這種程序(對輸入)的概率解釋對其對應的解析表達式與輸入更接近地匹配的那些PCP表達式賦予更多的權重。終端用戶還想要以(斜體示出的)前兩個輸出示例所指示的統一格式來對日期進行格式化。輸出格式具有若干細微差別。例如,使用三個字母的前綴和首字母大寫(即,第一個字母是大寫)來打印月份串。使用適合的后綴“st”、“nd”、“rd”或“th”來打印天數。注意到,此處描述的語義實體操縱技術實施例通過允許開發者將優質打印機例程僅與諸如串和整數等基類型相關聯來支持這種豐富的格式化。輸入串數據具有多種解釋和噪聲。這是由如先前所描述的通過使用概率解釋以生成經加權的解析集(權重越高,解析就越有可能)來處理的。具體而言,對于輸入6/3/2008,相比日/月/年,偏好于解析月/日/年,因為計算Jun 3rd,2008 (2008年6月3日)所產生的計算是最簡單的一個(即,恒等映射)。對于輸入2. 5. 2008,相比月.日.年,偏好于解析日.月.年,因為解析描述符日.月.年在電子表格中具有更加顯著的出現(具體而言,25. 3. 2007具有解析日·月·年)。輸入’09-Fabruary-l有可能被解析為年-月-日,因為串Fabruary最接近地匹配于月份名February (二月),并且“ ”字符位于整數09之前,這可能是在兩位數字年份串之前出現的定界符。可以習得將從前兩個輸入-輸出示例和圖13所示的其余非示例性輸入中生成所需輸出的語義實體操縱程序。更具體地,解析描述符P1 = Day1 · Month1 · Year1 (日月年)的權重是解析描述符P2 = Month1 ^Day1 ^Year1 (月日年)的權重的4倍。這是因為存在P1 是有效解析描述符的4個輸入(即,2. 5. 2008,25. 3. 2007,26. 3. 2007,27. 3. 2007),而 僅存在P2是有效解析描述符的I個輸入(即2. 5. 2008)。因此,相比與P2相對應的解析,輸入日期2. 5. 2008具有與對應于Pl的解析相關聯的更高的權重。這示出了對經加權的解析描述符的使用允許概率解析以便正確地估計模糊的輸入串的最有可能的解析。現在假設電子表格具有有噪聲的輸入5. 16. 2010。與解析描述符相關聯的權重仍將按4到2而有利于Pl,并且因此2. 5. 2008的最高經加權的解析將仍是與P1相對應的那一個。這示出了對經加權的解析描述符的使用在數據中存在噪聲的情況下保持了概率解析穩健。接下來,將描述如何學習到經加權的pep表達式集PCP。考慮包括輸入-輸出示例之一的單個行。對于示例行的第i列中的輸入串Si,使用getAllParse方法來獲得其經加權的解析描述符(e,P,w)集$。每個解析以其正則形式返回實體實例e。以類似的方式,計算整行的解析描述符集= G1X - X Gk。隨后獲得輸出串r的解析描述符集&。對于使得《61,卩1,1^1),...,(^,卩;^1^)> E G的每個輸入實體實例矢量S = G1,…,⑴以及使得{β',ρ',w') e C的每個輸出實體實例^,學習將各映射到^的一組經加權的計算C。針對可用的變換集執行基于類型的窮盡搜索以便計算d (對在一個實現中的計算中所使用的變換數量有限制)。任何計算^· e ^的Weight (C)(權重)被定義為十,w' )χ
simplicity(C)(簡單性),其中在一個實現中,合成函數十被定義為min (最小值)函數,并且對C的簡單性度量被定義為C的大小的倒數。為了以所需輸出格式打印計算得到的實體e/ P還需要學習打印解析描述符q' r通過窮盡地搜索用于打印h中的字段表示f的優質打印機,從包括(f,d)對的解析描述符P' j學習打印解析描述符q, j。令PCP'為集合{(Pr/ 飯《卿(〔 .), wez+g/^(C)) I C G C}的多集合并集。如果O1
=O2,貝u (O17W^W2)可迭代地代替PCP'中的任意兩個元素(OpW1)和(02,w2)。PCP隨后被定義為結果集PCP'。例如,假設終端用戶想要將電子表格的列I中的帶6個小數點位的股票價格進行格式化成2個小數點位。終端用戶給出一個包括“12. 124532”作為輸入和“12. 12”作為對應的輸出的示例行。可實現該變換的兩個可能的計算是打印最多2個小數位以及確切地打印2個小數位。隨后,終端用戶給出一個將“12. I”作為輸入和“12. 10”作為輸出的另一個示例行。再次,兩個可能的計算是打印至少2個小數位以及確切地打印2個小數位。所學習到的概率程序P將包括經加權的pep表達式集,相比與“最多2個小數位”和“至少2個小數位”變換相對應的pep表達式的權重,該pep表達式集對于與“確切的2個小數位”變換相對應的pep表達式具有兩倍的權重,因為“最多2個小數位”和“至少2個小數位”變換僅在各示例之一中獲得結果。因此,當在新的輸入上運行P時,排序最高的輸出將對應于變換“確切的2個小數位”。該示例示出了用于生成經加權的pep表達式集的所學習到的語義實體操縱程序具有向表示跨多個輸入-輸出示例常見的計算的pep表達式賦予更多權重的合乎需要的屬性。考慮另一個示例。該示例示出了所學習的語義實體操縱程序如何對條件進行建模,諸如結合圖13所描述的缺少的年份特征。從兩個輸入-輸出示例中學習到帶有更高權 重的以下兩個pep表達式{printEntitye(^i, qi), W1 },{printEntitye (亡2,q2),w2},其中匕=(parseEntitye(si,Pi)),Pi = Month1ZDay1ZYear1, Q1 = {(Month2, " " , string-Pref ixP (3)), (Day1, ", ",IntOrd), (Year1, e ;Identity)} ,Ci = setYear(parseEntitye(s2, P2), 2010),p2 = Month1/Day1,并且q2與Q1相同。現在給定新的輸入“4· 24”,其解析描述符ρ = Month1. Day1 (月日)相比P1與P2更為匹配,并且因此將在該輸入上執行比恒等計算具有高得多的權重的計算己。所學習的程序正隱式地區分其解析描述符中不具有年份字段的輸入。2. 7說明性語義實體操縱過程鑒于前述,現在將描述用于實現此處描述的語義實體操縱技術實施例的一個示例性過程。參考圖14,示例性過程以接收輸入-輸出示例開始(框1400)。如前所述,每個輸入-輸出示例提供一個或多個輸入項和對應的所需輸出項。對所接收的輸入和輸出項進行解析以產生經加權的解析集(框1402)。這些經加權的解析中的每個表示對每個輸入和輸出項的不同的潛在解析,權重根據對基于與規定的解析庫相比該解析是有效的解析的可能性的度量對該解析進行了加權。接下來,選擇先前未被選擇的輸入-輸出示例(框1404)。從一種類型的變換庫中標識一個或多個變換,該種類型的變換可從所選擇的示例的輸入項生成所需輸出項(框1406)。另外,標識格式化指令,該指令能夠對輸出項進行格式化以便與對所選擇的輸入-輸出示例的所需輸出項的格式化相匹配(框1408)。隨后確定是否存在尚未被選擇的任何其余的輸入-輸出示例(框1410)。如果是,則重復動作框1404到1410的過程動作。當已經選擇并處理了全部輸入-輸出示例時,生成概率程序(框1412),在給定與輸入-輸出示例的輸入項相同類型的一個或多個輸入項時,該概率程序采用所標識的變換和格式化指令來生成與該一個或多個輸入項相對應的輸出項。隨后接收與輸入-輸出示例的輸入項相同類型的一個或多個輸入項(框1414),并且使用所生成的概率程序來產生與每個所接收的輸入項相對應的輸出項(框1416)。還有可能與接收輸入-輸出示例一起接收與輸入-輸出示例的輸入項相同類型的一個或多個輸入項。在這種情形中,解析輸入項和輸出項以產生經加權的解析集的前述動作可包括解析接收到的與輸入-輸出不例的輸入項相同類型的輸入項、以及與輸入-輸出不例相關聯的輸入和輸出項。關于解析輸入項和輸出項以產生經加權的解析集的動作,注意到在一個實現中,每個輸入項和輸出項是字符串,并且解析庫包括多個語義實體,每個語義實體具有一個實體類和字段集合。給定這一點,對于表示輸入和輸出項的每個字符串以及在解析庫中找到的每個語義實體,標識字段匹配集,其中每個字段匹配表示輸入或輸出項字符串中的與來自解析庫的一個語義實體的一個字段相匹配的最長子串。如前所述,從該字段匹配集構建解析圖,使得字符串中每個字符存在一節點。另外,對于每個字段匹配,字段邊從表示該字段匹配的起始字符的節點指向表示該字段匹配的結束字符的節點。另外,從表示字符串中的字符的每個節點和表示字符串中下一個字符的節點建立定界符邊緣。接下來,通過解析圖來標識解析路徑,其中每條解析路徑包括一個節點序列,該節點序列以表示字符串中第一個字符的節點開始并以表示字符串中最后字符的節點結束,并且該序列中的節點通過字段邊和定界符邊之間交替的邊來交替地連接。由此,每條所標識的解析路徑包括語義實體字段和定界符對的序列。接下來,為每條所標識的解析路徑計算約束權重因子。更具體地, 每個語義實體與經加權的約束集相關聯,該約束集為語義實體指定字段分配和字段或定界符之間的次序,其中對于更有可能被語義實體展示的約束,這種約束的約束權重更大。給定這一點,使約束權重因子與關聯于所考慮的語義實體的、解析路徑所滿足的約束的數量以及分配給每個所滿足的約束的約束權重成比例。例如,在一個實現中,這是通過將約束權重因子定義為所滿足的那些約束的權重之和與全部約束的權重之和的比率來完成的。接下來,計算對解析路徑和與語義實體相關聯的每個有效解析描述符集之間的相似度的度量。在一個實現中,這是通過計算與解析路徑和解析描述符之間的漢明距離成反比的接近度度量來實現的,使得解析路徑中語義實體字段和定界符的模式與解析描述符中語義實體字段和定界符的模式越接近,接近度度量越大。接近度度量隨后被指定為解析路徑的有效解析描述符相似度度量。這些有效解析描述符中的每個包括語義實體字段和定界符對的序列,該序列表示對語義實體的有效解析。隨后基于約束權重因子和為解析路徑計算的有效解析描述符相似度度量來計算解析路徑的權重值。在一個實現中,權重值與約束權重因子和更高的相似度度量直接地成比例。例如,它可被選擇成兩個量的乘積。解析路徑隨后被指定為語義實體的解析描述符,并且所指定的解析描述符和所計算的權重值與語義實體相關聯以便形成經加權的語義實體和解析描述符元組。注意到在一個實現中,每個經加權的語義實體和解析描述符元組的語義實體正轉換成該語義實體的規定的正則形式,如前所述。在實體的實體類中標識語義實體的規定的正則形式。關于標識來自一種類型的變換庫的可從輸入-輸出不例的輸入項中產生所需輸出項的一個或多個變換的動作,注意到在一個實現中,每個語義實體的實體類標識了適用于該實體類的一個或多個變換。給定這一點,如前所述,標識與輸入-輸出示例的輸入項相關聯的解析描述符元組、以及與輸入-輸出示例的輸出項相關聯的解析描述符元組。隨后,對于與輸入-輸出不例的輸入和輸出項的解析描述符兀組中的實體類相關聯的一個或多個變換中的每個,標識如下變換當被應用到與輸入項相關聯的所標識解析描述符元組的語義實體時,該變換產生與輸出項相關聯的所標識解析描述符元組的實體。另外,為所應用的變換計算加權因子,該加權因子表示對所應用的變換有多可能是所需變換的度量。一般而言,基于為輸入-輸出示例中輸入和輸出項的解析描述符元組所計算的權重值以及變換復雜度的度量來計算該加權因子。更具體地,在一個實現中,通過首先標識以下兩者中的最小權重值來計算加權因子1)與對其應用變換的輸入-輸出示例的輸入項相關聯的解析描述符元組的權重值,以及2)與對其應用變換的輸入-輸出示例的輸出項相關聯的解析描述符元組的權重值。接下來,計算所應用的變換的大小的倒數。計算所標識的最小權重與所應用變換大小的所計算的倒數的乘積,并將其指定為加權因子。注意在某些情形中,所需變換可能需要應用一個以上變換。鑒于此,在標識來自一種類型的變換庫的可從輸入-輸出示例的輸入項中生成所需輸出項的變換的動作的一個替換實現中,采用對前述過程的以下變化。更具體地,對于與輸入-輸出示例的輸入和輸出項的解析描述符元組中的實體類相關聯的一個或多個變換中的組合,該組合中達到變換的規定數量,標識如下變換組合當被應用到與輸入項相關聯的所標識解析描述符元組的語義實體時,該變換組合產生與輸出項相關聯的所標識解析描述符元組的實體。另外,將所應用的變換組合的加權因子定義為對其有多可能是所需變換組合的度量。
關于標識能夠對輸出項進行格式化以便與對輸入-輸出示例的所需輸出項的格式化相匹配的格式化指令的動作,一般而言,這可能需要將來自格式化指令庫的格式化指令與在解析描述符元組的解析描述符中所標識的每個語義實體字段相關聯,該解析描述符兀組與輸入_輸出不例的輸出項相關聯,該格式化指令以與該語義實體字段相關聯的輸出項部分所展示的格式來生成該描述符元組的語義實體的對應字段。更具體地,在一個實現中,這需要首先確定語義實體字段是否是與輸入-輸出示例的輸出項相關聯的解析描述符元組的解析描述符中標識的每個語義實體字段的一組規定基類型字段之一。只要語義字段被確定為基類型字段,就將格式化指令與已為該類型的基類型字段預定義的該語義字段相關聯。然而,只要與輸入-輸出示例的輸出項相關聯的解析描述符元組的解析描述符中的語義字段被確定為不是基類型字段(即,它是一個實體類型字段),則通過將上述過程遞歸地應用到該實體字段來標識格式化指令。關于生成概率程序的動作,其中給定與輸入-輸出不例的輸入項相同類型的一個或多個輸入項,該概率程序采用所標識的變換和格式化指令來產生與該一個或多個輸入項相對應的輸出項,在一個實現中這需要以下操作。對于輸入-輸出示例的輸出項的解析描述符元組中的每個語義實體,將變換、其經計算的權重因子、以及與輸出項相關聯的所標識解析描述符元組的語義實體的所標識的格式化指令進行組合來形成解析-計算-打印元組。為與輸入-輸出示例的輸入項的解析描述符元組中的實體類相關聯的一個或多個變換中的每個變換來完成這一點。隨后標識具有相同變換和格式化指令的解析-計算-打印元組。對于具有相同變換和格式化指令的每組解析-計算-打印元組,用具有與該組相同的變換和格式化指令以及作為該組中全部權重因子之和的權重因子的單個解析-計算-打印元組來代替該組。另外,標識輸入-輸出示例的輸入項和輸出項的具有相同解析描述符的解析描述符元組。對于具有相同解析描述符的每組解析描述符元組,用具有與該組相同的解析描述符以及作為該組中全部權重值之和的權重值的單個解析描述符元組來代替該組。最后對其余的解析描述符元組和解析-計算-打印元組進行組合以形成概率程序。關于使用所生成的概率程序來產生與所接收的輸入項相對應的輸出項的動作,注意到在每個經加權的語義實體和解析描述符元組的語義實體被轉換成規定的正則形式的實現中,應用變換將同樣以正則形式來產生語義實體。鑒于此,標識能夠對輸出項進行格式化以便與輸入-輸出示例的所需輸出項的格式化相匹配的格式化指令的前述動作還包括(如有必要)將該輸出項從規定的正則形式轉換成與輸入-輸出示例的所需輸出項一致的形式。2. 8說明性語義實體操縱系統鑒于前述,現在將描述用于實現此處描述的語義實體操縱技術實施例的一個示例性系統。參考圖15,示例性語義實體操縱系統1500包括解析模塊1502、變換模塊1504和格式化模塊1506。解析模塊1502對構成輸入-輸出示例的輸入項和輸出項1508進行解析以產生經加權的解析集。這些經加權的解析中的每個表示對每個輸入和輸出項的不同的潛在解析,其中根據對基于與解析庫相比該解析是有效解析的可能性的度量對該解析進行了加權。變換模塊1504從一種類型的變換庫1512標識可為每個輸入-輸出不例從輸入項產生所需輸出項的一個或多個變換。格式化模塊1506標識格式化指令,該指令能夠對輸出項進行格式化以便與對輸入-輸出示例的所需輸出項進行的格式化相匹配。 還存在生成概率程序1516的程序生成模塊1514,給定與輸入-輸出示例的輸入項相同類型的一個或多個輸入項,概率程序1516采用來自變換模塊1504的所標識的變換和來自格式化模塊1506的格式化指令來產生一組經排序的輸出項。按照為其計算的加權因子的次序對這些輸出項進行排序,加權因子表示了指示變換從與輸入-輸出示例相關聯的輸入項生成輸出項的準確度的度量。程序執行模塊1518用于使用所生成的概率程序1516來產生輸出項,該輸出項對應于與輸入_輸出不例的輸入項相同類型的所接收的輸入項。該程序執行模塊1518的一個實現產生與一組經排序的輸出項中排序最高的輸出項對應的輸出項。當一組經排序的輸出項中存在一個以上輸出項時,程序執行模塊1518產生一個指示符,該指示符指示其他排序較低的輸出項被產生并且可供查閱。2. 9說明性用戶界面操作本節結合電子表格程序來描述所使用的圖形用戶界面的一個實現。用戶首先選擇包括輸入和輸出列的電子表格的一個矩形區域。該被選擇的區域包括一個或多個輸入-輸出示例、以及需要其輸出的非示例輸入。將最多被填充的列作為輸入列來對待,而將較少被填充的列作為輸出列。然而,在一個實現中,用戶還可以選擇多個列范圍并明確地標識哪些列是輸入和哪些列是輸出。在輸入列中的大部分單元格具有空條目的情形中這尤其有利,因為它可能被認為是輸出列。將包括用于輸出列的條目的行作為用于將要為該輸出列學習的程序的輸入-輸出示例來對待。在一個實現中,用戶選擇“應用”按鈕(或類似的),并且電子表格被如下填充。如前所述地為每個輸出列生成語義實體操縱程序。對于每個輸出單元格da(行r和輸出列c),系統在行r中所指定的輸入狀態上運行用于輸出列c的所學習到的程序,以生成經排序的可能的輸出集O(或者可能只是具有足夠高的權重的那些輸出)。系統如下填充單元格
Qr,c I)如果O包括一個串,則系統用該串來填充單元格;2)如果O包括多個串,則系統用表示排序最高的解的串來填充單元格,但是突出顯示該單元格以向用戶指出用戶所提供的若干示例存在多個計算解釋,以及用戶可能想要調查被突出顯示的單元格的輸出的準確度;以及3)如果O為空,則系統用“?? ”來填充單元格以引起注意用戶應為該單元格提供輸出。用戶隨后可通過在任何單元格的內容上右擊來對其進行修改,其中打開允許用戶從對應序列O的其他串中選擇或一起提供新輸出的對話框。在任何這種修改之后,用經擴展的輸入-輸出示例集來自動地重復上面的學習過程,并且自動地更新電子表格的內容以反映新的所學習到的結果。3. O示例性操作環境此處描述的語義實體操縱技術實施例可在多種通用或專用計算系統環境或配置內操作。圖16示出其上可實現此處描述的語義實體操縱技術實施例的各個實施例和元素的通用計算機系統的簡化示例。應當注意,圖16中由斷開的線或虛線所表示的任何框表示 簡化計算設備的替換實施方式,并且以下描述的這些替換實施方式中的任一個或全部可以結合貫穿本文所描述的其他替換實施方式來使用。例如,圖16示出了概括系統圖,其示出簡化計算設備10。這樣的計算設備通常可以在具有至少一些最小計算能力的設備中找到,這些設備包括但不限于個人計算機、服務器計算機、手持式計算設備、膝上型或移動計算機、諸如蜂窩電話和PDA等通信設備、多處理器系統、基于微處理器的系統、機頂盒、可編程消費電子產品、網絡PC、小型計算機、大型計算機、視頻媒體播放器等。為允許設備實現此處描述的語義實體操縱技術實施例,該設備應當具有足夠的計算能力和系統存儲器以啟用基本計算操作。具體而言,如圖16所示,計算能力一般由一個或多個處理單元12示出,并且還可包括一個或多個GPU14,這兩者中的任一個或全部與系統存儲器16通信。注意,通用計算設備的處理單元12可以是專用微處理器,如DSP、VLIW、或其他微控制器、或可以是具有一個或多個處理核的常規CPU,包括多核CPU中的基于GPU專用核。另外,圖16的簡化計算設備還可包括其他組件,諸如例如通信接口 18。圖16的簡化計算設備還可包括一個或多個常規計算機輸入設備20 (例如,定點設備、鍵盤、音頻輸入設備、視頻輸入設備、觸覺輸入設備、用于接收有線或無線數據傳輸的設備等)。圖16的簡化計算設備還可包括其他光學組件,諸如例如一個或多個常規顯示設備24和其他計算機輸出設備22 (例如,音頻輸出設備、視頻輸出設備、用于傳送有線或無線數據傳輸的設備等)。注意,通用計算機的典型的通信接口 18、輸入設備20、輸出設備22、以及存儲設備26對本領域技術人員而言是公知的,并且在此不會詳細描述。圖16的簡化計算設備還可包括各種計算機可讀介質。計算機可讀介質可以是可由計算機10經由存儲設備26訪問的任何可用介質,并且包括是可移動28和/或不可移動30的易失性和非易失性介質,該介質用于存儲諸如計算機可讀或計算機可執行指令、數據結構、程序模塊或其他數據等信息。作為示例而非限制,計算機可讀介質可包括計算機存儲介質和通信介質。計算機存儲介質包括但不限于計算機或機器可讀介質或存儲設備,諸如DVD、CD、軟盤、磁帶驅動器、硬盤驅動器、光盤驅動器、固態存儲器設備、RAM、ROM、EEPR0M、閃存或其他存儲器技術、磁帶盒、磁帶、磁盤存儲或其他磁存儲設備、或可用于存儲所需信息并且可由一個或多個計算設備訪問的任何其他設備。
諸如計算機可讀或計算機可執行指令、數據結構、程序模塊等信息的保留還可通過使用各種上述通信介質中的任一種來編碼一個或多個已調制數據信號或載波或其他傳輸機制或通信協議來實現,并且包括任何有線或無線信息傳遞機制。注意,術語“已調制數據信號”或“載波”一般指以對信號中的信息進行編碼的方式設置或改變其一個或多個特征的信號。例如,通信介質包括諸如有線網絡或直接線連接等攜帶一個或多個已調制數據信號的有線介質,以及諸如聲學、RF、紅外線、激光和其他無線介質等用于傳送和/或接收一個或多個已調制數據信號或載波的無線介質。上述通信介質的任一組合也應包括在通信介質的范圍之內。此外,可以按計算機可執行指令或其他數據結構的形式存儲、接收、傳送或者從計算機或機器可讀介質或存儲設備和通信介質的任何所需組合中讀取具體化此處所描述的語義實體操縱技術的部分或全部的軟件、程序和/或計算機程序產品或其各部分。最終,此處描述的語義實體操縱技術實施例還可在由計算設備執行的諸如程序模塊等計算機可執行指令的一般上下文中描述。一般而言,程序模塊包括執行特定任務或實 現特定抽象數據類型的例程、程序、對象、組件、數據結構等。本文描述的各實施例還可以在其中任務由通過一個或多個通信網絡鏈接的一個或多個遠程處理設備執行或者在該一個或多個設備的云中執行的分布式計算環境中實現。在分布式計算環境中,程序模塊可以位于包括媒體存儲設備在內的本地和遠程計算機存儲介質中。此外,上述指令可以部分地或整體地作為可以包括或不包括處理器的硬件邏輯電路來實現。4. O其他實施例應當注意,可以按所需的任何組合來使用本說明書全文中的上述實施例的任一個或全部以形成另外的混合實施例。另外,盡管用結構特征和/或方法動作專用的語言描述了本主題,但可以理解,所附權利要求書中定義的主題不必限于上述具體特征或動作。相反,上述具體特征和動作是作為實現權利要求的示例形式公開的。
權利要求
1.一種用于采用概率程序從一個或多個輸入項生成所需輸出項的計算機實現的方法,所述概率程序是使用輸入-輸出示例來生成的,所述方法包括 使用計算機來執行以下方法動作 接收輸入-輸出不例(1400),每個輸入-輸出不例提供一個或多個輸入項和對應的所需輸出項; 解析所述輸入項和所述輸出項以產生經加權的解析集(1402),每個經加權的解析表示對每個輸入和輸出項的不同的潛在解析,其中根據對基于與解析庫相比所述解析是有效解析的可能性的度量來對所述解析進行了加權; 對于每個輸入-輸出不例, 從一種類型的變換庫中標識一個或多個變換,所述一個或多個變換可從所述輸入項產生所需輸出項(1406),以及 標識格式化指令,所述格式化指令能夠對輸出項進行格式化以便與對所述輸入-輸出示例的所需輸出項進行的格式化相匹配(1408); 生成概率程序(1412),其中給定與所述輸入-輸出示例的所述輸入項相同類型的一個或多個輸入項,所述概率程序采用所標識的變換和所述格式化指令來產生與所述一個或多個輸入項相對應的輸出項;以及 接收與所述輸入-輸出示例的所述輸入項相同類型的一個或多個輸入項(1414),并且使用所生成的概率程序來產生與所接收的輸入項相對應的輸出項(1416)。
2.如權利要求I所述的方法,其特征在于,每個輸入項和輸出項包括字符串,并且其中所述解析庫包括多個語義實體,每個語義實體包括實體類和字段集合,并且其中解析所述輸入項和所述輸出項以產生經加權的解析集的方法動作包括以下動作 對于表示所述輸入和輸出項的每個字符串和在所述解析庫中找到的每個語義實體, 標識字段匹配集,其中每個字段匹配包括所述輸入或輸出項字符串中的與來自所述解析庫的語義實體字段相匹配的最長子串, 從所述字段匹配集構建解析圖,使得所述字符串中每個字符存在一節點,并且對于每個字段匹配,字段邊從表示所述字段匹配的起始字符的節點指向表示所述字段匹配的結束字符的節點,并且從表示所述字符串中的字符的每個節點與表示所述字符串中任意下一個字符的節點來建立定界符邊, 標識通過所述解析圖的解析路徑,其中每條解析路徑包括節點序列,所述節點序列以表示所述字符串中第一個字符的節點開始并以表示所述字符串中最后一個字符的節點結束,并且所述序列中的節點通過在字段邊和定界符邊之間交替的邊來交替地連接,使得每條所標識的解析路徑包括語義實體字段和定界符對的序列,以及對于所標識的每條解析路徑, 為每個所標識的解析路徑計算約束權重因子,所述約束權重因子與所述解析路徑所滿足的、關聯于所考慮的語義實體的約束的數量和分配給每個所滿足的約束的約束權重成比例,其中每個語義實體與指定所述語義實體的字段分配和字段或定界符之間的次序的經加權的約束的集合相關聯,其中對于更有可能被所述語義實體展示的約束而言,這種約束的約束權重更大, 計算所述解析路徑和與所述語義實體相關聯的有效解析描述符集中每個有效解析描述符之間的相似度的度量,其中每個有效解析描述符包括表示所述語義實體的有效解析的語義實體字段和定界符對的序列, 基于為所述解析路徑計算的所述約束權重因子和有效解析描述符相似度度量來計算所述解析路徑的權重值,以及 將所述解析路徑指定為所述語義實體的指定解析描述符,并且將所述指定解析描述符和所計算的權重值與所述語義實體相關聯以便形成經加權的語義實體和解析描述符元組。
3.如權利要求2所述的方法,其特征在于,每個語義實體的實體類標識適用于所述實體類的一個或多個變換,并且其中對于每個輸入-輸出示例,從一種類型的變換庫標識可從所述輸入項產生所需輸出項的一個或多個變換的方法動作包括以下動作 標識與所述輸入-輸出示例的所述輸入項相關聯的解析描述符元組; 標識與所述輸入-輸出示例的所述輸出項相關聯的解析描述符元組;以及對于與所述輸入-輸出示例的輸入和輸出項的解析描述符元組中的實體類相關聯的一個或多個變換中的每個, 標識以下變換當被應用到與所述輸入項相關聯的所標識的解析描述符元組的語義實體時,所述變換產生與所述輸出項相關聯的所標識的解析描述符元組的實體,以及 為每個這種變換計算加權因子,其中所述加權因子是對所述變換是所需變換的可能性的度量。
4.如權利要求3所述的方法,其特征在于,標識能夠對輸出項進行格式化以便與對所述輸入-輸出示例的所需輸出項進行的格式化相匹配的格式化指令的方法動作包括以下動作對于與所述輸入-輸出示例的所述輸出項相關聯的解析描述符元組的解析描述符中所標識的每個語義實體字段,將來自格式化指令庫的格式化指令相關聯的動作,所述格式化指令以與所述語義實體字段相關聯的輸出項部分所展示的格式來產生所述描述符元組的語義實體的對應字段。
5.如權利要求4所述的方法,其特征在于,其中給定與所述輸入-輸出不例的所述輸入項相同類型的一個或多個輸入項,所述概率程序采用所標識的變換和所述格式化指令來產生與所述一個或多個輸入項相對應的輸出項,生成所述概率程序的方法動作包括以下動作 對于所述輸入-輸出示例的所述輸出項的解析描述符元組中的每個語義實體, 對于與所述輸入-輸出示例的所述輸入項的解析描述符元組的實體類相關聯的一個或多個變換中的每個變換,將所述變換、所述變換的經計算得到的權重因子、和語義實體的所標識的格式化指令相關聯以形成解析-計算-打印元組,所述語義實體是與所述輸出項相關聯的所標識的解析描述符元組的語義實體; 標識具有相同變換和格式化指令的解析-計算-打印元組; 對于具有相同變換和格式化指令的每組解析-計算-打印元組,用具有與該組相同的變換和格式化指令以及作為該組中全部權重因子之和的權重因子的單個解析-計算-打印元組來代替該組; 標識所述輸入-輸出示例的所述輸入項和輸出項的具有相同解析描述符的解析描述符元組; 對于具有相同解析描述符的每組解析描述符元組,用具有與該組相同的解析描述符和作為該組中全部權重值之和的權重值的單個解析描述符元組來代替該組;以及 對其余的解析描述符元組和解析-計算-打印元組進行分組以形成所述概率程序。
6.如權利要求3所述的方法,其特征在于,標識能夠對輸出項進行格式化以便與對所述輸入-輸出示例的所需輸出項進行的格式化相匹配的格式化指令的方法動作包括以下方法動作 對于與所述輸入-輸出示例的所述輸出項相關聯的解析描述符元組的解析描述符中所標識的每個語義實體字段,確定所述語義實體字段是否是一組規定的基類型字段之一; 只要與所述輸入-輸出示例的所述輸出項相關聯的解析描述符元組的解析描述符中的語義字段被確定為基類型字段,就將格式化指令與已為該類型的基類型字段預定義的該語義字段相關聯; 只要與所述輸入-輸出示例的所述輸出項相關聯的解析描述符元組的解析描述符中的語義字段被確定為不是基類型字段,就將格式化指令相關聯,所述格式化指令以與所述語義實體字段相關聯的輸出項部分所展示的格式來產生所述描述符元組的語義實體的對應字段。
7.如權利要求2所述的方法,其特征在于,每個語義實體的實體類標識適用于所述實體類的ー個或多個變換,并且其中對于每個輸入-輸出示例,從ー種類型的變換庫標識可從所述輸入項產生所需輸出項的ー個或多個變換的方法動作包括以下動作 標識與所述輸入-輸出示例的所述輸入項相關聯的解析描述符元組; 標識與所述輸入-輸出示例的所述輸出項相關聯的解析描述符元組;以及 對于與所述輸入-輸出示例的輸入和輸出項的解析描述符元組中的實體類相關聯的ー個或多個變換的組合,所述組合中達到變換的規定數量, 標識以下變換組合當被應用到與所述輸入項相關聯的所標識的解析描述符元組的語義實體時,所述變換組合產生與所述輸出項相關聯的所標識的解析描述符元組的實體,以及 為每個所標識的變換組合計算加權因子,所述加權因子包括對所述變換組合是所需變換組合的可能性的度量。
8.如權利要求I所述的方法,其特征在干,結合接收所述輸入-輸出示例來接收與所述輸入-輸出示例的輸入項相同類型的ー個或多個輸入項,并且其中解析所述輸入項和所述輸出項以產生經加權的解析集的方法動作包括對與所述輸入-輸出示例相關聯的輸入和輸出項、以及與所述輸入-輸出示例的輸入項相同類型的所接收的輸入項進行解析的動作。
9.一種用于采用概率程序從ー個或多個輸入項產生所需輸出項的系統,所述概率程序是使用輸入-輸出示例來生成的,所述系統包括 計算設備;以及 計算機程序,所述計算機程序包括由所述計算設備執行的程序模塊,所述程序模塊包括 解析模塊(1502),解析構成所述輸入-輸出示例的輸入項和輸出項(1508)以產生經加權的解析集,每個經加權的解析表示對每個輸入和輸出項的不同的潛在解析,其中根據對基于與解析庫(1510)相比所述解析是有效解析的可能性的度量來對所述解析進行了加權, 變換模塊(1504),對于姆個輸入-輸出不例,所述變換模塊從一種類型的變換庫(1512)標識ー個或多個變換,所述ー個或多個變換可從所述輸入項產生所需輸出項,以及格式化模塊(1506),所述格式化模塊標識格式化指令,所述格式化指令能夠對輸出項進行格式化以便與對輸入-輸出示例的所需輸出項進行的格式化相匹配; 程序生成模塊(1514),所述程序生成模塊生成概率程序(1516),給定與所述輸入-輸出示例的輸入項相同類型的ー個或多個輸入項,所述概率程序采用所標識的變換和所述格式化指令來產生一組經排序的輸出項,其中按照為其計算的加權因子的次序對所述輸出項進行排序,所述加權因子包括指示所述變換從與所述輸入-輸出示例相關聯的輸入項產生所述輸出項的準確度的度量,以及 程序執行模塊(1518),所述程序執行模塊使用所生成的概率程序來產生輸出項,該輸出項對應干與所述輸入-輸出示例的輸入項相同類型的所接收的輸入項。
10.如權利要求9所述的系統,其特征在于,所述程序執行模塊產生與一組經排序的輸出項中排序最高的輸出項相對應的輸出項,并且只要該組經排序的輸出項中存在ー個以上輸出項,所述程序執行模塊就進一步產生指示符,所述指示符指示其他排序較低的輸出項被產生并且可供查閱。
全文摘要
本發明涉及使用輸入-輸出示例的語義實體操縱。呈現了語義實體操縱技術實施例,該實施例生成能夠基于輸入-輸出示例來操縱表示語義實體的字符串的概率程序。該程序隨后可用于從輸入-輸出示例中包括的一種類型的輸入來產生與該示例一致的所需輸出。基于解析、變換和格式化模塊的輸出來生成概率程序。解析模塊采用概率方法來解析輸入-輸出示例。變換模塊標識能夠從輸入-輸出示例的輸入項生成達到其被分配的權重所指定的概率的輸出項的經加權的變換集。格式化模塊生成將所選擇的輸出部分變換成輸入-輸出示例中的輸出項所指定的形式的格式化指令。
文檔編號G06F17/30GK102682065SQ201210023688
公開日2012年9月19日 申請日期2012年2月2日 優先權日2011年2月3日
發明者R·辛格, S·古瓦尼 申請人:微軟公司