本發(fā)明涉及文本處理技術(shù),并且更具體地,涉及用于快速地確定哪些單詞頻繁地出現(xiàn)在特定的單詞附近的技術(shù)。
背景技術(shù):伴隨著信息處理技術(shù)的擴(kuò)展,大量的不同的文本數(shù)據(jù)現(xiàn)在被分析以便用于在各種領(lǐng)域中的新的發(fā)現(xiàn)。例子包括分析通過網(wǎng)絡(luò)的微博數(shù)據(jù)、在制造商處的產(chǎn)品信息數(shù)據(jù)、在銷售商處的產(chǎn)品銷售數(shù)據(jù)和在醫(yī)療機(jī)構(gòu)處的臨床數(shù)據(jù)。當(dāng)處理文本數(shù)據(jù)時,針對所謂的前k個問題已經(jīng)建議了各種方法,包括本發(fā)明人的那些(專利文獻(xiàn)1和2),該前k個問題是從頻繁出現(xiàn)的單詞中提取前k個。已經(jīng)提出附近搜索技術(shù),其使用倒排索引來確定哪些單詞頻繁地出現(xiàn)在給定關(guān)鍵詞的附近中(專利文獻(xiàn)3到14)。引用列表專利文獻(xiàn)專利文獻(xiàn)1公開專利公開號2007-156739專利文獻(xiàn)2公開專利公開號2009-211263專利文獻(xiàn)3公開專利公開號2010-198425專利文獻(xiàn)4公開專利公開號2008-243074專利文獻(xiàn)5公開專利公開號06-348757專利文獻(xiàn)6公開專利公開號2009-199151專利文獻(xiàn)7公開專利公開號08-287105專利文獻(xiàn)8公開專利公開號07-182354專利文獻(xiàn)9公開專利公開號11-154164專利文獻(xiàn)10公開專利公開號2001-75981專利文獻(xiàn)11公開專利公開號2011-253572專利文獻(xiàn)12公開專利公開號2001-134575專利文獻(xiàn)13公開專利公開號2001-101194專利文獻(xiàn)14公開專利公開號10-334114然而,對于其中大量的句子要被搜索并且其中實(shí)時的分析要被執(zhí)行的情形,期望更快的附近搜索技術(shù)。具體地,期望通過單個計算機(jī)系統(tǒng)的更快附近搜索,因?yàn)樵谟啥鄠€計算機(jī)系統(tǒng)執(zhí)行的并行處理中,差的搜索精確性和操作復(fù)雜度是常見的。
技術(shù)實(shí)現(xiàn)要素:鑒于這些問題,本發(fā)明的目的是提供一種文本處理方法、計算機(jī)和計算機(jī)程序,以便實(shí)現(xiàn)更快的前k個附近搜索。問題的解決方案下文是本發(fā)明的體現(xiàn)為方法的解釋。這里,本發(fā)明是一種由計算機(jī)處理包括多個單詞的多個句子的集合的方法,其中方法包括步驟:層級地標(biāo)識句子集合中的至少一些單詞的出現(xiàn);基于針對每個單詞標(biāo)識的出現(xiàn)的高層級來創(chuàng)建至少一些單詞的每個單詞的第一索引;接收查詢的單詞的輸入;層級地標(biāo)識查詢的單詞在句子的集合中的出現(xiàn);基于針對查詢的單詞標(biāo)識的出現(xiàn)的高層級來創(chuàng)建第二索引;比較第一索引和第二索引以計算針對單詞在查詢的單詞附近出現(xiàn)的次數(shù)的估計值;以及在估計的值等于或大于預(yù)定的次數(shù)的條件下,基于出現(xiàn)的高層級和低層級來計算單詞在查詢的單詞附近出現(xiàn)的次數(shù)的實(shí)際值。這里,第一索引和第二索引可以具有由1/N(N:自然數(shù))壓縮的高層級位集合,并且在一個或多個未壓縮的位是真的條件下,壓縮的位可以是真。另外,通過位計算可以更快地執(zhí)行第一索引和第二索引的比較。在估計值計算方法的一個例子中,可以存儲相應(yīng)的高層級的元素,并且在兩個或多個未壓縮的位是真的條件下,可以基于元素來計算單詞在查詢的單詞附近出現(xiàn)的次數(shù)的估計值。在另一個例子中,可以存儲相應(yīng)的高層級的元素的數(shù)目,并且在兩個或多個未壓縮的位是真的條件下,可以基于元素的數(shù)目來計算單詞在查詢的單詞附近出現(xiàn)的次數(shù)的估計值。更具體地,可以創(chuàng)建具有對應(yīng)于由1/N(N:自然數(shù))壓縮的每個單詞的標(biāo)識的出現(xiàn)的高層級位集合的第三索引,在兩個或多個未壓縮的位是真的條件下,壓縮的位是真;可以通過1/N(N:自然數(shù))創(chuàng)建具有對應(yīng)于由查詢的單詞的標(biāo)識的出現(xiàn)的高層級位集合的第四索引,在兩個或多個未壓縮的位是真的條件下,壓縮的位是真;并且計算估計的值的步驟可以通過位計算來比較第三索引和第四索引。通過這種方式,可以更迅速地計算估計的值。另外,在估計的值并不滿足預(yù)定的次數(shù)的條件下,忽略計算單詞出現(xiàn)次數(shù)的實(shí)際值,并且計算下一單詞出現(xiàn)的次數(shù)的估計值。這可以增加整體操作的速度。另外,方法也可以包括存儲在查詢的單詞附近出現(xiàn)的單詞中K(K:自然數(shù))個臨時最為頻繁出現(xiàn)的單詞的步驟;以及在估計的值等于或大于第K個臨時最為頻繁出現(xiàn)的單詞的條件下,則計算單詞的出現(xiàn)的次數(shù)的實(shí)際值的步驟可以基于出現(xiàn)的高層級和低層級來計算單詞在查詢的單詞附近中出現(xiàn)的次數(shù)的實(shí)際值。這里,方法也包括在估計的單詞的出現(xiàn)次數(shù)等于或大于K個臨時最為頻繁出現(xiàn)的單詞的出現(xiàn)的次數(shù)的條件下,更新第K個臨時最為頻繁出現(xiàn)的單詞的步驟。單詞出現(xiàn)的次數(shù)的估計值優(yōu)選地是等于或大于單詞出現(xiàn)的次數(shù)的實(shí)際值的值。換句話說,單詞出現(xiàn)的次數(shù)的估計值優(yōu)選的是單詞出現(xiàn)次數(shù)的上界值。另外,對于多個句子的集合中的至少一些單詞,可以按出現(xiàn)的頻率的順序來計算單詞出現(xiàn)的次數(shù)的估計值。另外,在至少一些單詞的所有已經(jīng)被完全檢查的條件下,該方法也可以包括輸出K個(K:自然數(shù))臨時最為頻繁出現(xiàn)的單詞作為最終的K個最為頻繁出現(xiàn)的單詞的步驟。這里,至少一些單詞優(yōu)選地包括多個句子的集合中的前L(L:自然數(shù))個最為頻繁出現(xiàn)的單詞。另外,至少一些單詞可以包括多個句子的集合中的詞性的特定部分的單詞。此外,查詢單詞的附近可以提前建立為在查詢的單詞的出現(xiàn)前的范圍X(X:整數(shù))個單詞和出現(xiàn)后的范圍Y(Y:整數(shù))個單詞。注意出現(xiàn)的高層級可以是指定多個句子中的一個句子的句子ID,并且出現(xiàn)的低層級可以是指定一個句子的位置的位置ID。當(dāng)本發(fā)明具體化為計算機(jī)程序或計算機(jī)系統(tǒng)時,其具有如本發(fā)明體現(xiàn)為方法的實(shí)質(zhì)上相同的技術(shù)特性。本發(fā)明的效果本發(fā)明實(shí)現(xiàn)更快的前k個附近搜索。附圖說明圖1是示出根據(jù)本發(fā)明的一個實(shí)施例的計算機(jī)1的硬件配置的框圖;圖2是用于解釋計算機(jī)1的功能模塊的框圖;圖3是用于解釋由計算機(jī)1所執(zhí)行的處理的流程圖;圖4是用于更為詳細(xì)地解釋圖3的步驟S1中的處理的流程圖;圖5是用于示意性解釋步驟S11的示圖;圖6是用于示意性地解釋步驟S121和步驟S122的示圖;圖7是用于解釋1/N壓縮和估計的值計算的示意圖;圖8是用于更為詳細(xì)地解釋圖3的步驟S3中的處理的流程圖;圖9是用于解釋臨時前k個的列表的概念圖;圖10是用于解釋創(chuàng)建搜索壓縮索引的概念圖;圖11是用于解釋實(shí)施例的修改中的1/N壓縮和估計的值計算的示意圖。具體實(shí)施例實(shí)施例圖1是示出根據(jù)本發(fā)明的一個實(shí)施例的計算機(jī)1的硬件配置的框圖。計算機(jī)1的硬件配置包括(低速和高速)總線10以及中央處理單元(CPU)11、隨機(jī)訪問存儲器(RAM:存儲裝置)12、只讀存儲器(ROM:存儲裝置)13、硬盤驅(qū)動器(HDD:存儲裝置)14、通信接口15以及連接到總線10的輸入/輸出接口16。鼠標(biāo)(定點(diǎn)裝置)17、平板顯示器(顯示裝置)18和鍵盤19連接到輸入/輸出接口16。在該解釋中,計算機(jī)1具有典型的個人計算機(jī)架構(gòu)。然而,CPU11、HDD14和其他組件可以被多路復(fù)用以實(shí)現(xiàn)更高的數(shù)據(jù)吞吐量和可獲得性。替代于臺式機(jī),計算機(jī)系統(tǒng)可以任意其他類型的個人計算機(jī),例如膝上型或平板計算機(jī)。計算機(jī)1的軟件配置包括用于提供基本功能的操作系統(tǒng)(OS)、使用OS功能的應(yīng)用軟件以及用于輸入/輸出裝置的驅(qū)動軟件。每種類型的軟件以各種類型的數(shù)據(jù)加載進(jìn)RAM12,并且由CPU11來執(zhí)行。整體上,計算機(jī)1包括在圖2中示出的功能模塊并且執(zhí)行圖3中示出的處理。圖2是用于解釋計算機(jī)1的功能模塊的框圖。計算機(jī)1包括指定模塊(指定裝置)101、索引創(chuàng)建模塊(創(chuàng)建裝置)102、輸入模塊(輸入裝置)100、存儲模塊(存儲裝置)103、計算模塊(計算裝置)104、更新模塊(更新裝置)105以及輸出模塊(輸出裝置)106。當(dāng)參考圖3來解釋處理時,這些功能將在下面更為詳細(xì)地解釋。圖3是用于解釋由計算機(jī)1所執(zhí)行的處理的流程圖。首先,創(chuàng)建單詞壓縮文件(第一索引)(步驟S1)。步驟S1中的處理可以以批處理來執(zhí)行。下面,用戶經(jīng)由鍵盤19和輸入模塊100輸入待被搜索的關(guān)鍵詞wt(步驟S2)。當(dāng)已經(jīng)輸入關(guān)鍵詞wt時,經(jīng)由輸出模塊106和顯示器18向用戶輸出(顯示)在關(guān)鍵詞的附近頻繁出現(xiàn)的前k個單詞連同每個單詞出現(xiàn)的次數(shù)。步驟S3中的處理應(yīng)該特別地快以便執(zhí)行實(shí)時處理。下面是參考圖4到圖11更為詳細(xì)的解釋由計算機(jī)1在步驟S1和S3中執(zhí)行的處理。圖4是用于更為詳細(xì)地解釋在圖3的步驟S1中執(zhí)行的處理的流程圖。首先,指定模塊101搜索存儲在HDD14中的多個句子的集合(例如,500,000個句子),以這樣的格式來層級地指定句子集合中的每個單詞的出現(xiàn),該格式包括句子ID(高層級)和句子內(nèi)的位置(低層級),并且每個單詞的出現(xiàn)的列表按出現(xiàn)的次數(shù)的降序排列(更精確地,按句子ID的數(shù)目的降序順序)(步驟S11)。圖5是用于示意性地解釋步驟S11的示圖。由句子ID:0-M指定的句子包括多個單詞。在這些單詞中最為頻繁出現(xiàn)的單詞是w1,其出現(xiàn)被列為(1,15)、(3,2)等,這使用了(句子ID,句子內(nèi)位置)的格式。例如,可以從該列表了解到單詞w1作為由句子ID:1所指定的句子中的第15個單詞出現(xiàn)。類似地,在單詞w1后下一個最為頻繁出現(xiàn)的單詞w2進(jìn)行排序,對單詞w2后下一個最為頻繁出現(xiàn)的單詞w3進(jìn)行排序,并且以此類推,直到單詞wn。本發(fā)明可以應(yīng)用于除各種類型的句子外的目標(biāo)。例子包括通過網(wǎng)絡(luò)的微博數(shù)據(jù)、在制造商處的產(chǎn)品信息數(shù)據(jù)、在銷售商處的產(chǎn)品銷售數(shù)據(jù)以及在醫(yī)療機(jī)構(gòu)處的臨床數(shù)據(jù)。其也可以根據(jù)其中文本的單元被設(shè)置為目標(biāo)的數(shù)據(jù)來進(jìn)行設(shè)置。例如,當(dāng)臨床數(shù)據(jù)是目標(biāo)時,每個患者的病歷可以作為高層級來建立,并且檢查數(shù)據(jù)和時間中的單詞的出現(xiàn)可以作為低層級來建立。另外,包括在多個句子的集合中的單詞的一些或所有單詞可以作為目標(biāo)來建立。這里,優(yōu)選的是將多個句子的集合中至少最為頻繁出現(xiàn)的單詞建立為目標(biāo)。同樣,取決于數(shù)據(jù)使用模式和用戶偏好,單詞的詞性的部分可以作為目標(biāo)來建立。例如,名詞僅可以設(shè)置為目標(biāo),或小品詞可以從目標(biāo)排除。下一步,由索引創(chuàng)建模塊102基于如圖5所示排序的列表來創(chuàng)建單詞壓縮索引(步驟S12)。在下面的解釋中,所使用的例子是最為頻繁出現(xiàn)的單詞w1。然而,處理對于其他的單詞(w2-wn)也是相同的。圖6是用于示意性地解釋步驟S121和步驟S122的示圖。索引創(chuàng)建模塊101放棄來自于針對單詞w1的出現(xiàn)列表[列表w1:(1,15),(3,2),等]的句子位置,并且創(chuàng)建僅包括句子ID的列表[列表w1’:1,3,3,5,等](步驟S121)。另外,索引創(chuàng)建模塊101從列表w1’創(chuàng)建列表,其去除冗余的句子ID(這里,“3,3”被減成“3”),以創(chuàng)建列表w1”:1,3,5等(步驟S122)。圖7是用于解釋1/N壓縮的示意圖。索引創(chuàng)建模塊102壓縮句子ID位集合到1/N,以創(chuàng)建單詞壓縮索引W1(步驟S123)。換句話說,列表w1”:1,3,5,8,10,11等以1/N來壓縮(這里,N=4)。在一個或多個未壓縮位是真的條件下,壓縮位是真,并且在兩個或多個未壓縮位是真的條件下,相應(yīng)句子ID的元素被存儲。這里,句子ID:1和3、以及8和10和11被存儲。在該解釋中,使用最為頻繁出現(xiàn)的單詞w1作為例子,單詞壓縮索引W1被創(chuàng)建。對于其他單詞(w2-wn),以類似的方式來創(chuàng)建單詞壓縮索引W2-Wn。圖8是用于更為詳細(xì)地解釋圖3的步驟S3中執(zhí)行的處理的流程圖。首先,更新模塊105初始化臨時前k個的列表(步驟S31)。圖9是用于解釋該臨時前k個的列表的概念圖。關(guān)鍵詞wt附近前k個頻繁出現(xiàn)的單詞以臨時前k個格式(單詞,出現(xiàn)的數(shù)目)存儲。換句話說,建立關(guān)系#top-k≤…≤#top-2≤#top-1。這里,自然數(shù)k是預(yù)定的或可以由用戶基于個體來設(shè)置。另外,搜索關(guān)鍵詞wt的附近被建立為關(guān)鍵詞wt的前X個單詞(X:整數(shù))以及關(guān)鍵詞wt后的Y個單詞(Y:整數(shù))的范圍。這可以提前建立或可以由用戶指示。X和Y的任意一個可以設(shè)置為零或可以設(shè)置為負(fù)整數(shù)。臨時前k個的列表可以由存儲模塊103存儲在半導(dǎo)體存儲器中,用于更快地訪問。下面,指定模塊101和索引創(chuàng)建模塊102創(chuàng)建搜索壓縮索引(第二索引)(步驟S32)。圖10是用于解釋搜索壓縮索引的創(chuàng)建的概念圖。首先,指定模塊101搜索存儲在HDD14中的多個句子的集合,以(句子ID、句子內(nèi)位置)的格式層級地指定句子集合中的搜索關(guān)鍵詞wt的出現(xiàn),并且創(chuàng)建搜索關(guān)鍵詞wt的出現(xiàn)的列表wt。這里,搜索關(guān)鍵詞wt的出現(xiàn)被列為(2,12)、(8,5)等。換句話說,從列表清楚的看到搜索關(guān)鍵詞wt出現(xiàn)在由句子ID:2所指定的句子中的第12個單詞。下一步,索引創(chuàng)建模塊101丟棄來自于搜索關(guān)鍵詞wt出現(xiàn)的列表(2,12)、(8,5)等的句子位置,并且僅創(chuàng)建wt’:2、8、8、10等的句子ID的列表。另外,索引創(chuàng)建模塊101從列表wt’創(chuàng)建列表,其消除冗余的句子ID(這里,“8,8”被減為“8”),以創(chuàng)建列表wt”2、8、10等。圖7是用于解釋1/N壓縮的示意圖。索引創(chuàng)建模塊101將列表wt”:2、8、10等壓縮到1/N(這里,N=4)。在一個或多個未壓縮位是真的條件下,壓縮位是真,并且在兩個或多個未壓縮位是真的條件下,相應(yīng)句子ID的元素被存儲。這里,句子ID:8和10被存儲。按降序(w1->wn)在每個單詞w1-wn上執(zhí)行下面的處理。首先,計算模塊104確定單詞出現(xiàn)的次數(shù)是否小于在臨時前k個的列表上的第k個(最低)單詞附近出現(xiàn)的次數(shù)(參見圖9)(步驟S34)。如果是,處理前進(jìn)到步驟S39,并且輸出模塊106輸出作為最終結(jié)果的臨時前k個的列表。如果否,則處理前進(jìn)到步驟S35,并且壓縮索引W和搜索壓縮索引Wt被比較以確定出現(xiàn)的附近次數(shù)的估計值。該處理將在下面參考圖7來解釋。壓縮索引W和搜索壓縮索引Wt可以被存儲在半導(dǎo)體存儲器中,以便更快地訪問。下面,確定在步驟S35中獲得的估計值是否小于(更具體地,等于或小于)臨時前k個的列表上的第k個(最低)單詞附近出現(xiàn)的次數(shù)(步驟S36)。如果是,則處理前進(jìn)到步驟S38,并且確定是否有另一個單詞。如果是,則處理從步驟S34重復(fù)。如果否,則輸出模塊106輸出作為最終結(jié)果的臨時前k個的列表。如果步驟S36中的確定是否,則處理前進(jìn)到步驟S37,并且計算模塊104使用單詞的出現(xiàn)和搜索關(guān)鍵詞的出現(xiàn)來執(zhí)行更為精確的附近確定。結(jié)果,當(dāng)單詞附近出現(xiàn)的次數(shù)大于臨時前k個的列表中的第k個(最低)單詞附近出現(xiàn)的次數(shù)時,更新模塊105更新臨時前k個的列表。計算模塊104以下面的方式來確定附近出現(xiàn)的次數(shù)的估計值(參見圖7)。首先,比較壓縮索引W1和搜索壓縮索引Wt,并且計算兩個索引的交集的大小。這里,因?yàn)閮蓚€位置第0個位和第2個位是真,因此計算模塊104存儲“2”。因?yàn)樵撚嬎闶俏挥嬎?,因此計算很快。另外,計算模塊104將根據(jù)壓縮索引W1的第2位存儲的句子ID:8、10、11和根據(jù)搜索壓縮索引Wt的第2位存儲的句子ID:8、10進(jìn)行比較,從二者排除第一條目“8”,并且存儲“1”,作為句子ID:10、11和句子ID:10的交集的大小(匹配數(shù)目)。在另一個例子中,計算模塊104比較根據(jù)壓縮索引W1的第2位存儲的句子ID:8、10、11和根據(jù)搜索壓縮索引Wt的第2位存儲的句子ID:8、10,當(dāng)有一個或更少的共同元素時,設(shè)置零,并且當(dāng)有兩個或更多的共同元素時,則從共同元素的數(shù)目減去一。在該例子中,存儲“1”。在兩種情形中,計算模塊104獲得2+1=3作為估計的值。修改當(dāng)在如上所述的實(shí)施例中計算針對附近出現(xiàn)的次數(shù)的估計值時,位計算用于快速地獲得估計的值。下文是修改的解釋,其中位計算被廣泛地采用。圖11是用于解釋該修改的概念圖。配置與上述的實(shí)施例相同,相同的參考標(biāo)記被應(yīng)用于組件,并且這些組件的進(jìn)一步解釋已經(jīng)被省略。索引創(chuàng)建模塊101通過1/N(這里N=4)來壓縮列表w1”:1,3,5等。在兩個或多個未壓縮位是真的條件下壓縮位是真,并且創(chuàng)建壓縮索引W1’(第三索引)。另外,存儲相應(yīng)句子ID上的元素的數(shù)目。這里,“2”被存儲,其是對應(yīng)于第0個位的句子ID中的元素1和3的數(shù)目。另外,“3”被存儲,其是對應(yīng)于第2個位的句子ID中的元素:8、10、11的數(shù)目。類似地,索引創(chuàng)建模塊101通過1/N(這里,N=4)壓縮列表wt”:2、8、10等。在兩個或多個未壓縮位是真的條件下,壓縮位是真,并且創(chuàng)建壓縮索引Wt’。另外,存儲在相應(yīng)的句子ID上的元素的數(shù)目。這里,“2”被存儲,其是對應(yīng)于第0位的句子ID中的元素:8,10的數(shù)目。壓縮索引W1’和/或搜索壓縮索引Wt’存儲在半導(dǎo)體存儲器中用于更快地訪問。計算模塊104以下面的方式來確定附近出現(xiàn)的數(shù)目的估計值(參見圖11)。首先,比較壓縮索引W1和搜索壓縮索引Wt,并且計算兩個索引的交集的大小。這里,因?yàn)閮蓚€位置,第0個位和第2個位是真,則計算模塊104存儲“2”。因?yàn)樵撚嬎闶俏挥嬎?,計算很快。另外,計算模塊104比較位壓縮索引W1’和搜索壓縮索引Wt’以計算兩個索引的交集。換句話說,根據(jù)交集的真位,值被計算,其中W1’的句子ID的存儲的數(shù)目和Wt’的句子ID的數(shù)目的較小者被添加到交集的每個真位。因?yàn)樵撚嬎闶俏挥嬎?,計算是很快的。這里,因?yàn)橐粋€位置,第2位是真的,計算模塊104比較3(其是根據(jù)壓縮索引W1’的第2位排序的句子ID(8、10、11)的數(shù)目)和2(其是根據(jù)搜索壓縮索引Wt’的第2位存儲的句子ID(8、10)的數(shù)目),并且從2(兩個數(shù)目中的較小一個)中減去1,以獲得“1”。結(jié)果是,計算模塊104獲得2+1=3作為估計的值。上面詳細(xì)地解釋了實(shí)施例(包括修改)。然而,顯而易見的是本發(fā)明的技術(shù)范圍不應(yīng)該被解釋為限于該實(shí)施例。參考標(biāo)記列表1:個人計算機(jī)(計算機(jī)系統(tǒng))11:CPU(中央處理單元)12:RAM(隨機(jī)訪問存儲器:存儲裝置)13:ROM(只讀存儲器:存儲裝置)14:HDD(硬盤驅(qū)動器:存儲裝置)17:鼠標(biāo)(定點(diǎn)裝置)18:平板顯示器(顯示裝置)100:輸入模塊(輸入裝置)101:指定模塊(指定裝置)102:索引創(chuàng)建模塊(創(chuàng)建裝置)103:存儲模塊(存儲裝置)104:計算模塊(計算裝置)105:更新模塊(更新裝置)106:輸出模塊(輸出裝置)