執(zhí)行大型稀疏矩陣運算中用于緩存效率的矩陣排序的方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及執(zhí)行大型稀疏矩陣運算中用于緩存效率的矩陣排序的方法和系統(tǒng)。提供了用于執(zhí)行矩陣運算的機(jī)制。數(shù)據(jù)處理系統(tǒng)的處理器被配置為執(zhí)行輸入矩陣的基于集群的矩陣重新排序。接收包括與所述矩陣中的元素相關(guān)聯(lián)的節(jié)點的輸入矩陣?;谂c聚類內(nèi)部和聚類之間的其它節(jié)點之間的連接的數(shù)量,將所述節(jié)點聚類成集群。通過最小化集群節(jié)點之間的跨集群連接的總長對集群排序,從而產(chǎn)生經(jīng)重新排序的矩陣。生成識別該輸入矩陣的節(jié)點在經(jīng)重新排序的矩陣中的新位置的查找表。基于經(jīng)重新排序的矩陣和所述查找表執(zhí)行矩陣運算。
【專利說明】
執(zhí)行大型稀疏矩陣運算中用于緩存效率的矩陣排序的方法和 系統(tǒng)
技術(shù)領(lǐng)域
[0001] 本申請涉及一種改進(jìn)的數(shù)據(jù)處理裝置和方法,更具體地涉及一種用于對在大型稀 疏矩陣運算中使用的矩陣的非零元素進(jìn)行排序以提高緩存效率的機(jī)制。
【背景技術(shù)】
[0002] 日常生活中用于從數(shù)據(jù)集中獲取信息和知識的信息技術(shù)和系統(tǒng)占有重要位置。例 如,搜索引擎在大數(shù)據(jù)集上操作以獲取與搜索查詢相關(guān)的信息。問答(QA)系統(tǒng),如可從紐約 阿蒙克(Armonk)的國際商業(yè)機(jī)器(IBM)公司獲得的IBM WatsonTM QA系統(tǒng),就運行在文檔或 信息的其他部分上的語料庫上,以回答自然語言問題。此外,許多社交網(wǎng)絡(luò)服務(wù)將他們的用 戶、通信等表現(xiàn)為大數(shù)據(jù)集。許多時候,在這些大型數(shù)據(jù)集上執(zhí)行知識提取、推理和各種其 他分析以便于諸如在社交網(wǎng)絡(luò)服務(wù)內(nèi)部回答問題、返回搜索結(jié)果、或提供功能的系統(tǒng)的操 作是很重要的。例如,許多社交網(wǎng)絡(luò)服務(wù)幫助個人識別他們可能認(rèn)識或有一定聯(lián)系的其他 注冊用戶。這種功能需要分析表示社交網(wǎng)絡(luò)服務(wù)用戶的大數(shù)據(jù)集。
【發(fā)明內(nèi)容】
[0003] 在一個說明性實施例中,提供了一種在數(shù)據(jù)處理系統(tǒng)中的方法,該數(shù)據(jù)處理系統(tǒng) 包括用于執(zhí)行矩陣運算的處理器和存儲器,該方法包括配置所述數(shù)據(jù)處理系統(tǒng)的處理器以 執(zhí)行輸入矩陣的基于集群的矩陣重新排序。該方法進(jìn)一步包括由所述處理器接收該輸入矩 陣,其中,該輸入矩陣包括與所述矩陣的元素相關(guān)聯(lián)的節(jié)點。該方法還包括由所述處理器基 于與聚類內(nèi)部和聚類之間的其它節(jié)點之間的連接的數(shù)量,將所述節(jié)點聚類成集群;并由所 述處理器通過最小化集群節(jié)點之間的跨集群連接的總長對集群排序,從而產(chǎn)生經(jīng)重新排序 的矩陣。此外,該方法包括由所述處理器生成識別該輸入矩陣的節(jié)點在經(jīng)重新排序的矩陣 中的新位置的查找表;由所述處理器基于所述經(jīng)重新排序的矩陣和所述查找表執(zhí)行矩陣運 算。
[0004] 在另一說明性實施例中,提供了一種計算機(jī)程序產(chǎn)品,包括具有計算機(jī)可讀程序 的計算機(jī)可用或者可讀介質(zhì),當(dāng)計算機(jī)可讀程序在計算機(jī)設(shè)備上執(zhí)行時,使得計算機(jī)設(shè)備 執(zhí)行關(guān)于所述方法的說明性實施例概述的上述不同操作之一或者組合。
[0005] 在另一個說明性實施例中,提供了一種系統(tǒng)/設(shè)備,該系統(tǒng)/設(shè)備可以包括一個或 者多個處理器以及耦接到所述一個或者多個處理器的存儲器。所述存儲器可以包括指令, 當(dāng)由所述一個或者多個處理器執(zhí)行所述指令時,使得所述一個或者多個處理器執(zhí)行關(guān)于所 述方法的說明性實施例概述的上述不同操作之一或者組合。
[0006] 鑒于下列本發(fā)明示例性實施例的詳細(xì)描述,本發(fā)明的這些和其他特征將被描述或 者對本領(lǐng)域技術(shù)人員來說是明顯的。
【附圖說明】
[0007]當(dāng)結(jié)合附圖閱讀時,通過參考下列說明性實施例的詳細(xì)描述,將更好地理解本發(fā) 明,以及優(yōu)選的使用方式和進(jìn)一步的目標(biāo)及其優(yōu)點,其中:
[0008]圖IA是說明具有壓縮行存儲的矩陣乘法運算的示意圖,其中矩陣的行乘以輸入向 量的條目;
[0009]圖IB是說明具有壓縮列存儲的矩陣乘法運算的示意圖,其中矩陣的列乘以輸入向 量的單個條目,以對輸出向量的條目提供部分貢獻(xiàn);
[0010]圖2A是說明Cuthill-McKee矩陣排序算法的理想輸出的示意圖;
[0011]圖2B是說明在圖上通過Cuthill-McKee算法得到的矩陣條目實際排序的示意圖; [0012]圖3A是說明分割(dissection)矩陣排序算法的理想輸出的示意圖;
[0013] 圖3B是說明在近似無標(biāo)度(near-scale-free)圖上通過分割(dissect ion)算法得 到的矩陣條目的實際排序的示意圖;
[0014] 圖4是說明根據(jù)一個示例性實施例的采用基于聚類的矩陣重新排序運算得到的矩 陣條目排序的示意圖;
[0015] 圖5是根據(jù)一個說明性實施例的概述基于聚類的矩陣重新排序運算的例子的流程 圖;
[0016] 圖6描述了計算機(jī)網(wǎng)絡(luò)中的問題/答案創(chuàng)建(QA)系統(tǒng)的一個說明性實施例的示意 圖;
[0017] 圖7是可實現(xiàn)說明性實施例的各方面的示例性數(shù)據(jù)處理系統(tǒng)的方框圖;以及
[0018] 圖8表示根據(jù)一個說明性實施例的用于處理輸入問題的QA系統(tǒng)管道。
【具體實施方式】
[0019] 如上文所討論的那樣,現(xiàn)代計算系統(tǒng)通常參與在大型數(shù)據(jù)集上執(zhí)行知識抽取、推 理和各種其他分析操作。這些大型數(shù)據(jù)集通常被表示為大型矩陣,運算本身往往涉及運行 時資源密集的大型稀疏矩陣運算。即,在這些矩陣上執(zhí)行矩陣運算以提取矩陣的條目之間 的關(guān)系從而搜集知識、執(zhí)行推理運算等等。例如,如果流程想要知道用戶A在社交網(wǎng)絡(luò)中可 能認(rèn)識誰,用戶A可以被表示為矩陣中一個條目或索引,其他用戶可以表示為矩陣中的其他 條目或索引而被組織成行和列。如果用戶A認(rèn)識其他用戶,矩陣中行和列的交叉點上具有設(shè) 置為非零的值,例如,如果用戶A被表示為行的一個條目,沿著列的條目可以代表其他用戶, 而每個列和用戶A的交叉點代表用戶A是否認(rèn)識其他用戶(如果用戶認(rèn)識該其他用戶為非 零,如果用戶不認(rèn)識該其他用戶為零)。因此,提供的系統(tǒng)功能的效率可能受限于在這些大 型數(shù)據(jù)集上執(zhí)行矩陣運算的效率和速度。
[0020] 說明性實施例提供用于使用聚類算法重新排序矩陣從而增加大型稀疏矩陣運算 的緩存效率的機(jī)制。說明性實施例的機(jī)制確定在大型稀疏矩陣中元素的團(tuán)(clique),并且 使用這些團(tuán)擴(kuò)展彼此具有連接的元素的集群。集群的擴(kuò)展包括基于元素與哪一個集群具有 最多連接將元素分配給該集群。當(dāng)元素被添加到一個集群中時,更新該集群的信息以考慮 該元素的加入并確定該集群是否已達(dá)到最大大小。
[0021] 一旦集群已被擴(kuò)展,可以通過分析集群內(nèi)部或集群之間集群元素的連接提煉集 群,以確定集群中的元素是否更適合包含于其他集群。例如,如果將元素從一個集群移動到 另一個集群會減少跨集群連接的數(shù)量而不違反集群大小的限制,則將該元素從當(dāng)前群集移 動到另一個群集。
[0022] 一旦被提煉,將提煉的集群組織起來以最小化跨集群連接,并就其兩端元素分布 集中跨集群連接。此外,可以在集群中排序元素以將非零元素移到更靠近集群的對角線。在 查找表中更新矩陣中被重組的元素的索引,以便將矩陣中的元素的原始位置指向經(jīng)重新排 序的矩陣中重新排序后的新位置。當(dāng)執(zhí)行諸如用于提取知識、進(jìn)行推理運算、分析數(shù)據(jù)的矩 陣以識別由矩陣等表示的對象、概念或?qū)嶓w之間關(guān)系的大型稀疏矩陣運算時,可以輸出并 利用查找表和經(jīng)重新排序的矩陣來在諸如數(shù)據(jù)處理系統(tǒng)的主存儲器的存儲器中組織數(shù)據(jù), 其中數(shù)據(jù)從存儲器被加載到高速緩存存儲器中。
[0023]此處所描述的說明書將利用與矩陣和矩陣運算相關(guān)的術(shù)語,因此,重要的是首先 要了解這些術(shù)語在當(dāng)前說明書的語境中表示什么。矩陣的"索引"是指對矩陣行或列的指定 (designation),例如,行索引"Γ是指矩陣中的第一行,列索引"Γ是指矩陣中的第一列。術(shù) 語"節(jié)點"也指"索引",并與術(shù)語"索引"可互換。術(shù)語"節(jié)點"指的是作為矩陣的相互關(guān)聯(lián)的 元素的圖示,其中圖的元素被稱為"節(jié)點",并且在矩陣中表示為索引,例如,網(wǎng)絡(luò)通常表示 為包括節(jié)點和節(jié)點之間的"邊"或"連接"的圖。
[0024] 矩陣中的"位置"是行索引和列索引的組合,例如,(1,1)指向?qū)?yīng)于行1和列1的矩 陣中的位置。術(shù)語"位置"、"節(jié)點"和"索引"有時可以互換,因為他們都使用索引值來表示矩 陣的一部分,但如上面提到的具有不同的內(nèi)涵。也就是說,索引是行和列的指針,節(jié)點也表 示索引,但有具有表示為索引的圖節(jié)點的內(nèi)涵,并且矩陣中的位置是矩陣的一部分,其中存 儲代表行和列交叉點的值。存儲在矩陣的特定位置的非零值此處是指"連接"或"關(guān)系",因 為它指定對應(yīng)于該位置的兩個索引之間的"連接"或者"關(guān)系",例如,在社交網(wǎng)站上的個人 朋友圖中,非零值可以表示個人A與個人B是朋友。非零值本身可以具有指示兩個索引之間 關(guān)系或連接強(qiáng)度的不同的值。
[0025] 而在說明性實施例的一些實現(xiàn)中,可以為索引、節(jié)點和位置使用指定的數(shù)值,索引 可以表示不同類型的信息、概念或?qū)嶓w,因此,并不一定是數(shù)值。例如,索引可以是人、位置、 事物、概念等的標(biāo)識符,而不使用數(shù)值的行和列索引,例如,行索引"約翰史密斯"或"個人A" 以及列索引"瑪麗約翰遜"或"個人B"。
[0026] 正如以下將更詳細(xì)地描述的那樣,說明性實施例提供用于對存儲在存儲器或其它 系統(tǒng)存儲中的信息矩陣重新排序的機(jī)制,以得到矩陣運算更高效的性能。作為這種重組的 一部分,節(jié)點被聚類和重組,以便使非零元素盡可能靠近矩陣的對角線。如以下所描述的那 樣,說明性實施例的機(jī)制生成經(jīng)重新排序的矩陣以及查找表,該查找表包括用于將節(jié)點的 舊位置映射到節(jié)點的新位置的向量。因此,為了說明在矩陣重新排序的語境中上述術(shù)語的 細(xì)微差別,考慮下面的簡化矩陣的例子,其中行和列的索引表示標(biāo)記為A-E的五個人:
[0028]假定上述矩陣是原始矩陣,個人A對應(yīng)于數(shù)值索引I,個人B對應(yīng)于數(shù)字索引2,等 等。如下文所述,通過說明性實施例的操作,可以通過對索引或者節(jié)點聚類對矩陣重組,例 如,基于在矩陣中代表人之間的聯(lián)系或關(guān)系的非零值的識別,對人進(jìn)行聚類。例如,如下文 所述,通過說明性實施例的操作,可以確定,索引1、3和5(個人A、C和E)屬于一個集群,索引2 和4(個人B和D)屬于另一個集群。根據(jù)這種聚類得到的經(jīng)重新排序的新矩陣將如下所述:
L〇〇3〇」除/生成這種重組矩陣,說明性實施例還生成查找表,將索引(或節(jié)點)的舊位置 映射到索引(或節(jié)點)的新位置。在上面的例子中,查找表被表示為2個向量,一個存儲舊位 置的索引值,而另一個存儲新位置的索引值,它們一起提供以下映射:
[0031] 1^1
[0032] 2^4
[0033] 3^2
[0034] 4^5
[0035] 5^3
[0036] 正如上面所提到的那樣,許多知識表示、推理算法、社交網(wǎng)絡(luò)應(yīng)用等,具有運行時 資源密集型的大型稀疏矩陣運算。在這種情況下,高速緩存未命中在運行時操作中占支配 地位,因為大部分大型稀疏矩陣填充有零條目,而非零條目稀疏地分布在整個矩陣。此外, 用于存儲這些大型矩陣的部分以及與其交互的向量的高速緩存存儲器只有有限的大小,造 成在考慮矩陣運算的性能時,只有一個相對較小部分的矩陣和輸入/輸出向量可以被加載 到高速緩存存儲器中。例如,如果高速緩存大小為X,矩陣的第一個非零元素與向量的具有 大小為X的第一部分中的條目交互,但是下一個非零元素與向量的第二部分中的另一條目 交互,而另一個條目位于比X的位置更遠(yuǎn)的位置,則發(fā)生高速緩存未命中,在矩陣運算可以 繼續(xù)進(jìn)行前第二部分必須從主存儲器或存儲器檢索并加載到高速緩存存儲器中。由于這種 矩陣可能非常大并且非常稀疏地分布,這樣的高速緩存未命中會經(jīng)常發(fā)生并導(dǎo)致進(jìn)行這樣 的大型稀疏矩陣運算時效率低下。
[0037]在利用大稀疏矩陣表示諸如基于自然語言處理的知識體系、社交網(wǎng)絡(luò)分析系統(tǒng)等 的概念關(guān)系和社會關(guān)系、交互等的系統(tǒng)中,這些大稀疏矩陣的拓?fù)浣Y(jié)構(gòu)經(jīng)常是近似無標(biāo)度 (near-scale-free)的圖或網(wǎng)絡(luò)(其中,"圖"或"網(wǎng)絡(luò)"指的是節(jié)點和連接節(jié)點的邊組成的系 統(tǒng)-如以上所討論,圖和網(wǎng)絡(luò)可以被表示為矩陣)。術(shù)語"無標(biāo)度"圖或"無標(biāo)度"網(wǎng)絡(luò)是指這 樣的圖或網(wǎng)絡(luò),其度分布(一個節(jié)點具有到其他節(jié)點的連接數(shù)量("度")的概率分布)至少近 似遵循冪次定律。即,對于較大的k的值,具有k個到其它節(jié)點的連接的圖或網(wǎng)絡(luò)中的一小部 分P(k)節(jié)點,作為P(k)~Κ-γ,其中,γ是一個參數(shù),其值通常的范圍是2~3。"近似無標(biāo)度" 圖或網(wǎng)絡(luò)接近此無標(biāo)度圖或網(wǎng)絡(luò)狀況。
[0038] 存儲器訪問在這種矩陣運算的運行時執(zhí)行占支配地位,但由于這種類型矩陣的拓 撲特性,傳統(tǒng)的矩陣排序算法對其影響不大。也就是說,這類矩陣的拓?fù)涮匦允顾鼈兘朴?無標(biāo)度圖,即他們是近似無標(biāo)度圖拓?fù)涞木仃?。?dāng)分割圖時,與來自傳統(tǒng)仿真應(yīng)用的稀疏矩 陣相比,無標(biāo)度圖的節(jié)點間距離(從一個節(jié)點到達(dá)另一節(jié)點的最短路徑上的邊的數(shù)目)往往 更短,并且需要更大的切割尺寸(必須切割的邊的數(shù)目)之間有較短的距離。
[0039] 稀疏矩陣使用的一種基本矩陣運算是稀疏矩陣的向量乘法,并且它是大多數(shù)知識 抽取、推理運算、關(guān)系分析等的基礎(chǔ)。因此,這種稀疏矩陣向量乘法也往往是知識、推理和關(guān) 系分析算法的運行時瓶頸的基礎(chǔ)。圖IA和IB說明進(jìn)行稀疏矩陣向量乘法的兩種最流行方式 的例子。其它的用于執(zhí)行這種稀疏矩陣向量乘法的方法都是這兩種最流行方式的變種或組 合。
[0040] 圖IA是說明具有壓縮行存儲的矩陣乘法運算的示意圖,其中矩陣的行乘以輸入向 量的條目。如圖IA所示,提供了元素的矩陣M,例如,用戶標(biāo)識符、概念標(biāo)識符、信息對象等表 示矩陣的索引,從而為了計算輸出向量〇的條目,矩陣M的行乘以輸入向量V的選定條目。例 如,在社交網(wǎng)絡(luò)的實現(xiàn)中,矩陣M的行和列的索引表示社交網(wǎng)絡(luò)中的用戶,行和列的交叉點 表示行用戶和列用戶之間的關(guān)系,例如,如果約翰史密斯(行)與邁克約翰遜(列)有關(guān)系,那 么矩陣M中與這個交叉點對應(yīng)的條目可以被設(shè)置為非零值,例如,指示邁克約翰遜是約翰史 密斯朋友。
[0041 ]在這個社交網(wǎng)絡(luò)的例子中輸入向量V可以例如包括,表示個人B (例如簡多伊)當(dāng)前 的朋友列表的條目。因此,如果個人B與個人A(例如約翰史密斯)有至少一個共同的朋友,輸 出向量〇的對應(yīng)條目是非零值,并且個人B與個人A共同的朋友越多,輸出向量0的該條目越 大。
[0042]在另一個例子中,假定矩陣M的行和列的索引表示概念,并且如果概念A(yù)和概念B相 關(guān),行A和列B的交叉點是非零值,并且它們越相關(guān),該條目越大。例如,假設(shè)概念"精神障礙" 和概念"精神病醫(yī)生"密切相關(guān),則由一個非零并且很大的值表示這種關(guān)系,而概念"精神障 礙"和概念"冰淇淋"無關(guān),則相應(yīng)的條目是零。假設(shè)輸入向量表示問題中包含的概念,其中 如果問題中包含對應(yīng)的概念,則條目是非零值,例如,問題"在曼哈頓我可以在哪買冰淇 淋?"將導(dǎo)致一個向量,其中概念"冰淇淋"的條目非零,概念"曼哈頓"的條目非零。當(dāng)且僅 當(dāng),對應(yīng)的概念與"冰淇淋"或"曼哈頓"相關(guān),將矩陣M和輸入向量V相乘得到的輸出向量0中 的條目才是非零值。因此,曼哈頓的一家冰淇淋店可能會在輸出向量中具有很大的值,因為 它與輸入向量V的兩個概念相關(guān)。注意,這只是一個基本的例子,更復(fù)雜的矩陣運算(由更多 的矩陣向量乘法組成,其中向量變密)會產(chǎn)生更復(fù)雜的結(jié)果。
[0043]可以理解,對于這樣的矩陣和向量乘法運算,隨著矩陣M和輸入向量V變得越大,由 于高速緩存存儲器的有限大小以及正在處理的矩陣和/或向量的巨大尺寸,矩陣M和輸入向 量V的選定元素的讀入會造成高速緩存未命中。這些高速緩存未命中在執(zhí)行矩陣乘法運算 的運行時成本中占支配地位。
[0044]例如,采用圖IA的元素為例,將矩陣M的一行與輸入向量V相乘需要讀入輸入向量V 的選定條目120,這些選定條目的位置取決于矩陣M的行110中非零條目的列索引。結(jié)果被寫 入到輸出向量〇的條目130。當(dāng)處理器讀入輸入向量V中這些選定條目120中的一個,該條目 及其周圍的部分輸入向量V的被裝載到高速緩沖存儲器。之所以將選定條目的目標(biāo)數(shù)據(jù)周 圍的部分存儲器加載到高速緩沖存儲器是希望或猜測未來的數(shù)據(jù)請求將落入存儲器的那 部分。這是在具有高速緩沖存儲器的所有數(shù)據(jù)處理系統(tǒng)中計算工作負(fù)載的普遍做法。
[0045] 在稀疏矩陣向量乘法的情況下,是否能夠?qū)崿F(xiàn)這個希望,即將數(shù)據(jù)猜測加載到高 速緩存而導(dǎo)致緩存命中,依賴于矩陣M中下一個非零條目的列索引。即僅當(dāng)下一列索引正巧 落在選定條目120周圍被加載的部分時,高速緩存的猜測加載才會導(dǎo)致高速緩存命中。
[0046] 在社交網(wǎng)絡(luò)的例子中,假設(shè)矩陣M中一行表示湯姆的朋友名單,湯姆有五個朋友。 如果這五個朋友被索引為第1000001個人,第1000002個人,…第1000005個人,那么當(dāng)處理 器首先要求第1000001個條目時,輸入向量V中它們的條目被一起加載到高速緩存器中,因 此沒有高速緩存未命中,并且由于高速緩存存儲器的猜測加載,后續(xù)對輸入向量V中第 1000002個條目到第1000005個條目的數(shù)據(jù)請求會被滿足,因為數(shù)據(jù)已經(jīng)在高速緩存中。另 一方面,如果湯姆的朋友被索引為第1000000個人,第2000000個人,……第5000000個人,那 么在處理矩陣M的該行時,會發(fā)生緩存未命中,并且處理器必須進(jìn)行單獨的請求以從主存儲 器加載輸入向量V的這五個條目的每一個。從主存儲器的每個加載的等待時間可以是算術(shù) 運算時間的幾百倍。這些高速緩存未命中發(fā)生在矩陣M的每一行的處理中,并且它們的總延 遲累加到成為稀疏矩陣向量乘法運行時運算的一個主要組成部分。
[0047] 圖IB是說明具有壓縮列存儲的矩陣乘法運算的示意圖,其中矩陣的列乘以輸入向 量的單個條目,以對輸出向量的條目提供部分貢獻(xiàn)。在圖IB所示的例子中,矩陣M的列140乘 以輸入向量V中的單個選定條目150,而不是矩陣M的行110乘以輸入向量V中的多個選定條 目120,從而計算輸出向量0的多個條目160的部分貢獻(xiàn)。圖IB所示的矩陣乘法運算的輸出, 即輸出向量〇,與圖IA所示的矩陣乘法運算的輸出相同,其不同在于數(shù)據(jù)在存儲器中安排數(shù) 據(jù)以及計算組織的方式。
[0048] 在圖IB的矩陣乘法運算例子中,寫入到輸出向量0的選定條目160的操作會導(dǎo)致高 速緩存未命中,而這又在運行時成本中占支配地位。也就是說,這些選定寫操作的輸出向量 0的條目160的位置取決于矩陣M的選定列140的非零條目的行索引。當(dāng)處理器向輸出向量0 中寫入這些選定條目160中的一個時,該條目160以及圍繞該條目的一部分輸出向量0被加 載到高速緩沖存儲器,之所以加載圍繞目標(biāo)數(shù)據(jù)的一部分存儲器到高速緩沖存儲器是希望 或猜測未來的數(shù)據(jù)請求將落入存儲器的那部分,即上述討論的高速緩存器猜測加載。然而, 與上文關(guān)于圖IA描述的例子相比,當(dāng)處理的下一個索引沒有落入被加載到高速緩沖存儲器 的存儲區(qū)域中時,高速緩存未命中發(fā)生,并且當(dāng)非零數(shù)據(jù)稀疏地位于矩陣M中時,這種情況 經(jīng)常發(fā)生。
[0049] 在圖IA和IB所示的兩種情況下,高速緩存未命中的數(shù)目強(qiáng)烈地受到稀疏矩陣的非 零數(shù)據(jù)模式的影響。也就是說,如上所述,如果非零模式以稀疏方式廣泛地分布,為了在矩 陣M的每一個非零元素上進(jìn)行運算,必須多次執(zhí)行部分輸入/輸出到高速緩沖存儲器的讀 出/寫入,也就是說會發(fā)生多個高速緩存未命中,進(jìn)而需要從主存儲器讀出/寫入輸入/輸出 向量的對應(yīng)元素。因此,如果一個非零元素到下一個非零元素的距離大于高速緩存的大小, 則發(fā)生高速緩存未命中,并且執(zhí)行緩存器收回,隨后將輸入/輸出向量的下一部分加載到高 速緩沖存儲器。如果非零元素更緊湊地、更加非稀疏地分布,大量的非零元素將在同一時間 位于高速緩沖存儲器中,因而降低高速緩存未命中的數(shù)目。
[0050] 為了把非零元素弄緊密,重新排序算法尋求重新排列元素,使得非零元素模式導(dǎo) 致的減少高速緩存未命中的數(shù)目并因而提高矩陣乘法操作的運行時性能。試圖把非零元素 弄緊密以生成非零元素更加非稀疏分布模式的最流行的算法是Cuthill-McKee算法及其變 種,如逆Cuthill-McKee算法。Cuthill-McKee算法是一種將具有對稱稀疏模式的稀疏矩陣 變換成為具有小帶寬的帶狀矩陣形式的算法。逆Cuthill-McKee算法是相同的算法,但矩陣 的結(jié)果索引數(shù)目是反轉(zhuǎn)的。
[00511 Cuth i 11 -McKee算法是圖論算法中使用標(biāo)準(zhǔn)的廣度優(yōu)先搜索算法的一個變種。 Cuthill-McKee算法從外圍元素(節(jié)點)開始,然后為每個i = l,2,……生成級Ri,直到所有 的節(jié)點都被耗盡。通過在Ri中列出相鄰所有節(jié)點的所有頂點由集合Ri創(chuàng)建集合Ri+Ι。以遞 增方式列出這些元素(節(jié)點)。
[0052 ]圖2A是說明Cuthi 11-McKee矩陣排序算法的理想輸出的示意圖。如圖2A所示,得到 的經(jīng)重新排序的矩陣轉(zhuǎn)化為一個窄帶矩陣形式,其中元素的級只與其前級及后級有關(guān)聯(lián), 其中"級"是對角塊的列/行索引的集合(在圖2A中示有八級,級1包括整個左上角塊210大小 的索引1,級2包括下一對角塊220大小的索引,等等)。這導(dǎo)致在描述的塊三對角(block-tri-diagonal)矩陣中非零項只存在于對角塊和緊鄰對角塊的塊中(圖2a所示的陰影區(qū) 域)。
[0053] 雖然Cuthill-McKee適合多種類型的矩陣,但是當(dāng)將Cuthill-McKee算法應(yīng)用到具 有近似無標(biāo)度圖拓?fù)浣Y(jié)構(gòu)的矩陣時就發(fā)生問題。在近似無標(biāo)度圖中,具有大量連接(非零 值)的節(jié)點(索引)的存在導(dǎo)致Cuthill-McKee廣度優(yōu)先搜索生成的級呈指數(shù)增長。每一級都 遠(yuǎn)遠(yuǎn)大于前一級,直到某一級包含圖中的大多數(shù)節(jié)點。
[0054] 圖2B是說明在近似無標(biāo)度(near-scale-free)圖上通過Cuthi Il-McKee算法得到 的矩陣條目實際排序的示意圖。如圖2B所示,將Cuthill-McKee算法應(yīng)用到近似無標(biāo)度圖拓 撲矩陣的結(jié)果是生成非零項或元素的主要塊230,其僅比隨機(jī)的非零模式略好,如圖IA和IB 所示。因此,將Cuthill-McKee應(yīng)用到具有近似無標(biāo)度圖拓?fù)涞木仃囋斐删彺嫘手挥休p微 的改善。例如,在從維基百科網(wǎng)站的內(nèi)容導(dǎo)出的矩陣上,在執(zhí)行矩陣運算前將Cuthill-McKee 應(yīng)用到矩陣時 ,搜索運算的運行時執(zhí)行只改善了約 10 % 。
[0055] 另一類聚集非零項或元素的矩陣重新排序算法被稱為基于分割的重新排序。使用 基于分割的重新排序發(fā)現(xiàn)斷開的節(jié)點集,從而其余節(jié)點形成多個非連接的子圖。基本原理 是,這些子圖的每一個只在它的內(nèi)部以及它與非連接集之間才有連接。這導(dǎo)致如圖3A所示 的塊矩陣的例子,其代表分割矩陣重新排序算法的理想的輸出的例子。在圖3A中,右下角的 塊310對應(yīng)于非連通集,并且其它對角塊320-340等的每一個對應(yīng)于多個非連接子圖之一。 如圖3A所示,非零項只能存在于對角塊和某些邊界塊350中。
[0056]對具有近似無標(biāo)度圖拓?fù)涞木仃噾?yīng)用分割重新排序算法會得到圖3B中所示類型 的經(jīng)重新排序的矩陣。如圖2b所示,類似于Cuthill-McKee算法的結(jié)果,生成非零項或元素 的主要塊360,又只是比諸如圖IA或IB所示的隨機(jī)非零模式略好。再次,當(dāng)應(yīng)用近似無標(biāo)度 圖的拓?fù)浣Y(jié)構(gòu)時,通過這種矩陣重新排序,緩存效率只有輕微改善。
[0057]因此,流行的矩陣重新排序方法的每一個中,具有近似無標(biāo)度圖拓?fù)渚仃嚨男再|(zhì) 使得矩陣重新排序算法不能改進(jìn)諸如矩陣向量乘法的矩陣運算的運行時執(zhí)行。在當(dāng)今世界 越來越多的實際的真實生活數(shù)據(jù)顯示了近似無標(biāo)度的拓?fù)涮卣?,尤其是操作在大型?shù)據(jù)集 之上的社交網(wǎng)絡(luò)環(huán)境、自然語言處理機(jī)制或任何其他的分析機(jī)制。作為結(jié)果,由于進(jìn)行運算 的數(shù)據(jù)的大型尺寸、大型數(shù)據(jù)集的稀疏性質(zhì)、大型數(shù)據(jù)集的近似無標(biāo)度的拓?fù)浣Y(jié)構(gòu)以及有 限的高速緩存的存儲器大小,執(zhí)行知識提取、推理、社交網(wǎng)絡(luò)分析、其他大型數(shù)據(jù)分析等的 速度和效率受到限制。
[0058] 在開始更詳細(xì)地討論說明性實施例的各個方面中,首先應(yīng)當(dāng)理解,在整個本說明 書中的術(shù)語"機(jī)制"將被用來指執(zhí)行各種操作、功能等的本發(fā)明的元件。"機(jī)制",作為本文中 使用的術(shù)語,可以是以裝置、過程或計算機(jī)程序產(chǎn)品的形式的說明性實施例的功能或方面 中的實現(xiàn)。在流程的情況下,該流程是由一個或多個設(shè)備、裝置、計算機(jī)、數(shù)據(jù)處理系統(tǒng)等實 現(xiàn)的。在計算機(jī)程序產(chǎn)品的情況下,嵌入在計算機(jī)程序產(chǎn)品之內(nèi)或之上的通過計算機(jī)代碼 或指令表示的邏輯是由一個或多個硬件設(shè)備執(zhí)行,以實現(xiàn)與特定的"機(jī)制"相關(guān)的功能或執(zhí) 行與特定的"機(jī)制"相關(guān)的操作。因此,本文描述的"機(jī)制"可以實現(xiàn)為專用硬件、執(zhí)行在通用 硬件上的軟件、存儲在介質(zhì)中的軟件指令(諸如可由專用或通用硬件容易執(zhí)行的指令)、用 于執(zhí)行功能的過程或方法,或上述的任何組合。
[0059] 本說明書和權(quán)利要求中,對關(guān)于特定特征和說明性實施例的元件可選用術(shù)語 "一"、"至少一個"以及"一個或多個"。但是應(yīng)當(dāng)理解,這些術(shù)語和短語旨在指出在特定說明 性實施例中有至少一個特定的特征或元素存在,但也可以存在多于一個的特征或元素。也 就是說,這些術(shù)語/短語并不旨在將說明書或權(quán)利要求書限制為單個特征/元素的存在或需 要多個這樣的特征/元素的存在。與此相反,這些術(shù)語/短語僅要求至少一個特征/元素,具 有多個這樣的特征/元素的可能性也在說明書和權(quán)利要求書的范圍內(nèi)。
[0060] 此外,應(yīng)當(dāng)理解,下面的說明書使用多個用于說明性實施例的各種元件的各種實 例以進(jìn)一步說明本說明性實施例的示例實現(xiàn),以幫助理解在說明性實施例的機(jī)制。這些實 施例旨在指出用于實現(xiàn)本說明性實施例的機(jī)制的各種可能性是非限制性的,并且非窮盡 的??紤]到本說明書中,對這些可被附加或者替換用于本文提供的實施例而不脫離本發(fā)明 的精神和的范圍的不同元件有許多其它的替換的實施例,對本領(lǐng)域普通技術(shù)人員來說,將 是很明顯的。
[0061] 如上所述,說明性實施例提供一種新的種類的矩陣重新排序機(jī)制以在執(zhí)行諸如矩 陣向量乘法之類的矩陣運算中改進(jìn)緩存效率,其為在大型稀疏矩陣上進(jìn)行多種分析的基 礎(chǔ)。說明性的實施例的機(jī)制可以被用于任何稀疏矩陣,但特別適合用于展現(xiàn)出近似無標(biāo)度 圖拓?fù)浣Y(jié)構(gòu)的大型矩陣。
[0062] 說明性實施例的機(jī)制通過使用聚類方法來對彼此緊密相連、但在跨集群時弱連接 的節(jié)點或索引,沿著經(jīng)重新排序的矩陣的對角線運算來建立非零項或元素的模式進(jìn)行聚 類。也就是說,矩陣M的每個行/列索引對應(yīng)于圖中的節(jié)點并且每個非對角、非零項對應(yīng)于兩 個節(jié)點之間的邊。例如,行3和列5中的非零值轉(zhuǎn)換為節(jié)點3和節(jié)點5之間的邊、或"概念3"和 "概念5"之間的邊、或"人3"和"人5"之間的邊。因此,節(jié)點之間的"連接"或"關(guān)系"是將一個 節(jié)點連接到另一個節(jié)點的非零項。
[0063] 然后所生成的節(jié)點集群被以一種方式排序以便(1)跨群集的連接(或邊)被集中于 相鄰集群,即位于經(jīng)重新排序的矩陣中彼此相鄰的集群,以及⑵相鄰集群往往與相同的其 它集群或其它相鄰集群具有跨群集的連接。以下更詳細(xì)地討論,例如在圖4中,從左上角到 右下角,第二和第三集群412、414都有大量到倒數(shù)第二集群416的連接,這些連接(即非零 值)形成右側(cè)的兩個非對角塊422、424。因為第二和第三集群412、414具有大量到相同的其 他集群有的連接,將它們?nèi)鐖D4所示彼此相鄰的放置是有利的,因為以這種方式,兩個非對 角塊422、424在經(jīng)重新排序的矩陣中仍然彼此相鄰。
[0064]說明性實施例的這些機(jī)制通過識別原矩陣內(nèi)的團(tuán)、將團(tuán)成長為集群、提煉集群以 減少跨群集連接、排序集群以最小化跨集群連接的長度,然后在每個集群的內(nèi)部排序節(jié)點 以將非零項或元素移動到更接近集群的本地化對角線來進(jìn)行操作。然后輸出經(jīng)重新排序的 矩陣和映射索引的相關(guān)查找表,以用于執(zhí)行如矩陣向量乘法運算的矩陣運算。
[0065] 圖4是一個根據(jù)本發(fā)明一個說明性實施例,用于示例性圖解說明采用基于聚類矩 陣重新排序運算得到的矩陣項的排序。如圖4所示,作為說明性實施例的機(jī)制的運算產(chǎn)生的 經(jīng)重新排序的矩陣具有集中到位于對角線附近的集群410中的非零項或元素,遠(yuǎn)離對角線 的那些非零項被緊密布置到非對角線集群420中。集群410、420的每一個集群(圖4中的陰影 區(qū)域表示)具有非零項,其松散地聯(lián)系在一起,這意味著節(jié)點具有的對應(yīng)于這些條目或元素 的到相同集群410、420中其他節(jié)點的連接的數(shù)目大于節(jié)點具有的到集群410、420外部節(jié)點 的連接的數(shù)目,例如電影明星到其他電影明星的連接比到一般大眾多,因此,電影明星可以 是一個集群。與其它已知機(jī)制要求圖1A-3B矩陣的非陰影區(qū)域只能用零填充相反,允許矩陣 的非陰影區(qū)域430包括少量的非零項或元素(以下稱為"元素")。
[0066] 即使對于具有近似無標(biāo)度圖拓?fù)浣Y(jié)構(gòu)的大型矩陣,也能實現(xiàn)圖4所示的矩陣的排 序。從圖4與圖2b和3b的比較中看出,作為矩陣重新排序運算的結(jié)果,沒有生成非零元素主 要塊。因此,上述討論的已知的Cuthi I I-McKee和分割算法遇到的對高速緩存效率和運行時 執(zhí)行改善的限制對說明性實施例的矩陣重新排序機(jī)制不再是問題。與此相反,矩陣的重新 排序機(jī)制對大型近似無標(biāo)度圖拓?fù)涞木仃噷崿F(xiàn)了 Cuthill-McKee算法所尋求的理想的重新 排序,只是呈現(xiàn)一些非對角線集群420,但這些集群被集中到他們各自的集群中420中。 [0067]這種集群410、420的沿對角線組織非零元素的好處是矩陣運算過程中減少了高速 緩存未命中。也就是說,當(dāng)執(zhí)行矩陣乘法運算時,矩陣乘法運算通常尋找矩陣中的非零元 素。由于這些非零元素被集中到集群410,420,當(dāng)集群被加載到高速緩存存儲器中時,將發(fā) 生更多的高速緩存命中及更少高速緩存未命中,尤其是沿經(jīng)重新排序的矩陣對角線放置的 集群410,其中即使額外的集群被加載到高速緩沖緩存器,集群也彼此緊鄰。即使對那些非 對角線的非零元素來說,這些非零元素的大部分聚集在非對角線集群420中,從而當(dāng)這些集 群加載到高速緩沖存儲器中時,訪問輸入/輸出向量的對應(yīng)項時,也只有較少的高速緩存未 命中。雖然一些非零元素不在集群410、420中,即位于經(jīng)重新排序的矩陣的非陰影區(qū)域430, 但通過聚類得到的效率提高仍勝過不在集群410、420中相對較少的非零元素。
[0068]相對于更關(guān)注于Cuthi 11-McKee算法中使用的不同的級表示的圖的距離的已知 Cuthill-McKee算法而言,說明性實施例的機(jī)制的聚類方法將非零元素集中于緊密捆綁的 集群410、420中。因為Cuthill-McKee更關(guān)注的是圖的距離,很可能有以上討論的并不提高 緩存效率的非零元素的大塊。此外,使用分割算法,關(guān)注的是尋找數(shù)據(jù)的非連接集,這樣,如 果數(shù)據(jù)集取之于矩陣,剩余的數(shù)據(jù)將被連接。同樣,如上面所討論的那樣,這可能會導(dǎo)致非 零元素的大塊而不能提高緩存效率。由于說明性實施例利用緊密捆綁的集群410、420,大幅 減少了非零元素的大塊的可能性。此外,由于說明性實施例的機(jī)制組織集群410、420以減少 跨群集連接以及跨集群連接的長度,集群410、420被組織在經(jīng)重新排序的矩陣內(nèi)一個緊湊 的配置中,從而更有效地將非零元素加載到高速緩沖存儲器中,從而減少緩存未命中。
[0069]為了說明由說明性實施例機(jī)制的實現(xiàn)達(dá)到的效率提高的量,考慮下面的表1,其說 明了稀疏矩陣向量乘法的結(jié)果的基準(zhǔn),用于評估在英特爾Nehalem處理器上使用和不使用 說明性實施例的矩陣重新排序機(jī)制的高速緩存未命中的數(shù)量。
[0071]表1-稀疏矩陣向量乘法的基準(zhǔn)
[0072]表的每一行代表一個硬件計數(shù)器。第一行是指令的總數(shù)。第二行是存儲器加載指 令的數(shù)目。第三行是L2高速緩存未命中的數(shù)目。第四行是L3高速緩存未命中的數(shù)目,這是最 昂貴、占主導(dǎo)地位的運行時。應(yīng)該指出的是,通過使用說明性實施例的重新排序機(jī)制可以將 L3高速緩存未命中減少近一半。通過說明性實施例的重新排序機(jī)制測量的運行時執(zhí)行也減 少了近一半,這遠(yuǎn)遠(yuǎn)優(yōu)于通過Cuthi I I-McKee或分割算法帶來的10 %的改善。
[0073]已經(jīng)說明了示例性實施例的基于聚類的矩陣重新排序機(jī)制得到的結(jié)果,下面是一 個作為這種基于聚類矩陣重新排序的一部分執(zhí)行的機(jī)制和操作的更詳細(xì)的討論。應(yīng)該理解 的是,下面的討論涉及一個用于實現(xiàn)基于聚類的矩陣重新排序的說明性實施例,并不旨在 限制而是說明用于執(zhí)行此重新排序的一個示例的方法和機(jī)制。在本說明書中對說明性實施 例所作的許多修改對本領(lǐng)域技術(shù)人員來說是顯而易見的,不偏離本發(fā)明的精神和范圍。
[0074] 圖5是根據(jù)一個說明性實施例概述基于聚類的矩陣重新排序運算的例子的流程 圖。如圖5所示,基于聚類的矩陣重新排序運算可以在專門配置的配置為實施以下所描述的 運算的硬件、在硬件上執(zhí)行的軟件、配置來實現(xiàn)這些運算的硬件或任何專門配置的硬件和 在硬件上執(zhí)行的軟件的組合實施。為了結(jié)合在圖5中所闡述的運算的描述說明說明性實施 例的操作,使用了這樣一個例子,其中矩陣M由對應(yīng)于社交網(wǎng)絡(luò)服務(wù)的用戶的索引或節(jié)點組 成,并且其中對應(yīng)于索引或節(jié)點的非零元素是索引或節(jié)點代表的用戶之間的關(guān)系的表示。 應(yīng)該理解,這只是說明性實施例的機(jī)制可以被用于執(zhí)行在具有近似無標(biāo)度圖拓?fù)涞拇笮途?陣上的任何矩陣運算的一個例子和機(jī)制。
[0075] 如圖5所示,操作開始于步驟510,其中通過分析輸入矩陣M以識別在矩陣M內(nèi)的團(tuán)。 輸入矩陣M可以是一組收集的數(shù)據(jù),表示特定信息對象、概念、實體等之間的連接或關(guān)系,被 指定為矩陣M的索引。例如,在社交網(wǎng)絡(luò)環(huán)境中,矩陣M的索引可以表示社交網(wǎng)絡(luò)服務(wù)的用 戶、他們的屬性、用戶之間交換的通信等。在問答環(huán)境或互聯(lián)網(wǎng)搜索環(huán)境中,矩陣M的索引可 以表示作為用于進(jìn)行問題解答或互聯(lián)網(wǎng)搜索的基礎(chǔ)的信息語料庫中的文檔的特征。因此, 輸入矩陣M中的索引表示適合于執(zhí)行知識提取、推理或其他分析操作的任意信息、概念或?qū)?體。兩個索引的交叉點的條目存儲由相交的索引表示的信息、概念或?qū)嶓w之間的關(guān)系存在 或不存在的值。
[0076] 團(tuán)被定義為矩陣的行和列索引(或節(jié)點)的集合,從而其子矩陣是由所有非零項組 成。例如,如果矩陣M中表示的第一個用戶連接到第二個用戶,或反之亦然,兩個用戶可以構(gòu) 成一個團(tuán)。團(tuán)可以利用一個起始節(jié)點或索引來確定,并確定矩陣M中被連接到的起始節(jié)點或 索引的其它節(jié)點或索引,或反之亦然,也就是說,索引的交點識別矩陣M中的非零值元素???以對連接到起始節(jié)點或索引的每一個節(jié)點或索引重復(fù)該過程,其中,連接的節(jié)點或索引(以 下簡稱為"節(jié)點")的一些可能是團(tuán)的一部分,而其它節(jié)點不是。也就是說,例如,如果約翰是 起始節(jié)點并且具有一個到皮特約翰遜的"朋友"連接,并且皮特約翰遜具有一個到約翰史密 斯的"朋友"連接,那么約翰史密斯和皮特約翰遜可以構(gòu)成團(tuán)。如果皮約翰遜沒有到約翰史 密斯的連接,那么團(tuán)中可以不包括皮特約翰遜,雖然如后面討論的那樣,他可能會被包括在 后續(xù)生成的集群中。
[0077] 可以對輸入矩陣M的每個節(jié)點重復(fù)生成團(tuán)的過程,以便生成多個團(tuán)??梢栽谂渲脜?數(shù)中指定最小尺寸要求,指示在團(tuán)中必須存在的最小數(shù)量的節(jié)點,該團(tuán)被維護(hù)作為圖5其他 操作的起點用于其他用途,例如,團(tuán)至少要有20個節(jié)點,其中具有小于20個節(jié)點的團(tuán)被丟 棄。
[0078]已經(jīng)生成作為矩陣的連接節(jié)點的初始集群的團(tuán),從團(tuán)的每一個執(zhí)行集群生長操作 以生長成集群(步驟520)。將團(tuán)生長成集群中,已經(jīng)不再是團(tuán)的一部分的矩陣的節(jié)點被分配 到集群。節(jié)點到集群的分配是基于相應(yīng)的行/列所具有的到已經(jīng)在集群中的節(jié)點的連接數(shù)。 也就是說,節(jié)點被添加到這樣的集群中,其中該節(jié)點到該集群具有最多的連接,即與群集的 其它節(jié)點關(guān)聯(lián)的非零值元素。如果節(jié)點沒有到其他節(jié)點的任何連接或只有到其他節(jié)點相對 較少的連接,一些節(jié)點可能會沒有集群。當(dāng)節(jié)點加入群集時,更新表達(dá)集群的數(shù)據(jù)結(jié)構(gòu)被并 且將新加入的節(jié)點作為添加額外節(jié)點的基礎(chǔ),例如,如果約翰史密斯被添加到代表瑪麗夢 露的朋友的用戶集群,那么可以進(jìn)一步將約翰史密斯的朋友作為確定是否將這些朋友加入 到瑪麗夢露的朋友集群的基礎(chǔ)。
[0079] 以這種方式,集群從初始團(tuán)成長為一個更大尺寸的集群。可以在基于聚類的矩陣 重新排序機(jī)制的配置參數(shù)中設(shè)置集群的集群的最大大小。集群的最大大小可以設(shè)置為存儲 器層級結(jié)構(gòu)參數(shù)的函數(shù),例如,在實現(xiàn)了基于集群的矩陣重新排序機(jī)制的計算機(jī)體系架構(gòu) 中的高速緩存的大小。例如,集群的最大大小可以被設(shè)置為等于體系結(jié)構(gòu)中一定比例的特 定的緩存大小,例如,L3高速緩存大小的X%。
[0080] 一旦按照以上描述的方式已經(jīng)處理了矩陣的非零元素的每一個并將對應(yīng)節(jié)點添 加到集群中,可以通過允許節(jié)點被重新分配到其他集群而提煉集群(步驟530)。例如,可以 分析每個群集的節(jié)點以確定它們到其他集群的節(jié)點的連接是否多于它們到其當(dāng)前分配集 群的節(jié)點的連接。如果集群A中的一個節(jié)點到集群B中節(jié)點的連接(非零元素)更多,那么該 節(jié)點可以被重新分配到集群B。響應(yīng)于重新分配的確定將導(dǎo)致跨集群連接(或邊)的總數(shù)減 少而不違反集群的最大大小的限制,基于集群的矩陣重新排序機(jī)制可以允許該重新分配。 因此,如果集群B已經(jīng)是處于最大大小,可能會拒絕該重新分配。此外,如果重新分配不會減 少跨集群連接的總數(shù),可能會拒絕該重新分配??梢栽诓襟E520中所生成的每個群集的每個 節(jié)點上執(zhí)行這一提煉。
[0081] 在步驟530中已經(jīng)提煉節(jié)點的集群,排序得到的集群以便最小化跨群集連接(或 邊)的總長度,即使節(jié)點項到矩陣對角線的距離最小化(步驟540)。此外,作為此操作的一部 分,跨集群連接根據(jù)其兩端節(jié)點分布集中,即連接的兩個節(jié)點之間的連接長度被最小化。此 操作可以以動態(tài)規(guī)劃算法實現(xiàn),每次優(yōu)化部分實現(xiàn),并且逐集群的增加該部分解決方案直 到全部集群被排序。
[0082]盡管不是必需的,作為一個可選的操作,經(jīng)排序的集群內(nèi)的節(jié)點可以自己在集群 內(nèi)本地排序(步驟550)。集群的該本地排序在集群內(nèi)將非零項移動到更靠近對角線并將具 有跨集群連接的節(jié)點移動到更靠近集群的邊界。即,當(dāng)在集群內(nèi)排序時,如果集群中的矩陣 節(jié)點具有到在該集群之前被排序的其它集群的節(jié)點的連接(非零元素),那么該節(jié)點位于該 集群內(nèi)早期的位置(向"前端")以便其跨集群非零值更靠近經(jīng)重新排序的矩陣的對角線。以 同樣的方式,如果節(jié)點具有到在該集群之后被排序的其他集群的連接(非零元素),那么該 節(jié)點位于該集群內(nèi)后面的位置(向"后端")。在本地級別,這種集群內(nèi)重新排序可以通過在 本地集群上執(zhí)行如上(步驟510-540)討論的相同的操作來完成,或利用諸如Cuthill-McKee 或分割算法的其它已知算法來對非零元素進(jìn)行重新排序。應(yīng)該指出的是,已知算法可用于 個體集群而用于集群內(nèi)部重組,這是因為集群相對較小并且具有更強(qiáng)連接的子圖(不是稀 疏分布的),從而與重新排序算法相比緩存效率沒有大的差異。
[0083]應(yīng)該知道,不論是這個重新排序過程是正在執(zhí)行還是在重新排序過程完成之后執(zhí) 行,都要更新查找表中的向量來代表被移動的元素的新位置。例如,查找表可以包括具有原 矩陣M的索引位置的第一向量以及具有執(zhí)行重新排序之后的新位置的第二向量,指針從一 個向量項指向另一個向量項以允許在經(jīng)重新排序的矩陣中將元素的原始位置映射到新位 置。該查找表和經(jīng)重新排序的矩陣可以是用于執(zhí)行矩陣運算的輸出并且最終用于知識提取 運算、推理運算或其他分析運算的輸出(步驟560)。
[0084] 在運行時操作期間,輸出的查找表和經(jīng)重新排序的矩陣可用于執(zhí)行作為諸如知識 提取、推理、分析等的知識運算的一部分的矩陣運算(步驟570)。然后可以輸出該知識運算 的結(jié)果(步驟580)。因此,示例性實施例的機(jī)制特別配置的計算設(shè)備,其上專門執(zhí)行這種類 型的基于聚類的矩陣排序運算,而不是由通用計算設(shè)備執(zhí)行,并且該機(jī)制改進(jìn)了計算設(shè)備 的運算和功能。此外,說明性實施例的機(jī)制通過在矩陣運算過程中增加計算設(shè)備的高速緩 存的效率改進(jìn)了在其上實現(xiàn)該機(jī)制的計算設(shè)備的功能和性能。
[0085] 應(yīng)該知道,在運行時矩陣運算期間可以使用經(jīng)重新排序的矩陣和查找表之前實施 步驟510-560。即,這些步驟510-560可用于矩陣的預(yù)處理,將得到的經(jīng)重新排序的矩陣和查 找表輸出到運行時系統(tǒng)組件以用于執(zhí)行其運行時操作。用這種方式,在運行時期間不需要 在每次要執(zhí)行表示為步驟570-580的矩陣運算時重新排序矩陣。
[0086] 在一些說明性實施例中,如果識別到已經(jīng)對矩陣做出更新,可以對之前經(jīng)重新排 序的矩陣的部分重新排序。例如,在社交網(wǎng)絡(luò)環(huán)境中,如果將新用戶添加至矩陣或從矩陣中 刪除用戶,那么可以執(zhí)行部分重新排序以調(diào)整經(jīng)重新排序的矩陣和查找表來適應(yīng)輸入矩陣 的變化,而無需每次發(fā)生變化時再次執(zhí)行完整的重新排序過程。例如,可以只對受輸入矩陣 變化影響的那些集群重復(fù)步驟510-560,而不是對所有集群或所有集群的所有元素執(zhí)行這 些步驟。以這種方式,可以通過對經(jīng)重新排序的矩陣和查找表的增量更新來適應(yīng)輸入矩陣 的增量變化。
[0087]因此,說明性實施例的機(jī)制產(chǎn)生經(jīng)重新排序的矩陣,通過將輸入矩陣的節(jié)點聚類 到集群中將非零元素集中于矩陣對角線以最小化跨集群的連接的長度。由于這些長度被最 小化,并且非零元素被緊密堆積在一起,顯著減少了高速緩存未命中,從而使得緩存效率和 運行性能相應(yīng)增加。
[0088] 應(yīng)該指出,上述說明性實施例假設(shè)重新排序是對稱地完成的,從而集群被集中于 矩陣M的對角線。然而,說明性實施例的機(jī)制并不限于對稱重新排序,也可以用于實現(xiàn)非對 稱的重新排序操作。在非對稱重新排序的實現(xiàn)中,行節(jié)點或索引的變換可以不同于列索引, 從而實現(xiàn)非對稱重新排序。雖然這可以在一些說明性實施例中完成,非對稱重新排序?qū)崿F(xiàn) 的不好的一面是,如果另一個矩陣乘法將要在輸出向量〇上執(zhí)行(這在矩陣運算種經(jīng)常發(fā) 生),輸出向量〇也需要改變進(jìn)行變換。由于需要執(zhí)行多個變換會導(dǎo)致額外的處理成本。對稱 變換不涉及額外的處理成本。因此,可以預(yù)見,最實際的實現(xiàn)是涉及對稱變換。然而,應(yīng)該理 解,本發(fā)明的精神和范圍包含具有非對稱重新排序的說明性實施例的機(jī)制。
[0089] 應(yīng)該理解本發(fā)明可以是系統(tǒng)、方法和/或計算機(jī)程序產(chǎn)品。計算機(jī)程序產(chǎn)品可以包 括計算機(jī)可讀存儲介質(zhì),其上載有用于使處理器實現(xiàn)本發(fā)明的各個方面的計算機(jī)可讀程序 指令。
[0090] 計算機(jī)可讀存儲介質(zhì)可以是可以保持和存儲由指令執(zhí)行設(shè)備使用的指令的有形 設(shè)備。計算機(jī)可讀存儲介質(zhì)例如可以是一一但不限于一一電存儲設(shè)備、磁存儲設(shè)備、光存儲 設(shè)備、電磁存儲設(shè)備、半導(dǎo)體存儲設(shè)備或者上述的任意合適的組合。計算機(jī)可讀存儲介質(zhì)的 更具體的例子(非窮舉的列表)包括:便攜式計算機(jī)盤、硬盤、隨機(jī)存取存儲器(RAM)、只讀存 儲器(ROM)、可擦式可編程只讀存儲器(EPROM或閃存)、靜態(tài)隨機(jī)存取存儲器(SRAM)、便攜式 壓縮盤只讀存儲器(CD-ROM)、數(shù)字多功能盤(DVD)、記憶棒、軟盤、機(jī)械編碼設(shè)備、例如其上 存儲有指令的打孔卡或凹槽內(nèi)凸起結(jié)構(gòu)、以及上述的任意合適的組合。這里所使用的計算 機(jī)可讀存儲介質(zhì)不被解釋為瞬時信號本身,諸如無線電波或者其他自由傳播的電磁波、通 過波導(dǎo)或其他傳輸媒介傳播的電磁波(例如,通過光纖電纜的光脈沖)、或者通過電線傳輸 的電信號。
[0091] 這里所描述的計算機(jī)可讀程序指令可以從計算機(jī)可讀存儲介質(zhì)下載到各個計算/ 處理設(shè)備,或者通過網(wǎng)絡(luò)、例如因特網(wǎng)、局域網(wǎng)、廣域網(wǎng)和/或無線網(wǎng)下載到外部計算機(jī)或外 部存儲設(shè)備。網(wǎng)絡(luò)可以包括銅傳輸電纜、光纖傳輸、無線傳輸、路由器、防火墻、交換機(jī)、網(wǎng)關(guān) 計算機(jī)和/或邊緣服務(wù)器。每個計算/處理設(shè)備中的網(wǎng)絡(luò)適配卡或者網(wǎng)絡(luò)接口從網(wǎng)絡(luò)接收計 算機(jī)可讀程序指令,并轉(zhuǎn)發(fā)該計算機(jī)可讀程序指令,以供存儲在各個計算/處理設(shè)備中的計 算機(jī)可讀存儲介質(zhì)中。
[0092]用于執(zhí)行本發(fā)明操作的計算機(jī)程序指令可以是匯編指令、指令集架構(gòu)(ISA)指令、 機(jī)器指令、機(jī)器相關(guān)指令、微代碼、固件指令、狀態(tài)設(shè)置數(shù)據(jù)、或者以一種或多種編程語言的 任意組合編寫的源代碼或目標(biāo)代碼,所述編程語言包括面向?qū)ο蟮木幊陶Z言一諸如 Smalltalk、C++等,以及常規(guī)的過程式編程語言一諸如"C"語言或類似的編程語言。計算機(jī) 可讀程序指令可以完全地在用戶計算機(jī)上執(zhí)行、部分地在用戶計算機(jī)上執(zhí)行、作為一個獨 立的軟件包執(zhí)行、部分在用戶計算機(jī)上部分在遠(yuǎn)程計算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計算機(jī) 或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計算機(jī)的情形中,遠(yuǎn)程計算機(jī)可以通過任意種類的網(wǎng)絡(luò)一包 括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)-連接到用戶計算機(jī),或者,可以連接到外部計算機(jī)(例如利 用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。在一些實施例中,通過利用計算機(jī)可讀程序指令 的狀態(tài)信息來個性化定制電子電路,例如可編程邏輯電路、現(xiàn)場可編程門陣列(FPGA)或可 編程邏輯陣列(PLA),該電子電路可以執(zhí)行計算機(jī)可讀程序指令,從而實現(xiàn)本發(fā)明的各個方 面。
[0093] 這里參照根據(jù)本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機(jī)程序產(chǎn)品的流程圖和/ 或框圖描述了本發(fā)明的各個方面。應(yīng)當(dāng)理解,流程圖和/或框圖的每個方框以及流程圖和/ 或框圖中各方框的組合,都可以由計算機(jī)可讀程序指令實現(xiàn)。
[0094] 這些計算機(jī)可讀程序指令可以提供給通用計算機(jī)、專用計算機(jī)或其它可編程數(shù)據(jù) 處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,使得這些指令在通過計算機(jī)或其它可編程數(shù)據(jù) 處理裝置的處理器執(zhí)行時,產(chǎn)生了實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功 能/動作的裝置。也可以把這些計算機(jī)可讀程序指令存儲在計算機(jī)可讀存儲介質(zhì)中,這些指 令使得計算機(jī)、可編程數(shù)據(jù)處理裝置和/或其他設(shè)備以特定方式工作,從而,存儲有指令的 計算機(jī)可讀介質(zhì)則包括一個制造品,其包括實現(xiàn)流程圖和/或框圖中的一個或多個方框中 規(guī)定的功能/動作的各個方面的指令。
[0095] 也可以把計算機(jī)可讀程序指令加載到計算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它 設(shè)備上,使得在計算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn) 生計算機(jī)實現(xiàn)的過程,從而使得在計算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上執(zhí)行的 指令實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作。
[0096] 附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的系統(tǒng)、方法和計算機(jī)程 序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代 表一個模塊、程序段或指令的一部分,所述模塊、程序段或指令的一部分包含一個或多個用 于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。在有些作為替換的實現(xiàn)中,方框中所標(biāo)注的功能也 可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí) 行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或 流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動 作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機(jī)指令的組合來實現(xiàn)
[0097] 如上所述,可以在多種不同類型的系統(tǒng)和應(yīng)用中實現(xiàn)用于執(zhí)行基于集群的矩陣排 序提高矩陣運算過程中高速緩存效率的說明性實施例的機(jī)制,用于執(zhí)行各種不同類型的操 作,通常分為知識提取、推理和分析。說明性實施例的機(jī)制一種實現(xiàn)是使用矩陣運算來協(xié)助 執(zhí)行如IBM watsonTMQA系統(tǒng)的問答(QA)系統(tǒng)的問答。以下圖6-8用于說明說明性實施例的 機(jī)制的QA系統(tǒng)實現(xiàn)的例子。應(yīng)該知道的是,這些圖只是說明性的,并不旨在限制本發(fā)明只能 實施為QA系統(tǒng)。執(zhí)行矩陣運算的任何類型的系統(tǒng)都可以實現(xiàn)說明性實施例的機(jī)制而不背離 本發(fā)明的精神和范圍。此外,可以在不偏離本發(fā)明的精神和范圍的前提下對所描述的環(huán)境 做出許多的修改。
[0098] 圖6-8描述了問答(QA)系統(tǒng)(也稱為問題/答案系統(tǒng)或問題與答案系統(tǒng))的示例、方 法以及計算機(jī)程序產(chǎn)品,其可以實現(xiàn)說明性實施例的機(jī)制。以下將更詳細(xì)地討論,示例性實 施例被集成、增強(qiáng)以及擴(kuò)展這些QA機(jī)制在執(zhí)行矩陣運算期間使用的重新排序矩陣方面的功 能性,矩陣運算例如作為QA系統(tǒng)功能諸如語料攝取、物證鑒定和評分等的一部分功能性。 [0099]由于QA系統(tǒng)被用作說明性實施例的實施環(huán)境的一個例子,在描述說明性實施例的 機(jī)制如何被集成并擴(kuò)展這樣的QA系統(tǒng)之前,首先要了解在QA系統(tǒng)中如何創(chuàng)建問題和答案。 應(yīng)該理解圖6-8所描述的QA系統(tǒng)機(jī)制只是一個例子,而非意圖陳述或暗示對可實現(xiàn)說明性 實施例的QA機(jī)制的類型的做出任何限制。在不脫離本發(fā)明的精神和范圍的情況下,可在本 發(fā)明的各種實施例中實現(xiàn)圖6-8中示出的示例性QA系統(tǒng)的許多變型。
[0100]作為概述,問答系統(tǒng)(QA系統(tǒng))是一種執(zhí)行在數(shù)據(jù)處理硬件上的人工智能應(yīng)用,其 回答以自然語言提出的有關(guān)特定主題領(lǐng)域的問題。QA系統(tǒng)接收來自各種來源的輸入,包括 通過網(wǎng)絡(luò)、電子文檔或其他數(shù)據(jù)的語料庫、來自內(nèi)容創(chuàng)建者的數(shù)據(jù)、來自一個或多個內(nèi)容用 戶的信息以及其它來自其它可能輸入源的輸入。數(shù)據(jù)存儲設(shè)備存儲數(shù)據(jù)的語料庫。內(nèi)容創(chuàng) 建者在文檔中創(chuàng)建內(nèi)容,作為QA系統(tǒng)的數(shù)據(jù)語料庫的一部分使用。該文檔可包括在QA系統(tǒng) 中使用的任何文件、文本、物品或數(shù)據(jù)源。例如,QA系統(tǒng)訪問有關(guān)領(lǐng)域的知識主體或主題領(lǐng) 域,例如金融領(lǐng)域、醫(yī)療領(lǐng)域、法律領(lǐng)域等等,其中知識主體(知識庫)可以以各種配置組織, 例如,諸如本體、或領(lǐng)域相關(guān)的非結(jié)構(gòu)化數(shù)據(jù)或有關(guān)該領(lǐng)域的自然語言文檔集合的特定領(lǐng) 域的結(jié)構(gòu)化的知識庫。
[0101]內(nèi)容用戶將問題輸入到QA系統(tǒng),QA系統(tǒng)然后通過評估文檔、文檔的部分、語料庫中 的部分?jǐn)?shù)據(jù)等利用數(shù)據(jù)語料庫的內(nèi)容回答輸入問題。當(dāng)過程對文檔的給定部分對語義內(nèi)容 進(jìn)行評估時,該過程可以使用各種協(xié)議從QA系統(tǒng)查詢這樣的文檔,例如,將查詢作為格式化 好的問題發(fā)送到QA系統(tǒng),然后由QA系統(tǒng)解釋該問題并且提供包含一個或多個該問題答案的 響應(yīng)。語義內(nèi)容是基于諸如單詞、短語、標(biāo)志、符號的記號之間的關(guān)系以及他們代表什么、他 們的外延或內(nèi)涵等的內(nèi)容。換句話說,語義內(nèi)容是例如使用自然語言處理來解釋表達(dá)式的 內(nèi)容。
[0102] 將在以下更詳細(xì)描述的,QA系統(tǒng)接收輸入的問題,解析問題以提取問題的主要特 征,利用提取的特征規(guī)劃查詢,然后將查詢應(yīng)用到數(shù)據(jù)語料庫?;诓樵儗?shù)據(jù)語料庫的應(yīng) 用,QA系統(tǒng)對輸入問題產(chǎn)生一組的假設(shè)或候選答案,通過跨數(shù)據(jù)語料庫尋找數(shù)據(jù)語料庫可 能包含輸入問題的有價值的響應(yīng)的部分。然后QA系統(tǒng)對輸入問題的語言以及使用各種推理 算法(例如,欲知關(guān)于IBM WatsonTM深度分析的更多信息,見McCord等人所著"Deep Parsing in Watson(在Watson中的深度解析)" IBM研究與發(fā)展J.,卷56,第3/4號五月/七月 2012)應(yīng)用查詢的過程中發(fā)現(xiàn)的數(shù)據(jù)的語料庫的每一部分使用的語言進(jìn)行諸如英國位置語 法(ESG)和謂詞論元結(jié)構(gòu)(PAS)生成器的深度分析??梢詰?yīng)用成千上百種推理算法,其中每 一個執(zhí)行不同的分析,例如比較、自然語言分析、詞法分析等并生成得分。例如,一些推理算 法可以尋找輸入問題的語言中的匹配用語和同義詞并發(fā)現(xiàn)數(shù)據(jù)語料庫中的部分。其他的推 理算法可以尋找語言中的時間或空間特征,而其它算法可以評估數(shù)據(jù)語料庫部分的來源并 評估其準(zhǔn)確性。
[0103] 從各種推理算法中得到的得分表明,由輸入問題基于推理算法專注的特定領(lǐng)域在 一定程度上推斷出潛在的響應(yīng)。然后,針對統(tǒng)計模型加權(quán)得到的每個得分。統(tǒng)計模型捕捉推 理算法在QA系統(tǒng)的訓(xùn)練期間對特定領(lǐng)域的兩個相似段落之間建立推理執(zhí)行的怎么樣。統(tǒng)計 模型是用來總結(jié)QA系統(tǒng)具有的關(guān)于被問題推斷出來的可能響應(yīng)-即候選答案的置信度水 平。對每個候選答案重復(fù)這個過程,直到QA系統(tǒng)識別顯著強(qiáng)于其他答案的候選答案并因此 為輸入問題產(chǎn)生最終的答案或排名的答案集。
[0104] 如上所述,QA系統(tǒng)和機(jī)制運作是通過訪問來自數(shù)據(jù)語料庫的信息或信息(也被稱 為內(nèi)容語料庫),對其進(jìn)行分析,然后基于這一數(shù)據(jù)的分析產(chǎn)生答案結(jié)果。從數(shù)據(jù)語料庫訪 問信息通常包括:數(shù)據(jù)庫查詢,回答關(guān)于在結(jié)構(gòu)化記錄集中有什么的問題,以及檢索,響應(yīng) 于針對非結(jié)構(gòu)化數(shù)據(jù)(文本、標(biāo)記語言等)集的查詢提供文檔鏈接的集。傳統(tǒng)的QA系統(tǒng)能夠 基于數(shù)據(jù)語料庫和輸入問題生成答案,針對數(shù)據(jù)語料庫驗證問題集的答案,適用數(shù)據(jù)語料 庫對數(shù)字文本糾正錯誤,并從可能答案,即候選答案的池中選擇問題的答案。
[0105] 內(nèi)容創(chuàng)建者(諸如文章作者、電子文檔創(chuàng)建者、網(wǎng)頁作者、文檔數(shù)據(jù)庫創(chuàng)建者等)可 在編寫他們的內(nèi)容之前確定在這種內(nèi)容中描述的產(chǎn)品、解決方案和服務(wù)的使用情況。因此, 內(nèi)容創(chuàng)建者可知道內(nèi)容意圖在由內(nèi)容描述的特定主題中回答什么問題。在數(shù)據(jù)的語料庫的 每個文檔中諸如根據(jù)與問題關(guān)聯(lián)的角色、信息的類型、任務(wù)等對問題進(jìn)行分類,可允許QA系 統(tǒng)更快速且高效地識別包含與特定查詢相關(guān)的內(nèi)容的文檔。內(nèi)容還可回答內(nèi)容創(chuàng)建者未想 到可能對內(nèi)容用戶有用的其它問題。問題和答案可由內(nèi)容創(chuàng)建者檢驗以便被包含在給定文 檔的內(nèi)容中。這些能力有助于提高的準(zhǔn)確性、系統(tǒng)性能、機(jī)器學(xué)習(xí)和QA系統(tǒng)的置信度。內(nèi)容 創(chuàng)建者、自動化工具等可做注釋或以其它方式產(chǎn)生元數(shù)據(jù)以提供可由QA系統(tǒng)用于識別內(nèi)容 的這些問題和答案屬性的信息。
[0106] 對這種內(nèi)容進(jìn)行操作,QA系統(tǒng)使用多個加強(qiáng)分析機(jī)構(gòu)產(chǎn)生輸入問題的答案,所述 多個加強(qiáng)分析機(jī)構(gòu)評估內(nèi)容以識別輸入問題的最有可能的答案(即,候選答案)。最有可能 的答案輸出為根據(jù)評價侯選回答期間計算的它們的相對得分或置信度測量值排名的候選 答案排名的列表、具有最高得分或置信度測量的單個最終答案、或者是對輸入問題最好的 匹配,或者排名列表與最終答案的組合。
[0107] 圖6描述計算機(jī)網(wǎng)絡(luò)602中的問題/答案創(chuàng)建(QA)系統(tǒng)600的一個說明性實施例的 示意圖。在第2011/0125734號美國專利申請公開中描述了可結(jié)合這里描述的原理使用的問 題/答案產(chǎn)生的一個例子,該美國專利申請的全部內(nèi)容通過引用包含于此。QA系統(tǒng)600可被 實現(xiàn)在連接到計算機(jī)網(wǎng)絡(luò)602的一個或多個計算裝置604(包括一個或多個處理器和一個或 多個存儲器,并且可包括本領(lǐng)域通常已知的任何其它計算裝置元件,包括總線、存儲裝置、 通信接口等)上。網(wǎng)絡(luò)602可包括經(jīng)由一個或多個有線和/或無線數(shù)據(jù)通信鏈路彼此通信以 及與其它裝置或部件通信的多個計算裝置604,其中每個通信鏈路可包括導(dǎo)線、路由器、交 換機(jī)、發(fā)射器、接收器等中的一個或多個。QA系統(tǒng)600和網(wǎng)絡(luò)602可以啟用一個或多個QA系統(tǒng) 用戶經(jīng)由他們各自的計算裝置610-612的問/答(QA)產(chǎn)生功能。QA系統(tǒng)600的其它實施例可 被與除這里描述的部件、系統(tǒng)、子系統(tǒng)和/或裝置之外的部件、系統(tǒng)、子系統(tǒng)和/或裝置一起 使用。
[0108] QA系統(tǒng)600可被配置為實現(xiàn)從各種源接收輸入的QA系統(tǒng)管道608。例如,QA系統(tǒng)600 可從網(wǎng)絡(luò)602、電子文檔的語料庫606、QA系統(tǒng)用戶或其它數(shù)據(jù)和其它可能的輸入源接收輸 入。在一個實施例中,可通過網(wǎng)絡(luò)602對QA系統(tǒng)600的一些或所有的輸入進(jìn)行路由。網(wǎng)絡(luò)602 上的各種計算裝置604可包括用于內(nèi)容創(chuàng)建者和QA系統(tǒng)用戶的接入點。一些計算裝置604可 包括用于存儲數(shù)據(jù)的語料庫606的數(shù)據(jù)庫的裝置(在圖6中,僅為了說明的目的,數(shù)據(jù)的語料 庫606被示出為單獨的實體)。數(shù)據(jù)的語料庫606的各部分也可布置在一個或多個其它附接 于網(wǎng)絡(luò)的存儲裝置上,布置在一個或多個數(shù)據(jù)庫或者圖6中未明確地示出的其它計算裝置 中。在各種實施例中,網(wǎng)絡(luò)602可包括局部網(wǎng)絡(luò)連接和遠(yuǎn)程連接,從而QA系統(tǒng)600可在任何大 小的環(huán)境(包括本地和全球環(huán)境(例如,互聯(lián)網(wǎng)))中操作。
[0109] 在一個實施例中,內(nèi)容創(chuàng)建者創(chuàng)建數(shù)據(jù)的語料庫606的文檔中的內(nèi)容以用作QA系 統(tǒng)600的數(shù)據(jù)的語料庫的一部分。文檔可包括任何文件、文本、文章或用在QA系統(tǒng)600中的數(shù) 據(jù)的源。QA系統(tǒng)用戶可經(jīng)由與網(wǎng)絡(luò)602的網(wǎng)絡(luò)連接或互聯(lián)網(wǎng)連接訪問QA系統(tǒng)600,并且可將 可由數(shù)據(jù)的語料庫606中的內(nèi)容回答的問題輸入到QA系統(tǒng)600。在一個實施例中,可使用自 然語言形成問題。QA系統(tǒng)600解析并解釋問題,并且將包含問題的一個或多個答案的響應(yīng)提 供給QA系統(tǒng)用戶(例如,QA系統(tǒng)用戶610)。在一些實施例中,QA系統(tǒng)600可在候選答案的分級 列表中將響應(yīng)提供給用戶。而在其它說明性實施例中,QA系統(tǒng)600提供唯一的最后答案或者 唯一的最后答案與其它候選答案的分級列表的組合。
[0110] QA系統(tǒng)600實現(xiàn)QA系統(tǒng)管道608,QA系統(tǒng)管道608包括用于處理輸入問題、數(shù)據(jù)的語 料庫606以及基于數(shù)據(jù)的語料庫606的處理產(chǎn)生輸入問題的答案的多個階段。將在以下參照 圖3更詳細(xì)地描述QA系統(tǒng)管道608。
[0111] 在一些說明性實施例中,QA系統(tǒng)600可以是從紐約阿芒克的國際商業(yè)機(jī)器公司獲 得的IBM WatsonTM QA系統(tǒng),其使用以下描述的說明性實施例的機(jī)制進(jìn)行增強(qiáng)。如前文所 述,IBM WatsonTM QA系統(tǒng)接收輸入問題,然后問題被解析并提取問題的主要特征,這些特 征反過來用于規(guī)劃應(yīng)用于數(shù)據(jù)的語料庫的查詢。
[0112] 基于將查詢應(yīng)用于數(shù)據(jù)的語料庫,通過跨數(shù)據(jù)語料庫查找數(shù)據(jù)語料庫可能包含輸 入問題的有價值的響應(yīng)的數(shù)據(jù)語料庫的部分生成一組對輸入問題的假說或候選答案。 WatsonTM QA系統(tǒng)隨后使用各種推理算法對輸入問題的語言和在查詢的應(yīng)用期間找到的數(shù) 據(jù)的語料庫的每個部分中使用的語言執(zhí)行深入分析。然后從各種分析算法得到的得分被加 權(quán),然后將從各推理算法得到的分?jǐn)?shù)針對總結(jié)了IBM WatsonTM QA系統(tǒng)具有的關(guān)于可能響 應(yīng)置信度的置信度評級的統(tǒng)計模型進(jìn)行加權(quán),即,由問題推斷候選答案。對生成的每個候選 的答案重復(fù)這個過程以生成候選答案排名的列表,然后可以將該列表呈現(xiàn)給提交輸入問題 的用戶或者從中選擇最終答案呈現(xiàn)給用戶。可以例如從IBM公司的網(wǎng)站、IBM紅皮書等獲得 關(guān)于IBM WatsonTM QA系統(tǒng)的更多信息。例如,有關(guān)IBM WatsonTM QA系統(tǒng)的信息可以在 Yuan等人所著的,"Watson and Healthcare(沃森和醫(yī)療保健)" IBM的developerWorks, 2011 以及由羅伯高所著"The Era of Cognitive Systems:An Inside Look at IBM Watson and How it Works(認(rèn)知系統(tǒng)的時代:將深入了解IBM沃森和它是如何工作的)", IBM紅皮書,2012中找到。
[0113]如圖6所示,根據(jù)說明性實施例的機(jī)制提供了與QA系統(tǒng)600關(guān)聯(lián)的矩陣重新排序引 擎620。盡管在圖6中作為一個單獨單元示出,在一些說明性實施例中,該矩陣重新排序620 引擎可以集成到QA系統(tǒng)600和/或QA系統(tǒng)管道608。矩陣重新排序620引擎包括團(tuán)生成器622、 集群生成器624、集群排序邏輯626以及輸出生成器628,它們中的每一個都可以用專門的硬 件、在硬件上執(zhí)行的軟件或一個或多個計算設(shè)備的專用的硬件和在硬件上執(zhí)行軟件的任何 組合實現(xiàn)。矩陣重新排序引擎620的操作可以作為對QA系統(tǒng)管道608例如如在語料庫攝入期 間使用的矩陣的預(yù)處理器。另外,QA系統(tǒng)管道608運行期間可以調(diào)用矩陣重新排序引擎620 的操作,例如,如在語料庫識別證據(jù)和證據(jù)得分以生成候選答案置信得分的部分??傊?,作 為QA系統(tǒng)600的操作的部分,可以在矩陣運算要執(zhí)行的任何時候調(diào)用矩陣的重新排序引擎 620〇
[0114]矩陣重新排序引擎620的團(tuán)生成器622包括操作以在輸入矩陣的矩陣節(jié)點識別團(tuán) 的邏輯。在生成這些團(tuán)中,可以處理節(jié)點(如由矩陣的非零元素指定)之間的關(guān)系并最小化 尺寸要求以生成從其可以執(zhí)行節(jié)點及其對應(yīng)的矩陣的非零元素的聚類的一組團(tuán)。這對應(yīng)于 如上所述的圖5中的步驟510。
[0115] 集群生成器624包括操作以從初始的一組團(tuán)生長矩陣節(jié)點的集群并提煉這些集群 以最小化跨群集連接的邏輯。正如上面所討論的,聚類可以包括基于節(jié)點具有的到集群每 一個的連接的數(shù)目,將不在團(tuán)中的每一個矩陣節(jié)點分配到集群中。此外,集群的提煉可以包 括將節(jié)點從一個集群移動到另一個以最小化跨集群連接,同時遵守集群最大尺寸的限制并 確保減少跨集群連接(或邊)的總數(shù)減少。可以反復(fù)迭代集群生成器624的過程,直到無法得 到進(jìn)一步明顯的改善,例如,跨群集連接的數(shù)目不再減少。這些操作例如對應(yīng)于圖5的步驟 520-530。
[0116] 群集排序邏輯626包括操作以將提煉的集群排序從而最小化跨集群連接的總長 度,并根據(jù)兩個端點的節(jié)點分布集中跨集群連接的邏輯。此外,集群排序邏輯626可以可選 地在每個集群內(nèi)重新排列元素以便將非零元素移動到更接近集群的對角線。這例如對應(yīng)于 圖5的步驟540-550。
[0117] 輸出生成器628負(fù)責(zé)跟蹤由查找表向量中其他元素 622-626的重新排序操作造成 的矩陣變化并在矩陣維護(hù)節(jié)點原始位置的向量??梢杂奢敵錾善?28以QA系統(tǒng)600執(zhí)行諸 如在輸入矩陣上執(zhí)行矩陣向量乘法運算的矩陣運算可用的格式輸出該查找表和經(jīng)重新排 序的矩陣。
[0118]圖7是可實現(xiàn)說明性實施例的各方面的示例性數(shù)據(jù)處理系統(tǒng)的方框圖。數(shù)據(jù)處理 系統(tǒng)700是計算機(jī)(諸如,圖6中的服務(wù)器604或客戶機(jī)610)的例子,實現(xiàn)本發(fā)明的說明性實 施例的各過程的計算機(jī)可用代碼或指令可位于該計算機(jī)中。在一個說明性實施例中,圖7代 表實現(xiàn)QA系統(tǒng)600和QA系統(tǒng)管道608的服務(wù)器計算裝置(諸如,服務(wù)器604),QA系統(tǒng)600和QA 系統(tǒng)管道608被加強(qiáng)以包括以下描述的說明性實施例的另外的機(jī)構(gòu)。
[0119]在描述的例子中,數(shù)據(jù)處理系統(tǒng)700采用集線器架構(gòu),該集線器架構(gòu)包括北橋和內(nèi) 存控制器集線器(NB/MCH)702以及南橋和輸入/輸出(I/O)控制器集線器(SB/ICH)704。處理 單元706、主存儲器708和圖形處理器710連接到NB/MCH 702。圖形處理器710可通過加速圖 形端口(AGP)連接到NB/MCH 702。
[0120] 在描述的例子中,局域網(wǎng)(LAN)適配器712連接到SB/ICH 704。音頻適配器716、鍵 盤和鼠標(biāo)適配器720、調(diào)制解調(diào)器722、只讀存儲器(R0M)724、硬盤驅(qū)動器(HDD)726、CD-R0M 驅(qū)動器730、通用串行總線(USB)端口和其它通信端口 732以及PCI/PCIe裝置734通過總線 738和總線740連接到SB/ICH TOLPCI/PCIe裝置可包括例如以太網(wǎng)適配器、附加卡和用于 筆記本計算機(jī)的PC卡。PCI使用卡總線控制器,而PCIe不使用卡總線控制器。ROM 724可以是 例如閃速基本輸入/輸出系統(tǒng)(BIOS)。
[0121] HDD 726和CD-ROM驅(qū)動器730通過總線740連接到SB/ICH 704ADD 726和CD-ROM驅(qū) 動器730可使用例如集成驅(qū)動電子設(shè)備(IDE)或串行高級技術(shù)附件(SATA)接口。超級I/O (SIO)裝置736可連接到SB/ICH 704。
[0122] 操作系統(tǒng)在處理單元706上運行。操作系統(tǒng)協(xié)調(diào)并提供圖7中的數(shù)據(jù)處理系統(tǒng)700 內(nèi)的各種部件的控制。作為客戶機(jī),操作系統(tǒng)可以是可商購獲得的操作系統(tǒng),諸如 Microsoft? 'Windows 7?。.面向?qū)ο蟮木幊滔到y(tǒng)(諸如,JavaTM編程系統(tǒng))可結(jié)合操 作系統(tǒng)運行并且提供從在數(shù)據(jù)處理系統(tǒng)700上執(zhí)行的JavaTM程序或應(yīng)用對操作系統(tǒng)的調(diào) 用。
[0123] 作為服務(wù)器,數(shù)據(jù)處理系統(tǒng)700可以是例如運行高級交互執(zhí)行(ΑΙΧ?)操作系統(tǒng) 或LINUX?操作系統(tǒng)的IBM? eServerTM System p?計算機(jī)系統(tǒng)。數(shù)據(jù)處理系統(tǒng)700 可以是在處理單元706中包括多個處理器的對稱多處理器(SMP)系統(tǒng)。或者,可采用單處理 器系統(tǒng)。
[0124] 用于操作系統(tǒng)、面向?qū)ο缶幊滔到y(tǒng)和應(yīng)用或程序的指令位于存儲裝置(諸如,HDD 726)上,并且可被加載到主內(nèi)存708中以由處理單元706執(zhí)行。本發(fā)明的說明性實施例的過 程可由處理單元706使用計算機(jī)可用程序代碼執(zhí)行,該計算機(jī)可用程序代碼可位于內(nèi)存(諸 如例如,主存儲器708、R0M 724)中或者位于例如一個或多個外圍裝置726和730中。
[0125] 總線系統(tǒng)(諸如,如圖7中所示的總線738或總線740)可包括一個或多個總線。當(dāng) 然,可使用任何類型的通信結(jié)構(gòu)或架構(gòu)實現(xiàn)該總線系統(tǒng),所述通信結(jié)構(gòu)或架構(gòu)提供連接到 該結(jié)構(gòu)或架構(gòu)的不同部件或裝置之間的數(shù)據(jù)傳輸。通信單元(諸如,圖7的調(diào)制解調(diào)器722或 網(wǎng)絡(luò)適配器712)可包括用于發(fā)送和接收數(shù)據(jù)的一個或多個裝置。內(nèi)存可以是例如主存儲器 708、R0M 724或諸如在圖7中的NB/MCH 702中的高速緩存。
[0126] 本領(lǐng)域普通技術(shù)人員將會理解,圖1和7中描述的硬件可根據(jù)實現(xiàn)方式而不同。除 圖1和7中描述的硬件之外或者替代于圖1和7中描述的硬件,可使用其它內(nèi)部硬件或外圍裝 置,諸如閃存、等同的非易失性存儲器或光盤驅(qū)動器等。此外,在不脫離本發(fā)明的精神和范 圍的情況下,說明性實施例的過程可應(yīng)用于除前述SMP系統(tǒng)之外的多處理器數(shù)據(jù)處理系統(tǒng)。
[0127] 此外,數(shù)據(jù)處理系統(tǒng)700可采用許多不同數(shù)據(jù)處理系統(tǒng)中的任何形式,包括客戶機(jī) 計算裝置、服務(wù)器計算裝置、平板計算機(jī)、膝上型計算機(jī)、電話或其它通信裝置、個人數(shù)字助 手(PDA)等。在一些說明性例子中,數(shù)據(jù)處理系統(tǒng)700可以是例如便攜式計算裝置,該便攜式 計算裝置構(gòu)造為具有提供用于存儲操作系統(tǒng)文件和/或用戶產(chǎn)生的數(shù)據(jù)的非易失性存儲器 的閃存。實質(zhì)上,數(shù)據(jù)處理系統(tǒng)700可以是任何已知或者以后開發(fā)的數(shù)據(jù)處理系統(tǒng)而沒有架 構(gòu)限制。
[0128] 圖8示出根據(jù)一個說明性實施例的用于處理輸入問題的QA系統(tǒng)管道。圖8的QA系統(tǒng) 管道可例如被實現(xiàn)為圖6中的QA系統(tǒng)600的QA系統(tǒng)管道608。應(yīng)該理解,圖8中示出的QA系統(tǒng) 管道的各級可被實現(xiàn)為利用用于實現(xiàn)歸屬于特定級的功能的邏輯構(gòu)成的一個或多個軟件 引擎、部件等??墒褂眠@種軟件引擎、部件等中的一個或多個實現(xiàn)每個階段。軟件引擎、部件 等在一個或多個數(shù)據(jù)處理系統(tǒng)或裝置的一個或多個處理器上執(zhí)行,并且使用或操作存儲在 一個或多個數(shù)據(jù)處理系統(tǒng)上的一個或多個數(shù)據(jù)存儲裝置、存儲器等中的數(shù)據(jù)。此外,盡管在 圖8中沒有明確示為一個單獨的模塊,QA系統(tǒng)管道800使用由圖中箭頭所示的接口訪問存儲 在一個或者多個存儲設(shè)備上的語料庫847或者語料庫845。
[0129] 圖8的QA系統(tǒng)管道可例如在一個或多個階段中被加強(qiáng)以實現(xiàn)以下描述的說明性實 施例的改進(jìn)的機(jī)構(gòu),可提供另外的級以實現(xiàn)改進(jìn)的機(jī)構(gòu),或者可提供與管道800分離的邏輯 以與管道800對接并且實現(xiàn)說明性實施例的改進(jìn)的功能和操作。
[0130] 如圖8中所示,QA系統(tǒng)管道800包括多個階段810-880,通過所述多個階段810-880, QA系統(tǒng)進(jìn)行操作以分析輸入問題并且產(chǎn)生最終響應(yīng)。在初始問題輸入階段810中,QA系統(tǒng)接 收以自然語言格式提供的輸入問題。也就是說,用戶可經(jīng)由用戶界面輸入用戶希望獲得其 答案的輸入問題,例如,"誰是華盛頓最親密的顧問? "響應(yīng)于接收到輸入問題,QA系統(tǒng)管道 800的下一階段(即,問題和主題分析階段820)使用自然語言處理(NLP)技術(shù)解析輸入問題 以從輸入問題提取主要特征,根據(jù)類型(例如,姓名、日期或大量其它定義的主題中的任何 主題)對主要特征進(jìn)行分類。例如,在以上示例性問題中,項"誰"可與指示正在尋找的人的 身份的"人"的主題關(guān)聯(lián),"華盛頓"可被識別為問題所關(guān)聯(lián)的人的正確姓名,"最親密的"可 被識別為指示接近程度或關(guān)系的詞語,并且"顧問"可指示名詞或其它語言主題。
[0131]此外,提取的主要特征包括分類為問題特性的關(guān)鍵詞和短語,如問題的重點、問題 的詞匯答案類型(LAT)等。如本文所指,詞匯答案類型(LAT)是在輸入問題中或從輸入問題 推斷出的指示答案類型的詞,其獨立于為該詞指定的語義。例如,在問題"在16世紀(jì)發(fā)明了 什么加速游戲的操縱裝置,它包括相同顏色的兩塊?"。LAT是字符串"操縱裝置"。問題的焦 點是問題的這樣一部分,如果用答案取代該部分使得問題成為單獨的陳述。例如,在問題 "什么藥物已經(jīng)顯示出能夠減輕ADD的癥狀并具有相對較少的副作用?"重點是"藥物",因為 如果例如用答案"Adderall"替換該詞"藥物"生成陳述的句子"Adderall已經(jīng)顯示出減輕 ADD的癥狀兵具有相對較少的副作用。"。重點經(jīng)常但并非總是包含LAT。另一方面,在許多情 況下,不可能從重點推斷出有意義的LAT。
[0132] 再次參考圖8,識別的主要特征可隨后在問題分解階段830期間被用于將問題分解 為一個或多個查詢,所述一個或多個查詢可被應(yīng)用于數(shù)據(jù)/信息的語料庫845以便產(chǎn)生一個 或多個假設(shè)??砂凑杖魏我阎幕蛞院箝_發(fā)的查詢語言(諸如,結(jié)構(gòu)查詢語言(SQL)等)產(chǎn)生 查詢。查詢可被應(yīng)用于存儲關(guān)于構(gòu)成數(shù)據(jù)/信息的語料庫845的電子文本、文檔、文章、網(wǎng)站 等的信息的一個或多個數(shù)據(jù)庫。也就是說,這些各種源自己、不同的各批的源等可代表多個 語料庫845內(nèi)的不同語料庫847。可存在基于各種準(zhǔn)則根據(jù)特定實現(xiàn)方式為不同的各批文檔 定義的不同語料庫847。例如,可為不同的主題、主題類別、信息源等建立不同的語料庫。作 為一個例子,第一語料庫可與衛(wèi)生保健文檔關(guān)聯(lián),而第二語料庫可與金融文檔關(guān)聯(lián)。替代 地,一個語料庫可以是由美國能源部公布的文檔,而另一語料庫可以是IBM Redbooks文檔。 具有某一類似屬性的任何一批內(nèi)容可被視為多個語料庫845內(nèi)的一個語料庫847。
[0133] 查詢可被應(yīng)用于存儲關(guān)于構(gòu)成數(shù)據(jù)/信息的語料庫(例如,圖6中的數(shù)據(jù)的語料庫 606)的電子文本、文檔、文章、網(wǎng)站等的信息的一個或多個數(shù)據(jù)庫。查詢在假設(shè)產(chǎn)生階段840 被應(yīng)用于數(shù)據(jù)/信息的語料庫以產(chǎn)生能夠評估的識別用于回答輸入問題的潛在假設(shè)的結(jié) 果。也就是說,查詢的應(yīng)用導(dǎo)致與特定查詢的準(zhǔn)則匹配的數(shù)據(jù)/信息的語料庫的一部分的提 取。語料庫的這些部分可隨后在假設(shè)產(chǎn)生階段840期間被分析和使用以產(chǎn)生用于回答輸入 問題的假設(shè)。這些假設(shè)在這里也被稱為輸入問題的"候選答案"。對于任何輸入問題,在這個 階段840,可產(chǎn)生可能需要評估的數(shù)百個假設(shè)或候選答案。
[0134] QA系統(tǒng)管道800隨后在階段850中執(zhí)行輸入問題的語言和每個假設(shè)或"候選答案" 的語言的深入分析和比較,以及執(zhí)行證據(jù)評分以評估特定假設(shè)是輸入問題的正確答案的可 能性。如上所述,這可包括使用多個推理算法,每個推理算法執(zhí)行輸入問題的語言和/或語 料庫的內(nèi)容的單獨類型的分析,所述分析提供支持或不支持假設(shè)的證據(jù)。每個推理算法基 于它執(zhí)行的分析產(chǎn)生得分,所述得分指示通過查詢的應(yīng)用而提取的數(shù)據(jù)/信息的語料庫的 各部分的相關(guān)性的量度以及對應(yīng)假設(shè)的正確性的量度(即,假設(shè)的置信度的量度)。
[0135] 根據(jù)執(zhí)行的特定的分析的不同可以有各種方法生成這樣的得分。然而,通常這些 算法尋找指示感興趣的用語、短語或文本的特定的用語、短語或文本的模式并確定匹配程 度,相對于較低的匹配度,較高的匹配度會被給予相對較高的得分。
[0136] 因此,例如可以算法配置以從輸入問題尋找精確用語或在輸入問題中尋找該精確 用語的同義詞,例如,精確用語"movie(電影)"或其同義詞,并基于這些精確用語或同義詞 的使用頻率生成得分。在這種情況下,精確匹配將被給予最高得分,而同義詞可以基于同義 詞的相對排名被給予一個較低得分,同義詞的相對排名可以由主題專家(具有特定領(lǐng)域和 使用術(shù)語的知識的人)指定,或根據(jù)對應(yīng)領(lǐng)域的語料庫中同義詞的使用頻率自動確定。因 此,例如在語料庫內(nèi)容中用語"movie(電影)"的精確匹配(也被稱為證據(jù),或證據(jù)段落)被給 了最高得分。電影的同義詞,如"motion picture(電影)"可能會給到較低的得分,但仍然高 于同義詞"film(電影,膠片)"或"moving picture show(電影節(jié)目)"的得分??梢詫⒚總€證 據(jù)段落的精確匹配和同義詞的實例用定量函數(shù)進(jìn)行編譯和使用以生成輸入問題證據(jù)段落 的匹配程度的得分。
[0137] 因此,例如對輸入問題"第一部電影是什么?"的假設(shè)或候選答案是"The Horse in Motion(運動中的馬)"。如果證據(jù)段落包含陳述"第一部電影是由埃德沃德?邁布里奇在 1878制作的"運動中的馬"。這是一部馬奔跑的電影",并且該算法尋找輸入問題焦點-"movie(電影)"的精確匹配或同義詞,然后,在證據(jù)段落的第二句中找到"movie(電影)"的 精確匹配,在證據(jù)段落的第一句中發(fā)現(xiàn)得分很高的同義詞"motion picture(電影)"。這可 以與證據(jù)段落的進(jìn)一步分析進(jìn)行組合以識別候選答案的文本-即"運動中的馬"也存在于證 據(jù)段落。這些因素可以組合以向該證據(jù)段落給出賦予一個相對較高的得分作為支持候選答 案"運動中的馬"是正確答案的證據(jù)。
[0138] 應(yīng)該理解,這只是如何進(jìn)行評分的一個簡單例子。許多其他各種復(fù)雜的算法可以 用來為候選答案和證據(jù)生成得分,而不背離本發(fā)明的精神和范圍。
[0139] 在合成階段860中,由各種推理算法生成的大量的相關(guān)性得分可被合成為各種假 的置信度得分。這個過程涉及將權(quán)重施加于各種得分,其中已通過由QA系統(tǒng)采用和/或動態(tài) 地更新的統(tǒng)計模型的訓(xùn)練確定了權(quán)重。例如,相對于為證據(jù)段落評估出版日期的算法所生 成的得分,由識別精確匹配用語和同義詞的算法所生成的得分的權(quán)重可以被設(shè)定成相對較 高。權(quán)重本身可以由主題專家指定或通過機(jī)器學(xué)習(xí)過程學(xué)習(xí),該過程評估證據(jù)段落特征的 重要性以及他們對整體候選答案生成的相對重要性。
[0140]根據(jù)通過QA系統(tǒng)的訓(xùn)練生成的統(tǒng)計模型對加權(quán)得分進(jìn)行處理,該訓(xùn)練識別可以將 這些得分組合以生成置信度得分或度量單獨的假設(shè)或候選答案的方式。該置信度得分或度 量總結(jié)QA系統(tǒng)具有的關(guān)于由輸入問題推導(dǎo)的候選答案的證據(jù)的置信度,即候選答案對輸入 問題來說是正確答案的置信度。
[0141]得到的置信度得分或量度由最終置信度合并和評級級870處理,最終置信度合并 和評級階段870可比較置信度得分和量度,將它們與預(yù)定閾值進(jìn)行比較,或者對置信度得分 執(zhí)行任何其它分析以確定哪些假設(shè)/候選答案最有可能是輸入問題的答案??筛鶕?jù)這些比 較對假設(shè)/候選答案進(jìn)行評級以產(chǎn)生假設(shè)/候選答案(以下,簡稱為"候選答案")的評級列 表。從候選答案的評級列表,在階段880,最終的答案和置信度得分或者最終的一組候選答 案和置信度得分可被產(chǎn)生并且通過圖形用戶接口或者輸出信息的其它機(jī)制輸出到原始輸 入問題。
[0142]如圖8所示,QA系統(tǒng)管道800還與一個或多個在輸入矩陣上操作的矩陣重新排序引 擎892和896以前面描述的方式相結(jié)合操作,以生成經(jīng)重新排序的矩陣894,898和對應(yīng)的查 找表(未顯示)。如圖所示,矩陣排序引擎892、896可以是單個引擎或多個引擎。圖8示出了多 個矩陣排序引擎892、896,只為說明可以使用這種矩陣排序的管道800的不同階段。在實際 中,矩陣排序引擎892可用于在管道800的單一位置,甚至可以是那些不與圖8的矩陣排序引 擎相關(guān)的其它階段。
[0143] 如圖8所示,在一個說明性實施例中,矩陣排序引擎892可作為語料庫攝取引擎890 的一部分操作,并可在表示語料庫847或語料庫845中的文檔信息的矩陣上操作。因此,從這 個意義上講,矩陣排序引擎892作為語料庫847或語料庫845的預(yù)處理器操作,并生成可以被 假設(shè)生成階段840利用以生成輸入問題的候選答案的重新排序矩陣894和查找表。例如,被 操作的矩陣可以包括語料庫的文檔中的概念的節(jié)點指示,并可用于識別哪些文件具有相關(guān) (如在這些概念節(jié)點的交叉點由非零元素指示)的概念。此信息可與從輸入問題810所提取 的特征以及由問題分解器830所生成的查詢一起使用以確定語料庫845或語料庫847中的可 能提供輸入問題810的候選答案的文檔。
[0144] 在另一個說明性實施例中,矩陣排序引擎896可以被集成到QA系統(tǒng)管道800中,并 可以在運行時操作以協(xié)助評估用于各種假設(shè)(候選答案)打分的證據(jù)。經(jīng)重新排序的矩陣 898可以用來表示文檔的證據(jù)內(nèi)容并將這個證據(jù)與候選答案關(guān)聯(lián)以確定對每個候選答案來 說有多少支持,從而確定候選答案的置信度??梢詧?zhí)行矩陣運算以生成這種置信度的度量, 也可以利用經(jīng)重新排序的矩陣898進(jìn)行這種矩陣運算。QA系統(tǒng)的其他實施方式可利用矩陣 排序引擎和在其他階段經(jīng)重新排序的矩陣或其他實現(xiàn)矩陣運算的操作,例如,矩陣向量乘 法運算。
[0145] 因此,示例性實施例通過提供基于聚類的矩陣重新排序提供在計算裝置中改善矩 陣運算執(zhí)行的機(jī)制?;诩旱闹匦屡判蛱峁┝司仃嚪橇阍鼐o湊排序,甚至在具有近似 無標(biāo)度圖拓?fù)浣Y(jié)構(gòu)的大型矩陣的情況。非零元素的緊湊排序在矩陣運算過程中增加了緩存 的效率,導(dǎo)致矩陣運算的性能地改善。
[0146] 如上所述,應(yīng)當(dāng)理解,示例實施例可以采取完全硬件實施例,完全軟件實施例或包 含硬件和軟件元件的實施例的形式。在一個示例實施例中,說明性實施例的機(jī)制在軟件或 程序代碼中實現(xiàn),其包括但不限于固件,駐留軟件,微代碼等。
[0147] 適合于存儲和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)將包括通過系統(tǒng)總線直接或間接 耦合到存儲器元件的至少一個處理器。所述存儲器元件可以包括在程序代碼實際執(zhí)行期間 利用的本地存儲器,大容量存儲器,和提供至少一些程序代碼的臨時存儲,以便減少在執(zhí)行 期間必須從大容量存儲器檢索的次數(shù)的高速緩存存儲器。
[0148] 輸入/輸出或I/O設(shè)備(包括但不限于鍵盤,顯示器,定點設(shè)備等)可以直接或通過 中間I/O控制器被耦合到系統(tǒng)。網(wǎng)絡(luò)適配器也可以耦合到系統(tǒng)以使數(shù)據(jù)處理系統(tǒng)通過介入 的私有或公共網(wǎng)絡(luò)與其他數(shù)據(jù)處理系統(tǒng)或遠(yuǎn)程打印機(jī)或存儲設(shè)備相耦合。調(diào)制解調(diào)器,電 纜調(diào)制解調(diào)器和以太網(wǎng)卡只是幾個當(dāng)前可用類型的網(wǎng)絡(luò)適配器。
[0149] 已經(jīng)為說明和描述的目的介紹了本發(fā)明的說明書,并且不旨在窮盡或?qū)⒈景l(fā)明限 于所公開的形式。對本領(lǐng)域的普通技術(shù)人員來說,許多修改和變化將是顯而易見的,并且不 脫離所描述實施例的范圍和精神。為了最好地解釋本發(fā)明的原理、實際的應(yīng)用、以及使本領(lǐng) 域的其他技術(shù)人員能夠理解本發(fā)明的具有各種修改的各種實施例作為適合于預(yù)期的特定
【主權(quán)項】
1. 一種在包括處理器和存儲器的數(shù)據(jù)處理系統(tǒng)中用于執(zhí)行矩陣運算的方法,該方法包 括: 配置所述數(shù)據(jù)處理系統(tǒng)的所述處理器以執(zhí)行輸入矩陣的基于集群的矩陣重新排序; 由所述處理器接收該輸入矩陣,其中,該輸入矩陣包括與所述矩陣中的元素相關(guān)聯(lián)的 節(jié)點; 由所述處理器基于與聚類內(nèi)部和聚類之間的其它節(jié)點之間的連接的數(shù)量,將所述節(jié)點 聚類成集群; 由所述處理器通過最小化所述集群的節(jié)點之間的跨集群連接的總長對集群排序,從而 生成經(jīng)重新排序的矩陣; 由所述處理器生成識別該輸入矩陣的節(jié)點在經(jīng)重新排序的矩陣中的新位置的查找表; 在所述數(shù)據(jù)處理系統(tǒng)的存儲器中根據(jù)在所述經(jīng)重新排序的矩陣中節(jié)點的所述新位置 存儲對應(yīng)于所述節(jié)點的數(shù)據(jù);以及 由所述處理器至少通過將對應(yīng)于所述經(jīng)重新排序的矩陣中節(jié)點對應(yīng)的的數(shù)據(jù)加載到 所述數(shù)據(jù)處理系統(tǒng)的高速緩沖存儲器中,基于所述經(jīng)重新排序的矩陣和所述查找表執(zhí)行矩 陣運算,其中當(dāng)執(zhí)行所述矩陣運算時,對應(yīng)于所述節(jié)點的數(shù)據(jù)的所述存儲器根據(jù)在所述經(jīng) 重新排序的矩陣中節(jié)點的所述新位置最小化所述高速緩沖存儲器中的高速緩存未命中。2. 根據(jù)權(quán)利要求1所述的方法,其中所述輸入矩陣的所述節(jié)點表示以下至少之一:信 息、概念或?qū)嶓w,并且其中,所述矩陣的所述元素表示所述節(jié)點之間的連接或關(guān)系,其中非 零元素指示與所述元素相關(guān)聯(lián)的所述節(jié)點之間的連接。3. 根據(jù)權(quán)利要求1所述的方法,其中將節(jié)點聚類成集群進(jìn)一步包括: 識別所述輸入矩陣中節(jié)點的一個或多個團(tuán),其中節(jié)點的團(tuán)僅包括彼此具有連接的節(jié) 點;以及 基于所述其它節(jié)點到已經(jīng)在所述一個團(tuán)中的節(jié)點的連接,通過將所述輸入矩陣的已經(jīng) 不在節(jié)點的團(tuán)中的其它節(jié)點分配到所述一個團(tuán)中,將在所述一個或多個節(jié)點的團(tuán)中的至少 一個節(jié)點的團(tuán)生長成節(jié)點的集群。4. 根據(jù)權(quán)利要求3所述的方法,其中將節(jié)點聚集成集群進(jìn)一步包括: 將在所述一個或多個節(jié)點的團(tuán)中的每個節(jié)點的團(tuán)的大小與最小的團(tuán)的大小相比較,其 中,所述最小的團(tuán)的大小指定了需要在團(tuán)中的節(jié)點的最小數(shù)量,以用于基于所述團(tuán)生長成 集群;以及 在所述一個或多個節(jié)點的團(tuán)中只在大小滿足或者超過所述最小的團(tuán)的大小的節(jié)點的 團(tuán)上執(zhí)行所述至少一個節(jié)點的團(tuán)的生長。5. 根據(jù)權(quán)利要求3所述的方法,其中將所述輸入矩陣的其它節(jié)點分配到所述一個團(tuán)中 包括將在所述一個團(tuán)中的所述其他節(jié)點的每一個分配到各自的團(tuán),所述其它節(jié)點到其各自 的團(tuán)具有最大數(shù)量的連接。6. 如權(quán)利要求3的所述方法,其中生長所述至少一個節(jié)點的團(tuán)包括將所述輸入矩陣的 其它節(jié)點分配到所述至少一個團(tuán)中,直到達(dá)到最大的集群大小。7. 根據(jù)權(quán)利要求6所述的方法,其中所述最大的集群大小與與所述處理器相關(guān)聯(lián)的高 速緩沖存儲器的高速緩沖存儲器的大小成比例。8. 根據(jù)權(quán)利要求3所述的方法,其中對節(jié)點的聚類還包括,對于每個集群以及對于每個 集群的每個節(jié)點: 通過評估所述集群的所述節(jié)點來確定是否該節(jié)點到另一個集群的節(jié)點比到所述集群 內(nèi)的節(jié)點有更多的連接來提煉集群;以及 如果該節(jié)點到其它集群的節(jié)點比到所述集群內(nèi)的節(jié)點有更多的連接,將該節(jié)點迀移到 所述其它集群,并且迀移所述節(jié)點不違反所述其它集群的最大群集大小的限制。9. 根據(jù)權(quán)利要求1的所述的方法,其中通過最小化所述集群的節(jié)點之間的跨集群連接 的總長對集群排序,從而生成經(jīng)重新排序的矩陣還包括:在所述集群的每個的內(nèi)部執(zhí)行節(jié) 點的本地排序,其中,所述在集群的每個的內(nèi)部節(jié)點的本地排序包括:將所述集群的非零元 素移動到更靠近所述集群的子矩陣的對角線,并且將具有到相鄰集群中節(jié)點的連接的節(jié)點 移動到更靠近所述集群的所述子矩陣的邊界。10. 根據(jù)權(quán)利要求1所述的方法,其中,所述矩陣運算是所述矩陣乘以向量以生成輸出 向量,并且其中所述方法進(jìn)一步包括: 基于該矩陣運算執(zhí)行分析操作,基于所述經(jīng)重新排序的矩陣和所述查找表來從所述輸 入矩陣中提取信息;以及 輸出所述分析操作的結(jié)果。11. 一種裝置,包括: 處理器; 耦合至所述處理器的高速緩沖存儲器;和 耦合到所述處理器的存儲器,其中該存儲器包括指令,當(dāng)由所述處理器執(zhí)行所述指令 時,配置所述處理器執(zhí)行: 執(zhí)行輸入矩陣的基于集群的矩陣重新排序; 接收該輸入矩陣,其中,該輸入矩陣包括與所述矩陣中的元素相關(guān)聯(lián)的節(jié)點; 基于與聚類內(nèi)部和聚類之間的其它節(jié)點之間的連接的數(shù)量,將所述節(jié)點聚類成集群; 通過最小化所述集群的節(jié)點之間的跨集群連接的總長對集群排序,從而生成經(jīng)重新排 序的矩陣; 生成識別該輸入矩陣的節(jié)點在經(jīng)重新排序的矩陣中的新位置的查找表; 根據(jù)在所述經(jīng)重新排序的矩陣中節(jié)點的所述新位置存儲對應(yīng)于所述節(jié)點的數(shù)據(jù);以及 至少通過將對應(yīng)于所述經(jīng)重新排序的矩陣中節(jié)點對應(yīng)的的數(shù)據(jù)加載到所述高速緩沖 存儲器中,基于所述經(jīng)重新排序的矩陣和所述查找表執(zhí)行矩陣運算,其中當(dāng)執(zhí)行所述矩陣 運算時,對應(yīng)于所述節(jié)點的數(shù)據(jù)的所述存儲器根據(jù)在所述經(jīng)重新排序的矩陣中節(jié)點的所述 新位置最小化所述高速緩沖存儲器中的高速緩存未命中。12. 根據(jù)權(quán)利要求11所述的裝置,其中所述輸入矩陣的所述節(jié)點表示以下至少之一:信 息、概念或?qū)嶓w,并且其中,所述矩陣的所述元素表示所述節(jié)點之間的連接或關(guān)系,其中非 零元素指示與所述元素相關(guān)聯(lián)的所述節(jié)點之間的連接。13. 根據(jù)權(quán)利要求11所述的裝置,其中將節(jié)點聚類成集群進(jìn)一步包括: 識別所述輸入矩陣中節(jié)點的一個或多個團(tuán),其中節(jié)點的團(tuán)僅包括彼此具有連接的節(jié) 點;以及 基于所述其它節(jié)點到已經(jīng)在所述一個團(tuán)中的節(jié)點的連接,通過將所述輸入矩陣的已經(jīng) 不在節(jié)點的團(tuán)中的其它節(jié)點分配到所述一個團(tuán)中,將在所述一個或多個節(jié)點的團(tuán)中的至少 一個節(jié)點的團(tuán)生長成節(jié)點的集群。14. 根據(jù)權(quán)利要求13所述的裝置,其中將節(jié)點聚集成集群進(jìn)一步包括: 將在所述一個或多個節(jié)點的團(tuán)中的每個節(jié)點的團(tuán)的大小與最小的團(tuán)的大小相比較,其 中,所述最小的團(tuán)的大小指定了需要在團(tuán)中的節(jié)點的最小數(shù)量,以用于基于所述團(tuán)生長成 集群;以及 在所述一個或多個節(jié)點的團(tuán)中只在大小滿足或者超過所述最小的團(tuán)的大小的節(jié)點的 團(tuán)上執(zhí)行所述至少一個節(jié)點的團(tuán)的生長。15. 根據(jù)權(quán)利要求13所述的裝置,其中將所述輸入矩陣的其它節(jié)點分配到所述一個團(tuán) 中包括將在所述一個團(tuán)中的所述其他節(jié)點的每一個分配到各自的團(tuán),所述其它節(jié)點到其各 自的團(tuán)具有最大數(shù)量的連接。16. 如權(quán)利要求13的所述裝置,其中生長所述至少一個節(jié)點的團(tuán)包括將所述輸入矩陣 的其它節(jié)點分配到所述至少一個團(tuán)中,直到達(dá)到最大的集群大小。17. 根據(jù)權(quán)利要求16所述的裝置,其中所述最大的集群大小與與所述處理器相關(guān)聯(lián)的 高速緩沖存儲器的高速緩沖存儲器的大小成比例。18. 根據(jù)權(quán)利要求3所述的裝置,其中對節(jié)點的聚類還包括,對于每個集群以及對于每 個集群的每個節(jié)點: 通過評估所述集群的所述節(jié)點來確定是否該節(jié)點到另一個集群的節(jié)點比到所述集群 內(nèi)的節(jié)點有更多的連接來提煉集群;以及 如果該節(jié)點到其它集群的節(jié)點比到所述集群內(nèi)的節(jié)點有更多的連接,將該節(jié)點迀移到 所述其它集群,并且迀移所述節(jié)點不違反所述其它集群的最大群集大小的限制。19. 根據(jù)權(quán)利要求11的所述的裝置,其中通過最小化所述集群的節(jié)點之間的跨集群連 接的總長對集群排序,從而生成經(jīng)重新排序的矩陣還包括:在所述集群的每個的內(nèi)部執(zhí)行 節(jié)點的本地排序,其中,所述在集群的每個的內(nèi)部節(jié)點的本地排序包括:將所述集群的非零 元素移動到更靠近所述集群的子矩陣的對角線,并且將具有到相鄰集群中節(jié)點的連接的節(jié) 點移動到更靠近所述集群的所述子矩陣的邊界。20. 根據(jù)權(quán)利要求1所述的裝置,其中,所述矩陣運算是所述矩陣乘以向量以生成輸出 向量,并且其中所述裝置進(jìn)一步包括: 基于該矩陣運算執(zhí)行分析操作,基于所述經(jīng)重新排序的矩陣和所述查找表來從所述輸 入矩陣中提取信息;以及 輸出所述分析操作的結(jié)果。21. -種問答(QA)系統(tǒng),包括: 至少一個處理器;和 接口,用于訪問存儲自然語言內(nèi)容的語料庫的一個或多個存儲設(shè)備,由該QA系統(tǒng)處理 該語料庫以生成接收的問題的答案,其中,所述至少一個處理器被配置為實現(xiàn): QA系統(tǒng)管道,其接收輸入問題并通過處理自然語言內(nèi)容的語料庫生成對該輸入問題的 一個或者多個答案; 矩陣排序引擎,耦合到所述QA系統(tǒng)管道,其中所述矩陣排序引擎被配置為: 接收該輸入矩陣,其中,該輸入矩陣包括與所述矩陣中的元素相關(guān)聯(lián)的節(jié)點,并且其中 所述節(jié)點表示在所述自然語言內(nèi)容中發(fā)現(xiàn)的概念,并且所述矩陣的所述元素表示在所述自 然語言內(nèi)容中發(fā)現(xiàn)的所述概念之間的連接; 基于與聚類內(nèi)部和聚類之間的其它節(jié)點之間的連接的數(shù)量,將所述節(jié)點聚類成集群; 通過最小化所述集群的節(jié)點之間的跨集群連接的總長對集群排序,從而生成經(jīng)重新排 序的矩陣; 生成識別該輸入矩陣的節(jié)點在經(jīng)重新排序的矩陣中的新位置的查找表; 在所述存儲器中根據(jù)在所述經(jīng)重新排序的矩陣中節(jié)點的所述新位置存儲對應(yīng)于所述 節(jié)點的數(shù)據(jù);以及 由所述處理器至少通過將對應(yīng)于所述經(jīng)重新排序的矩陣中節(jié)點對應(yīng)的的數(shù)據(jù)加載到 所述數(shù)據(jù)處理系統(tǒng)的高速緩沖存儲器中,基于所述經(jīng)重新排序的矩陣和所述查找表執(zhí)行矩 陣運算,其中當(dāng)執(zhí)行所述矩陣運算時,對應(yīng)于所述節(jié)點的數(shù)據(jù)的所述存儲器根據(jù)在所述經(jīng) 重新排序的矩陣中節(jié)點的所述新位置最小化所述高速緩沖存儲器中的高速緩存未命中。
【文檔編號】G06F17/16GK105843781SQ201610073091
【公開日】2016年8月10日
【申請日】2016年2月2日
【發(fā)明人】E·阿卡爾, R·R·伯達(dá)維卡爾, M·M·弗蘭斯切尼, L·A·拉斯特拉斯-蒙塔諾, R·普利, 錢海峰, L·B·索雷斯
【申請人】國際商業(yè)機(jī)器公司