專利名稱:基于σ2鄰接矩陣的全文數(shù)據(jù)庫表達(dá)和操作方法
計(jì)算機(jī)技術(shù)的發(fā)展促使人類社會(huì)進(jìn)入一個(gè)嶄新的時(shí)代—信息時(shí)代。信息時(shí)代最主要的特征就是信息呈指數(shù)增長的態(tài)勢。據(jù)統(tǒng)計(jì),過去30年來信息增長總量已經(jīng)超過了在此之前歷史上積累的信息總和。有人預(yù)測,大約再經(jīng)過5年,即到2003年,信息總量還會(huì)翻一翻。面對如此龐大且不斷膨脹的信息海洋,如何全面、準(zhǔn)確、高效地獲取所需的信息成為信息科學(xué)領(lǐng)域一個(gè)非常緊迫且具有挑戰(zhàn)性的研究課題。查詢信息首先必須能夠?qū)π畔⑦M(jìn)行描述和表達(dá),并提供有效的信息查詢操作方法,這就是信息模型問題。
現(xiàn)有信息主要表現(xiàn)為數(shù)據(jù)和文字兩種形式。其中,數(shù)據(jù)總量只占到30%以下,而文字信息卻在70%以上。對于數(shù)據(jù)信息而言,許多數(shù)據(jù)模型已經(jīng)得到全面、深入的研究。其中若干模型,象網(wǎng)狀模型、層次模型和關(guān)系模型,已經(jīng)具備了比較深厚的理論基礎(chǔ),并得到廣泛應(yīng)用。其它的新型數(shù)據(jù)模型,如面向?qū)ο竽P?,也受到廣泛的研究。文本信息,或稱之全文(Full Text)信息,由于其海量性、無結(jié)構(gòu)性和復(fù)雜性,至今尚未找到一種普遍接受的數(shù)據(jù)模型。而近年來Internet技術(shù)的迅猛發(fā)展和日益普及,加之Web信息的指數(shù)增長和電子文檔的大量發(fā)行,給全文數(shù)據(jù)庫模型的研究提出更為緊迫的現(xiàn)實(shí)需求。
數(shù)據(jù)模型是數(shù)據(jù)表示形式及其相關(guān)操作的總稱。數(shù)據(jù)表示形式恰當(dāng)與否直接影響到數(shù)據(jù)操作能力和操作性能?,F(xiàn)有幾種典型全文數(shù)據(jù)庫模型實(shí)例也充分說明了這一點(diǎn)。
全文數(shù)據(jù)庫模型中最常用的是倒排文件(Inverted File)(W.B.Frakes,R.B.Yates.Information Retrieval:Data Structures & Algorithms.Prentice Hall PTR.Upper SaddleRiver,New Jersey.1992.)。倒排文件本質(zhì)上是一種基于關(guān)系模型的數(shù)據(jù)表。倒排文件中的數(shù)據(jù)記錄具有如下形式{li;pi1,…,pin}。
這里,li為文字符或詞組,Pi1…,Pin為lj在文本庫中相應(yīng)的位置。這種模型主要缺點(diǎn)是1)當(dāng)li為文字符時(shí),索引空間耗費(fèi)大于文本本身;2)當(dāng)li為詞組時(shí),難于表達(dá)復(fù)雜文本信息的查詢。在進(jìn)行諸如前綴檢索、正則表達(dá)式(regular expressior)檢索、最長重復(fù)串檢索和高頻字串檢索等時(shí),使用該模型都會(huì)遇到較大的困難,或者說檢索效率很低。
另一種較為新穎的全文數(shù)據(jù)庫模型是PAT樹模型。1983年Gonnet首先提出這種模型(G.Gonnet.Un-structured Data Bases or Very Efficient Text Searching.In ACM PODS.Vol.2,pp117-24,Atlanta,Ga.,1983);后來,Gonnet(G.Gonnet.PAT3.1:An Efficient TextSearching System.User’s Manual.UW Center for the New OED.University ofWaterloo.1987)、Manber和Myers(U.Manber,and G.Myers.Suffix arrays:A New Methodfor Online String Searches.in 1stACM-SIAM Symposium on Discrete Algorithms,pp.319-27,San Francisco.1990)分別于1987年和1990獨(dú)立發(fā)現(xiàn)了PAT數(shù)組模型。Gonnet等利用該模型,并結(jié)合“牛津英文詞典”計(jì)算機(jī)化項(xiàng)目,實(shí)現(xiàn)了一個(gè)具有自主版權(quán)的快速文本查詢系統(tǒng)PATTM(H.Fawcett.A Text Searching System:PAT3.3,User’s Guide.Centerfor the New Oxford English Dictionary.University of Waterloo.1989)。而Manber和Myers則將PAT數(shù)組模型用于搜索超大規(guī)模生物基因數(shù)據(jù)庫。PAT樹和PAT數(shù)組模型均使用半無限串序列來表示文本,每一個(gè)半無限串(Semi-string)以開始字符的位置來標(biāo)識(shí)。PAT樹是一種壓縮的trie樹,樹的每一外部節(jié)點(diǎn)代表一個(gè)半無限串;PAT數(shù)組是PAT樹的一種約簡形式,它將PAT樹的內(nèi)部節(jié)點(diǎn)全部拋棄掉,用一數(shù)組存儲(chǔ)排序后的半無限串。PAT樹和PAT數(shù)組的共同缺點(diǎn)是需要較高的數(shù)據(jù)庫空間。PAT樹至少需要3N存儲(chǔ)空間,而PAT數(shù)組所需的存儲(chǔ)空間至少為N(N為文本的長度)。但在查詢效率上,PAT樹優(yōu)于PAT數(shù)組。
為了對全文數(shù)據(jù)庫模型進(jìn)行比較全面的功能與性能評(píng)估,有必要提出一套評(píng)價(jià)指標(biāo)。根據(jù)我們多年來從事信息檢索系統(tǒng)研究與開發(fā)的經(jīng)驗(yàn)積累和體會(huì),我們認(rèn)為在對全文數(shù)據(jù)庫模型進(jìn)行比較全面、客觀的評(píng)估時(shí),考察如下幾個(gè)方面的要素是非常必要的;1)領(lǐng)域獨(dú)立性。正如傳統(tǒng)數(shù)據(jù)庫是各行各業(yè)應(yīng)用的基礎(chǔ),全文數(shù)據(jù)庫也應(yīng)是各不同相關(guān)行業(yè)的應(yīng)用基礎(chǔ),因此全文數(shù)據(jù)庫模型應(yīng)與領(lǐng)域無關(guān)。不然的話,就必須引入過多的領(lǐng)域特性,從而影響全文數(shù)據(jù)庫的一般性和通用性。
2)時(shí)間無關(guān)性。全文數(shù)據(jù)庫作為文字信息的管理系統(tǒng),應(yīng)可用于管理在不同歷史時(shí)期,而不受不同歷史時(shí)期的語言表達(dá)風(fēng)格和特色的影響。
3)查詢完備性。即要求文本庫中所有形式上的信息均能被查詢。當(dāng)然,這里不要求語義上的完備性。
4)空間復(fù)雜性。由于全文數(shù)據(jù)的海量性,模型中任何能夠減少數(shù)據(jù)庫空間消耗的機(jī)制均可導(dǎo)致不可估量的實(shí)用效果。
5)查詢實(shí)時(shí)性。對用戶的查詢作出實(shí)時(shí)響應(yīng)是數(shù)據(jù)庫系統(tǒng)的一個(gè)共同要求,它直接關(guān)系到數(shù)據(jù)庫的實(shí)用性。
6)可操作性。對于各種常用的查詢方式,具有方便、高效的操作可行性。
7)可維護(hù)性。全文數(shù)據(jù)庫文本發(fā)生變更后,能夠方便進(jìn)行數(shù)據(jù)庫索引結(jié)構(gòu)的更新。
8)可擴(kuò)展性。全文數(shù)據(jù)庫的各項(xiàng)功能/性能指標(biāo)不會(huì)因數(shù)據(jù)量的劇增而明顯下降。
根據(jù)上述8項(xiàng)針對全文數(shù)據(jù)庫模型的性能考核要求,很明顯,現(xiàn)有的幾種全文數(shù)據(jù)庫模型都存在各自的局限性。全文數(shù)據(jù)庫模型按索引方式可以大致分為兩大類,即按字索引、按詞索引。按詞索引的優(yōu)點(diǎn)是空間復(fù)雜性小,查詢時(shí)間快,但領(lǐng)域相關(guān)性強(qiáng),時(shí)間相關(guān)性強(qiáng),查詢不完備,操作能力弱。其余模型原則上均屬于按字索引模型,其優(yōu)點(diǎn)是領(lǐng)域獨(dú)立性強(qiáng),時(shí)間無關(guān)性強(qiáng),查詢完備,操作能力強(qiáng),但最大的缺陷是空間復(fù)雜度高,一般均大于文本庫本身的大小,這對于海量信息的全文文本來說,顯然是致命的弱點(diǎn)。
本發(fā)明的目的在于提出一種能避免現(xiàn)有全文數(shù)據(jù)庫模型局限性的具有領(lǐng)域獨(dú)立性、時(shí)間無關(guān)性、較強(qiáng)的查詢完備性、較低的空間復(fù)雜性、快速的查詢響應(yīng)能力和良好的可操作性、可維護(hù)性以及可擴(kuò)展性的新型全文數(shù)據(jù)庫的表達(dá)與操作方法。
首先介紹本發(fā)明的有關(guān)概念和設(shè)定。
我們將構(gòu)成文本的基本符號(hào)單元的集合記作∑。|∑|表示基本符號(hào)單元集合的大小。若|∑|是有界的,則稱∑是有限的,否則∑是無限的。若∑中每一基本符號(hào)單元l,均有一個(gè)相應(yīng)的整數(shù)標(biāo)識(shí)i,i表示l在∑中的位置編碼,這時(shí),記l為li。對于∑中基本符號(hào)單元li,lj,若i<j,表示在∑中l(wèi)i處于lj之前。這時(shí),稱基本符號(hào)單元l在∑中是有序的。具體到純粹的中文環(huán)境下,∑相當(dāng)于漢字庫,包含中文文字和標(biāo)點(diǎn)符號(hào)以及各種特殊符號(hào)等。這時(shí)的∑是一個(gè)有限集合,文字的內(nèi)碼相當(dāng)于文字符的位置編碼。
由∑中的元素構(gòu)成的有限長度的符號(hào)序列稱為句串(String)。特別地,不包含任何符號(hào)的句串稱為空串,記作ε。若X和Y是句串,則XY稱為X和Y的連接。如X、Y、Z和W均為句串,且W=XYZ,則稱X為W的前綴,而稱Z為W的后綴。句串中的任何連續(xù)段稱為該句串的子句串。前面,X、Y和Z均為W的子句串,記作XW,YW和ZW。句串X中所有基本符號(hào)單元出現(xiàn)的次數(shù)的總和稱為句串X的長度,記作|X|。定義1文本庫一個(gè)文本庫TB是由多個(gè)獨(dú)立的文本(Documents)構(gòu)成的;而每一文本則是多個(gè)句串連接起來構(gòu)成的句串序列。如果人為地忽略文本間的空間間隔,而將整文本庫看作一個(gè)文本,則文本庫TB就是一個(gè)句串的序列s1s2…sn。其中si為句串,且有si=li1…lik,lij為基本文字符號(hào)單元(1≤j≤k,k=|si|)。
一般地,可以認(rèn)為文本中的標(biāo)點(diǎn)符號(hào)自然地將文本分割為一個(gè)個(gè)的句串。在講到句串的無環(huán)化時(shí),還將引入一個(gè)人為的句串消環(huán)符。實(shí)例1文本庫TB1我們的國家,我們的人民,你們的國家,你們的人民,他們的國家,他們的人民。
這是一個(gè)包含6個(gè)句串的文本庫,各句串間由“,”自然隔開。定義2 句串有向圖對于任意句串S=l1l2…lk(1≤i、j≤k。當(dāng)i≠j,li和lj可以相同),存在一個(gè)對應(yīng)的有向圖SG=<Vs,Es>。其中,Vs是以S中的不同基本文字符號(hào)單元為節(jié)點(diǎn)的節(jié)點(diǎn)集合;Es是以S中任意兩個(gè)鄰接文字符號(hào)為起始點(diǎn)的有向邊集合,且每條有向邊的方向由前面的文字符號(hào)指向后面的文字符。我們稱這樣的有向圖為句串有向圖。
一般情況下,句串有向圖為有環(huán)的多重有向圖。這是因?yàn)楫?dāng)句串中包含相同的基本字符單元,因而有如下情況出現(xiàn)1)某一基本字符單元在句串中連續(xù)出現(xiàn)多次,或者某一基本字符單元在句串中不同位置多次出現(xiàn),則產(chǎn)生環(huán);2)兩個(gè)不同的基本字符單元連續(xù)出現(xiàn)在句串中不同位置,則產(chǎn)生多重有向邊。因此,一般情況下,句串有向圖為有環(huán)的多重有向圖。實(shí)例2 句串S1家事國事天下事事事關(guān)心。
圖1為該句串S1對應(yīng)的有向圖。顯然,這是一個(gè)有環(huán)有向圖。定義3 無環(huán)句串句串有向圖中不存在環(huán)的句串稱為無環(huán)句串。換而言之,無環(huán)句串就是任何基本字符單元在句串中至多出現(xiàn)一次的句串。
在后面將要提出的新文本數(shù)據(jù)庫模型中,為了處理的方便,我們要求文本庫中的句串皆為無環(huán)句串。很顯然,無環(huán)句串有向圖為只包含一條單一路的有向圖。定義4 句串的無環(huán)化將一有環(huán)的句串分解為具有最少數(shù)目的無環(huán)子句串的過程稱為句串無環(huán)化。操作上,句串的無環(huán)化就是將一個(gè)有環(huán)句串截為數(shù)目盡可能少的子串,使得每一子串中,同一基本字符單元至多出現(xiàn)一次。實(shí)例3 文本庫TB2家事國事天下事事事關(guān)心,風(fēng)聲雨聲讀書聲聲聲入耳。
無環(huán)化后,轉(zhuǎn)換為家事 國事 天下 事 事事關(guān)心,風(fēng)聲 雨聲 讀書聲 聲 聲入耳。
這里我們使用空格符來分割有環(huán)句串,這并不表示非使用空格符來分割有環(huán)句串不可。但是,總可以假定有一個(gè)分隔符存在,用于有環(huán)句串的分割。我們且抽象地稱之為消環(huán)符。我們將用于分隔句串的標(biāo)點(diǎn)符號(hào)和消環(huán)符統(tǒng)稱為句串分隔符。定義5 無環(huán)句串文本庫若文本庫中所有句串均為無環(huán)句串,則稱此文本庫為無環(huán)句串文本庫。
實(shí)際上,任何文本數(shù)據(jù)庫都可轉(zhuǎn)換為無環(huán)句串文本庫。因?yàn)椋鶕?jù)定義1,文本數(shù)據(jù)庫是句串的序列;而由定義4,任何有環(huán)句串均可轉(zhuǎn)換無環(huán)句串,所以任何文本數(shù)據(jù)庫都可轉(zhuǎn)換為無環(huán)句串文本庫。
在不作特別聲明時(shí),下面一概認(rèn)為文本庫即為無環(huán)句串文本庫。定義6 文本庫有向圖對于文本庫TB,存在一有向圖TBG=<V,E>。其中,V是以構(gòu)成文本庫的所有基本文字符號(hào)單元為節(jié)點(diǎn)的節(jié)點(diǎn)集合;E是以文本中所有兩個(gè)鄰接文字符號(hào)單元為邊的集合,且每條邊的方向由前面的文字符號(hào)指向后面的文字符。在每條邊上,標(biāo)上該邊對應(yīng)的文字符有序?qū)λ诘木浯臉?biāo)號(hào)。這里,多重有向邊被壓縮為單重有向邊,而在有向邊上標(biāo)注對應(yīng)文字符有序?qū)λ诘乃袩o環(huán)句串標(biāo)號(hào)的集合。標(biāo)點(diǎn)符號(hào)和消環(huán)符在處理時(shí)有所不同。它們也作為節(jié)點(diǎn)存在。原則上,標(biāo)點(diǎn)符號(hào)和消環(huán)符屬于前一句串。標(biāo)點(diǎn)符號(hào)和消環(huán)符與它的前一個(gè)文字符構(gòu)成的有向邊標(biāo)前一句串的標(biāo)號(hào);而標(biāo)點(diǎn)符號(hào)和消環(huán)符與后一句串的第一個(gè)文字符構(gòu)成的有向邊標(biāo)后一句串的標(biāo)號(hào)。這樣有向圖我們稱為文本庫有向圖。實(shí)例4 以實(shí)例1中的文本庫TB1為例建立文本有向圖。
文本庫TB1中包含6個(gè)無環(huán)句串,各句串間由“,”自然隔開。我們將這6個(gè)句串按先后順序編號(hào)為1~6。其中,包含的基本文字符號(hào)單元有{我,你,他,們,人,民,國,家,“,”,“?!眪。以這些基本文字符號(hào)單元為節(jié)點(diǎn)集,構(gòu)成的有向圖如圖2所示。特別地,在有向圖中,有向邊<家,“,”>、<民,“,”>、<“,”,我>、<“,”,你>、<“,”,他>和<民,“。”>分別標(biāo)注為{1,3,5}、{2,4}、{2}、{3,4}、{5,6}和{6}。定義7 文本庫的∑2鄰接矩陣A由于文本庫對應(yīng)于一個(gè)有向圖,而有向圖又存在相應(yīng)的鄰接矩陣。所以,文本庫也有一個(gè)相應(yīng)的鄰接矩陣存在??紤]到文本庫有向圖中的節(jié)點(diǎn)為∑中元素,因此將這里的鄰接矩陣稱為∑2鄰接矩陣。與通常意義上的鄰接矩陣不同。本發(fā)明提出的文本庫∑2鄰接矩陣A中每一矩陣元素不是簡單的0/1值,而是一個(gè)集合,也就是文本庫有向圖中對應(yīng)的有向邊上的無環(huán)句串標(biāo)號(hào)集合,即
A=[aij] ……………………………(1)aij=I<li,lj>={k|sk:liljsk,}。……………………………(2)其中,aij為鄰接矩陣A的元素I<li,lj>表示有向邊<li,lj>上的無環(huán)句串標(biāo)號(hào)集合。實(shí)例5 以實(shí)例4為例說明∑2鄰接矩陣A。
根據(jù)圖2所示的文本庫TB1的有向圖和節(jié)點(diǎn)向量{我,你,他,們,的,人,民,國,家,“,”,“?!眪,得到一個(gè)11×11的∑2鄰接矩陣
其中a14=I<1,4>={1,2},a24=I<2,4>={3,4},a34=I<3,4>={5,6},a45=I<4,5>={1,2,3,4,5,6},a56=I<5,6>={2,4,6},a58=I<5,8>={1,3,5},a67=I<6,7>={2,4,6},a710=I<7,10>={2,4},a711=I<7,11>={6},a89=I<8,9>={1,3,5},a910=I<9,10>={1,3, 5},a101=I<10,1>={2},a102=I<10,2>={3,4},a103=I<10,3>={5,6},φ為空集。定義8 后繼文字符集。
若x,y和z為文本字符單元,且<x,y>和<y,z>為文本有向圖中的邊,則z為<x,y>的后繼文字符,記作Suc(<x,y>)=z。有向邊<x,y>所有的后繼文字符集記為S<x,y>,且S<x,y>={z|Suc(<x,y>)=z}?!?3)定義9前驅(qū)文字符集。
若x,y和z為文本字符單元,且<x,y>和<y,z>為文本有向圖中的邊,則x為<y,z>的前驅(qū)文字符,記作Pre(<y,z>)=x。<y,z>所有的前驅(qū)文字符集記為P<y,z>,且P<y,z>={x|Pre(<y,z>)=x}。…………………………(4)定義10 文本庫的擴(kuò)展∑2鄰接矩陣Ax定義擴(kuò)展的文本庫∑2鄰接矩陣Ax為Ax=[axij],………………………………………………(5)axij=P.I.S。……………………………………………(6)這里,P=P<li,lj>.I=I<li,lj>,S=S<li,lj>。P.I.S表示axij由P、I和S三個(gè)集合構(gòu)成,并不表示任何意義上的運(yùn)算關(guān)系。定義11 扇入邊與扇出邊。
在文本庫有向圖TBG=<V,E>中,x∈V,y∈V,z∈V,且<x,y>∈E,<y,z>∈E,則稱<x,y>為節(jié)點(diǎn)y的扇入邊,<y,z>為y的扇出邊。某一節(jié)點(diǎn)扇入邊和扇出邊的多少分別稱作該節(jié)點(diǎn)的扇入度和扇出度。
根據(jù)上述定義,顯然有如下結(jié)論結(jié)論1 文本庫有向圖TBG=<V,E>中,除起始節(jié)點(diǎn)(文本庫的第一個(gè)文字符)和終止節(jié)點(diǎn)(文本庫的最后一個(gè)文字符)以及句串分隔符節(jié)點(diǎn)外,其余節(jié)點(diǎn)的所有扇入邊上標(biāo)號(hào)集合并等于它的所有扇出邊上標(biāo)識(shí)號(hào)集合并。結(jié)論2 文本庫有向圖TBG=<V,E>中,作為句串分隔符的節(jié)點(diǎn),其所有扇入邊上標(biāo)號(hào)增1后的集合等于它的所有扇出邊上標(biāo)號(hào)集合。定義12 文本庫有向圖的約簡對于文本有向圖TBG=<V,E>,若刪去所有扇出度為1的節(jié)點(diǎn)的扇出邊上所有標(biāo)識(shí),所得的有向圖TBG*=(V*,E*)稱為TBG的約簡。
根據(jù)結(jié)論1和2,扇出度為1的節(jié)點(diǎn)的扇出邊的標(biāo)號(hào)集合等于扇入邊的標(biāo)號(hào)(或增加1后)集合的并。因此,為了減少信息冗余,對文本庫有向圖(或者說文本庫鄰接矩陣)進(jìn)行約減。當(dāng)然,這是一個(gè)空間代價(jià)和處理時(shí)間的權(quán)衡問題。定義13 簡約的擴(kuò)展∑2鄰接矩陣B簡約的文本庫有向圖對應(yīng)的擴(kuò)展∑2鄰接矩陣稱為簡約的擴(kuò)展∑2鄰接矩陣,記為B。以后不作特別聲明時(shí),文本庫的∑2鄰接矩陣即指簡約的擴(kuò)展∑2鄰接矩陣B。結(jié)論3 在簡約的擴(kuò)展∑2鄰接矩陣B中,P和I信息互為冗余。
這也說明,在簡約的擴(kuò)展∑2鄰接矩陣B中,P和I可以且只能有一個(gè)為空。結(jié)論4若有一文本庫TB,它的文本鄰接矩陣和約減的擴(kuò)展文本鄰接矩陣分別為A={aij}和B={bij|bij=P.I.S},則有1)P={k|l(xiāng)k:aki≠φ};2)I=aijorφ(for all aik=φ while k≠j)3)S={k|l(xiāng)k:ajk≠φ}。
結(jié)論4 表明約減的擴(kuò)展鄰接矩陣信息完全可以直接從鄰接矩陣信息得到,而沒有必要真正對文本有向圖進(jìn)行約減處理。實(shí)例6 設(shè)有下列文本庫TB3S1人民的國家,S2人民的地位,S3人民的權(quán)利,S4人民的財(cái)富。
S5平民的國家,S6平民的地位,S7平民的權(quán)利,S8平民的財(cái)富。
S9階級(jí)的國家,S10階級(jí)的地位,S11階級(jí)的權(quán)利,S12階級(jí)的財(cái)富。
建立TB3的有向圖和鄰接矩陣。
根據(jù)前面的定義,可以得到TB3的約減的有向圖,如圖3所示。由圖3的約減的擴(kuò)展文本庫有向圖可以得到它的對應(yīng)的約減的擴(kuò)展∑2鄰接矩陣。
在圖3中,共有22條邊,對應(yīng)的∑2相鄰矩陣的元素列于下表1中表1TB3的鄰接矩陣
需要說明的是,在擴(kuò)展的鄰接矩陣中,我們增加了前驅(qū)字符集和后繼字符集,這是出于提高檢索效率而采取的措施。也就是說,P和S是可以拋棄的。我們記拋棄P和S后的B矩陣為AI矩陣。AI矩陣其實(shí)是A矩陣的一種更嚴(yán)格的約減。
根據(jù)前面的定義和實(shí)例,本發(fā)明提出的全文數(shù)據(jù)庫模型是一種基于∑2鄰接矩陣的文本庫模型,就是用∑2鄰接矩陣表達(dá)全文數(shù)據(jù)信息,即把全文數(shù)據(jù)信息作為一個(gè)文本庫(定義1),并分別建立文本庫的∑2鄰接矩陣A(定義7),或者擴(kuò)展∑2鄰接矩陣Ax(定義8、9、10),或者約減的擴(kuò)展∑2鄰接矩陣B(定義12、13、結(jié)論4)來表達(dá)文本數(shù)據(jù)庫。我們稱之為基于∑2鄰接矩陣的全文數(shù)據(jù)摩模型,簡稱為∑2鄰接矩陣模型。
接下來我們研究針對新模型的文本數(shù)據(jù)操作。為了便于查詢,下面先定義一個(gè)文本索引表。定義14 文本索引表文本索引表是如下三元組的集合{Di,Si1,ai1i2},………………………………………………………(7)其中,Di為第i個(gè)文獻(xiàn)標(biāo)識(shí);Si1為Di文獻(xiàn)第一個(gè)句串在文獻(xiàn)庫中的編號(hào);ai1i2為Si1第一個(gè)和第二個(gè)文字符構(gòu)成的有向邊對應(yīng)于∑2鄰接矩陣元素。1對文本庫鄰接矩陣A的簡單操作1)插入操作add(aij,{k})=aij∪{k},………………………………………………(8)在∑2鄰接矩陣上增加第k個(gè)序號(hào),表示lilj在第k個(gè)符號(hào)串中出現(xiàn)。2)刪除操作del(aij,{k})=aij-aij∩{k},…………………………………………(9)表示從第k個(gè)串中刪去lilj的出現(xiàn)。3)修改操作ch(aij,{k1},{k2})=(aij-aij∩{k1})∪{k2},………………………(10)表示lilj原在k1出現(xiàn),現(xiàn)改為在k2串中出現(xiàn)。2對文本庫鄰接矩陣A的布爾操作1)矩陣加A+B=(aij∪bij),…………………………………………………………(11)表示兩個(gè)文本庫可以歸并為一個(gè)庫。2)矩陣差B=(aij-aij∩bij),……………………………………………………(12)表示從一個(gè)大的文本庫刪去某一較小的文本庫。3)矩陣乘A*A=(∪j=1n(aij∩ajk)),.......(13)]]>記作A2。每一個(gè)元素表示第i字符為頭第k字符為尾所有可能三連字符出現(xiàn)在那些句串上。3基于約減的擴(kuò)展鄰接矩陣B的查詢操作1)子串查詢q(li1li2…lik)基本思想是當(dāng)某bij=I(li,lj)為空時(shí),表示其標(biāo)識(shí)集應(yīng)由li節(jié)點(diǎn)的扇入邊上標(biāo)識(shí)符集合之并來決定。為了描述方便,設(shè)I(bij)表示aij對應(yīng)的標(biāo)識(shí)號(hào)集合,P(bij)表示bij的前驅(qū)文字集,S(bij)表示bij的后續(xù)文字集。子串查詢算法為輸入約減的擴(kuò)展∑2鄰接矩陣B=[bij],查詢子串q(li1li2…lik)。輸出p:{i|Si:li1li2…lik∈Si}。方法a)判斷l(xiāng)i1li2…lik是否有環(huán)。如無環(huán),則求解q(li1li2…lik)=I(bi1i2)∩I(bi2i3)…∩I(bik-lik)。
具體步驟為從左往右依次計(jì)算I(bij),即先計(jì)算I(bi1i2),I(bi2i3),…直到I(bik-lik)。
對于任意i和j,I(bij)的計(jì)算可依如下步驟遞歸進(jìn)行ⅰ.若I(bij)={},但P(bij)={lj1lj2…ljn},則I(bij)=I(bj1i)∪…∪I(bjni);ⅱ.若I(bij)={},P(bij)={},則I(bij)={},檢索結(jié)束,返回結(jié)果為空;ⅲ.若I(bij)≠{},則I(bij)=bij。
返回q(li1li2…lik)結(jié)果。b)若有環(huán),則先對l1l2…lik無環(huán)化,并對每一無環(huán)子串按a)方法進(jìn)行查詢。c)假設(shè)li1li2…lik=qs1qs2…qsm,qsi(i=1~m)均為無環(huán)子串,Ri為按a)對qsi查詢得到的結(jié)果。
若某一Ri(i=1~m)為空,則檢索結(jié)束,返回結(jié)果為空;否則,按無環(huán)子串的順序關(guān)系,從各子串查詢結(jié)果集合中求解所有的子串標(biāo)識(shí)號(hào)序列。每一序列的長度為查詢句串無環(huán)化后的子串個(gè)數(shù),代表一個(gè)解。具體步驟如下ri=φ(i=1~m),對于所有的i值,i=1~m,若i∈Rm且i-1∈Rm-1,…,i-m+1∈R1,則ri={i}∪{i-1}∪…{i-m+2}∪{i-m+1}。
輸出ρ=r1∪r2∪…∪rm。算法完畢。實(shí)例6 在文本庫TB3中查詢串“人民”和“民的國”。解查詢串“人民”和“民的國”均為無環(huán)串,它們均應(yīng)出現(xiàn)在文本庫的完整串中,即不是跨串存存。
a)q(人民)={1,2,3,4}。
表明串“人民”出現(xiàn)在S1、S2、S3和S4中。
b)q(民的國)=I(民的)∩I(的國)∥I(民的)為空=(I(人民)∪I(平民))∩{1,5,9}={1,2,3,4}∩{1,5,9}∪{5,6,7,8}∩{1,5,9}={1,5}。
表明串“民的國”出現(xiàn)在S1和S5中。2)前綴查詢q(li*)q(li*)表示查詢以li文字符為前綴的所有可能的字串出現(xiàn)在那些句串上。q(li*)=∪j=1naij]]>?!?14)更一般地,g(li1li2…lik*)表示查詢以li1li2…lik為前綴的所有可能的字串出現(xiàn)在那些句串中,且q(li1li2…lik*)=q(li1li2…l1k-1)∩q(lik*)?!?15)3)后綴查詢q(*lj)=∪i=1naij]]>。q(*lj)表示查詢以字符lj為后綴的所有可能的字符串出現(xiàn)在那些句串上。………………………………………………………………………(16)更一般地,q(*ljlj1…ljk)表示查詢以文字符串ljlj1…ljk為后綴的所有可能地字串出現(xiàn)在那些句串上,且q(*ljlj1…ljk)=q(*lj)∩q(lj1…ljk)?!?17)4)范圍查詢q(li1li2…likli,li1li2…liklj)表示查詢li1li2…likli和li1li2…liklj兩字符串之間所有可能的字串出現(xiàn)在那些句串中,且q(li1li2...likli,li1li2...liklj)=q(li1li2...lik)∩∪h=1jaikh]]>?!?18)5)復(fù)合查詢所有簡單查詢?yōu)閺?fù)合查詢;若q1和q2為復(fù)合查詢,則q1∧q2=q1∩q2,q1q2=q1∪q2,~q1=U-q1,其中U為全集。6)原文生成原文生成算法的基本思想是由文獻(xiàn)索引表確定一個(gè)文獻(xiàn)由哪些句串組成(即文獻(xiàn)的第一個(gè)句串標(biāo)識(shí)和最后一個(gè)句串標(biāo)識(shí)之間的所有句串),并由文獻(xiàn)索引表找到擴(kuò)充∑2鄰接矩陣入口元素位置。使用矩陣元素中后續(xù)文字集依次尋找該文的第一個(gè)句串、第二個(gè)句串,直至該文的最后一個(gè)句串。
原文生成算法輸入1)TB的約減的擴(kuò)展∑2鄰接矩陣B=[bij];2)文本標(biāo)識(shí)號(hào)Di;3)文本索引表。輸出標(biāo)識(shí)為Di的文獻(xiàn)全文Text(Di)。方法1)由文本標(biāo)識(shí)號(hào)Di和文本索引表確定文獻(xiàn)是第m句串至第n(n>m)句串組成以及文本Di在∑2矩陣中的入口元素bij。2)由于有r<=m∈bij,則Text(Di)<=lilj。取L1=lj。3)若L1為句串分隔符,則r<=m+1。
若r>n,查詢完畢,輸出Text(Di),退出。
若L2∈S(bij)且r∈I(l1,l2),則Text(Di)=Text(Di)∪l2,l1=l2,轉(zhuǎn)3)。算法結(jié)束。實(shí)例7根據(jù)文本庫TB3和如下文本索引表,檢索D2全文D11人民;D25平民;D39階級(jí)。
具體步驟1)從文本索引表中找到文本D2的句串是從標(biāo)識(shí)5到標(biāo)識(shí)8,且第一個(gè)矩陣元素為“平民”,此時(shí)r=5,Text(D2)=“平民”。由于“民”不是句串分隔符,r值不變。2)S(<平民>)={的},則有Text(D2)=“平民的”;3)S(民的)={國,地,權(quán),財(cái)},且5∈I(的,國),故有Text(D2)=“平民的國”;4)Suc(的國)={家},且Pos(國家)={},故有Text(D2)=“平民的國家”;5)Sue(國家)={,},表示第五句串結(jié)束,于是Text(D2)=“民的國家,”;6)由于上一個(gè)字符為句串分隔符“,”,r=6(5+1),表示要進(jìn)一步尋找第6句串。
考慮到S(家,)={人,平,階},且6∈I(,平),故有Text(D2)=“平民的國家,平”;7)依上方法進(jìn)行下去,直全找到r=9>8,則結(jié)束查詢。最后有Text(D2)=“平民的國家,平民的地位,平民的權(quán)利,平民的財(cái)富?!薄?br>
下面將本發(fā)明提出的全文數(shù)據(jù)庫模型與已有的其它全文數(shù)據(jù)庫模型進(jìn)行比較。比較結(jié)果列于表2中。
表2幾種文本數(shù)據(jù)庫模型的性能比較
這里我們對新模型的空間復(fù)雜性作進(jìn)一步的分析。首先用實(shí)例5中的統(tǒng)計(jì)結(jié)果進(jìn)行說明,然后從更一般的意義上進(jìn)行分析。
由結(jié)論3,B矩陣中P和I是互為冗余的,兩者可以合二為一,只需用1bit標(biāo)志位來區(qū)分就可以了。因此所有的空集{}均無須特別處理。實(shí)例5中,統(tǒng)計(jì)表明B矩陣中有11個(gè)P類字符信息、24個(gè)I類字符信息和32個(gè)S類字符信息。這樣TB3總共需要67個(gè)字符信息,而文本庫中共有72個(gè)字符,因此B矩陣的空間復(fù)雜性為|B|/|TB3|=67/72=0.93。
進(jìn)一步地由結(jié)論4可知,B矩陣中的P和S的信息可隱式地從矩陣AI得到。如果用AI替代B,則空間耗費(fèi)更節(jié)省??占?hào){}可用1bit標(biāo)志位來區(qū)分,如忽略不記的話,實(shí)際空間消耗為24個(gè)位置標(biāo)號(hào)。這樣,AI矩陣的空間復(fù)雜性為|AI|/|TB3|=24/72=0.33。
更一般地,對于任何一個(gè)文本數(shù)據(jù)庫,可約減性是普遍存存的。就標(biāo)識(shí)集合而言,它總是小于文本庫中的文字符位置集合。增加的P集合和S集合的總量要比文本中的文字符位置信息總量小得多,因?yàn)閨B|最大為8000×8000,約為64M。對于一個(gè)64G文本庫來說,利用B來表示,每一元素上的平均重復(fù)數(shù)為1k(64G/64M)。任何一前驅(qū)或后繼文字,均對應(yīng)矩陣中一個(gè)元素。矩陣中用一個(gè)文字信息表示在文本庫中1k左右的重復(fù)。因此所有前驅(qū)和后繼文字符集合的總量只不過是文本庫本身的很小的一部分(如1/500),因而可以忽略不記。從總體上考慮,|B|/|TB|<1。如果使用AI,則空間耗費(fèi)比B矩陣還要省。
綜二所述,本發(fā)明提出的∑2鄰接矩陣模型比現(xiàn)有的所有模型性能都要好,其中特別要指出的是空間復(fù)雜性大大優(yōu)于PAT數(shù)組、PAT樹或按字倒排等模型。它繼承了按字索引和按詞索引模型的主要優(yōu)點(diǎn),而避免了它們的缺點(diǎn),是一個(gè)完全新型的全文數(shù)據(jù)庫模型,具有廣泛的應(yīng)用前景。
圖1為實(shí)例2中句串S1的有向圖。圖2為實(shí)例4中文本庫TB1的有向圖。圖3為實(shí)例6中TB3的約減有向圖。
權(quán)利要求
1.一種基于∑2鄰接矩陣的全文數(shù)據(jù)庫模型,其特征在于每一文本庫對應(yīng)于一個(gè)基于基本文字符號(hào)單元集合∑的∑2鄰接矩陣A,因此用∑2鄰接矩陣A表達(dá)全文數(shù)據(jù)庫A=[aij],aij=I<li,lj>={k|sk:liljsk,},其中,aij為文本庫有向圖中對應(yīng)的有向邊<li,lj>上的無環(huán)句串標(biāo)號(hào)集合。
2.根據(jù)權(quán)利要求1所述的全文數(shù)據(jù)庫模型,其特征在于進(jìn)一步地采用擴(kuò)展的∑2鄰接矩陣Ax表達(dá)全文數(shù)據(jù)庫Ax=[axij],其中,Ax的元素axij為axij=P.I.S,這里,P=P<li,lj>為有向邊<li,lj>的前驅(qū)文字符集合,I=I<li,lj>為有向邊<li,lj>上的無環(huán)句串標(biāo)號(hào)集合,S=S<li,lj>有向邊<li,lj>的后繼文字符集合。
3.根據(jù)權(quán)利要求2所述的全文數(shù)據(jù)庫模型,其特征在于還采用約減的擴(kuò)展∑2鄰接矩陣B表達(dá)全文數(shù)據(jù)庫B={bij|bij=P.I.S},其中,P={k|l(xiāng)k:aki≠φ},I=aijorφ(對于所有的aik,當(dāng)k≠j時(shí),有aik=φ),S={k|l(xiāng)k:ajk≠φ}。
4.根據(jù)權(quán)利要求1所述的全文數(shù)據(jù)庫模型,其特征在于對文本庫的∑2鄰接矩陣A的簡單操作如下1)插入操作add(aij,{k})=aij∪{k},在∑2鄰接矩陣上增加第k個(gè)序號(hào),表示lilj在第k個(gè)符號(hào)串中出現(xiàn);2)刪除操作del(aij,{k})=aij-aij∩{k},表示從第k個(gè)串中刪去lilj的出現(xiàn);3)修改操作ch(aij,{k1},{k2})=(aij-aij∩{k1})∪{k2},表示lilj原在k1出現(xiàn),現(xiàn)改為在k2串中出現(xiàn)。
5.根據(jù)權(quán)利要求1所述的全文數(shù)據(jù)庫模型,其特征在于對文本庫的∑2鄰接矩陣A的布爾操作如下1)矩陣加A+B=(aij∪bij),表示兩個(gè)文本庫可以歸并為一個(gè)庫;2)矩陣差B=(aij-aij∩bij),表示從一個(gè)大的文本庫刪去某一較小的文本庫;3)矩陣乘A*A=(∪j=1n(aij∩ajk)),]]>記作A2,每一個(gè)元素表示第i字符為頭第k字符為尾所有可能三連字符出現(xiàn)在那些句串上。
6.根據(jù)權(quán)利要求3所述的全文數(shù)據(jù)庫模型,其特征在于對文本庫的約減的擴(kuò)展∑2鄰接矩陣B的查詢操作如下1)子串查詢q(li1li2…lik)a)判斷l(xiāng)i1li2…lik是否有環(huán),如無環(huán),則q(li1li2…lik)=I(bi1i2)∩I(bi2i3)∩I(bik-lik);b)若有環(huán),則先進(jìn)行查詢串的無環(huán)化,并對每一無環(huán)子查詢串按a)方法進(jìn)行查詢,然后按無環(huán)子串的順序關(guān)系,從各子串查詢結(jié)果集合中求解所有的子句串標(biāo)識(shí)號(hào)序列,一個(gè)序列代表一個(gè)解。2)前綴查詢q(li*)q(li*)=∪j=1naij]]>。3)后綴查詢q(*lj)q(*lj)=∪i=1naij]]>。4)范圍查詢q(li1li2…likli,li1li2…liklj)q(li1li2...likli,li1li2...liklj)=q(li1li2...lik)∩∪h=ijaikh]]>。5)原文生成由文獻(xiàn)索引表確定一個(gè)文獻(xiàn)由那些句串組成,并由文獻(xiàn)索引表找約減的擴(kuò)展∑2鄰接矩陣B中查詢文獻(xiàn)的入口元素;然后使用矩陣元素的后繼文字符集合,依次找到該文獻(xiàn)的第一句串、第二句串等等,直到最后一個(gè)句串為止。
全文摘要
本發(fā)明屬信息技術(shù)領(lǐng)域,是一種基于∑
文檔編號(hào)G06F17/00GK1237736SQ9910912
公開日1999年12月8日 申請日期1999年6月16日 優(yōu)先權(quán)日1999年6月16日
發(fā)明者胡運(yùn)發(fā), 周水庚 申請人:復(fù)旦大學(xué)