国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      執(zhí)行大型稀疏矩陣運(yùn)算中用于緩存效率的矩陣排序的方法和系統(tǒng)的制作方法

      文檔序號(hào):10488908閱讀:453來(lái)源:國(guó)知局
      執(zhí)行大型稀疏矩陣運(yùn)算中用于緩存效率的矩陣排序的方法和系統(tǒng)的制作方法
      【專利摘要】本發(fā)明涉及執(zhí)行大型稀疏矩陣運(yùn)算中用于緩存效率的矩陣排序的方法和系統(tǒng)。提供了用于執(zhí)行矩陣運(yùn)算的機(jī)制。數(shù)據(jù)處理系統(tǒng)的處理器被配置為執(zhí)行輸入矩陣的基于集群的矩陣重新排序。接收包括與所述矩陣中的元素相關(guān)聯(lián)的節(jié)點(diǎn)的輸入矩陣?;谂c聚類內(nèi)部和聚類之間的其它節(jié)點(diǎn)之間的連接的數(shù)量,將所述節(jié)點(diǎn)聚類成集群。通過(guò)最小化集群節(jié)點(diǎn)之間的跨集群連接的總長(zhǎng)對(duì)集群排序,從而產(chǎn)生經(jīng)重新排序的矩陣。生成識(shí)別該輸入矩陣的節(jié)點(diǎn)在經(jīng)重新排序的矩陣中的新位置的查找表。基于經(jīng)重新排序的矩陣和所述查找表執(zhí)行矩陣運(yùn)算。
      【專利說(shuō)明】
      執(zhí)行大型稀疏矩陣運(yùn)算中用于緩存效率的矩陣排序的方法和 系統(tǒng)
      技術(shù)領(lǐng)域
      [0001] 本申請(qǐng)涉及一種改進(jìn)的數(shù)據(jù)處理裝置和方法,更具體地涉及一種用于對(duì)在大型稀 疏矩陣運(yùn)算中使用的矩陣的非零元素進(jìn)行排序以提高緩存效率的機(jī)制。
      【背景技術(shù)】
      [0002] 日常生活中用于從數(shù)據(jù)集中獲取信息和知識(shí)的信息技術(shù)和系統(tǒng)占有重要位置。例 如,搜索引擎在大數(shù)據(jù)集上操作以獲取與搜索查詢相關(guān)的信息。問(wèn)答(QA)系統(tǒng),如可從紐約 阿蒙克(Armonk)的國(guó)際商業(yè)機(jī)器(IBM)公司獲得的IBM WatsonTM QA系統(tǒng),就運(yùn)行在文檔或 信息的其他部分上的語(yǔ)料庫(kù)上,以回答自然語(yǔ)言問(wèn)題。此外,許多社交網(wǎng)絡(luò)服務(wù)將他們的用 戶、通信等表現(xiàn)為大數(shù)據(jù)集。許多時(shí)候,在這些大型數(shù)據(jù)集上執(zhí)行知識(shí)提取、推理和各種其 他分析以便于諸如在社交網(wǎng)絡(luò)服務(wù)內(nèi)部回答問(wèn)題、返回搜索結(jié)果、或提供功能的系統(tǒng)的操 作是很重要的。例如,許多社交網(wǎng)絡(luò)服務(wù)幫助個(gè)人識(shí)別他們可能認(rèn)識(shí)或有一定聯(lián)系的其他 注冊(cè)用戶。這種功能需要分析表示社交網(wǎng)絡(luò)服務(wù)用戶的大數(shù)據(jù)集。

      【發(fā)明內(nèi)容】

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