范博珩,李寧,田英愛(ài)
(北京信息科技大學(xué) 計(jì)算機(jī)學(xué)院,北京 100101)
隨著各類文檔數(shù)量日益增多以及傳播日益廣泛,人們希望計(jì)算機(jī)能夠自動(dòng)處理和理解文檔,而這些一般需要通過(guò)語(yǔ)義標(biāo)注來(lái)實(shí)現(xiàn)。語(yǔ)義標(biāo)注是指利用本體(ontology)或詞匯表(vocabulary)對(duì)文檔的特定內(nèi)容添加語(yǔ)義標(biāo)記,標(biāo)識(shí)出與之對(duì)應(yīng)的概念或?qū)嶓w,并且建立起標(biāo)注內(nèi)容與本體之間的聯(lián)系。語(yǔ)義標(biāo)注是文檔的核心技術(shù)之一[1]。語(yǔ)義標(biāo)注的結(jié)果使文檔具有了語(yǔ)義元數(shù)據(jù),使得機(jī)器可以自動(dòng)理解和處理文檔,也便于文檔信息的共享和有效利用,可以高效實(shí)現(xiàn)文檔的語(yǔ)義檢索、內(nèi)容提取和自動(dòng)分類等智能化處理。
近年來(lái),Web上的語(yǔ)義標(biāo)注研究成果十分豐富,Google、Yahoo和Yandex等公司共同創(chuàng)建了一個(gè)共享詞匯表——Schema.org[2]。在線商店將schemas標(biāo)記嵌入至描述產(chǎn)品的超文本標(biāo)記語(yǔ)言(hypertext markup language,HTML)頁(yè)面中,以使搜索引擎能夠輕松識(shí)別產(chǎn)品價(jià)格并為網(wǎng)站增加流量[3]。經(jīng)過(guò)語(yǔ)義標(biāo)注后得到的產(chǎn)品結(jié)構(gòu)化數(shù)據(jù)也為產(chǎn)品分類、產(chǎn)品匹配、推薦系統(tǒng)、產(chǎn)品知識(shí)圖譜等新興研究領(lǐng)域的發(fā)展提供了支持。
然而,文本不僅僅來(lái)自HTML文檔,也來(lái)自辦公文檔、版式文檔以及復(fù)雜混合格式的文檔。其中,僅有少數(shù)研究針對(duì)辦公文檔進(jìn)行語(yǔ)義標(biāo)注。Tallis[4]提供了一套針對(duì)DOC格式的文檔半自動(dòng)化標(biāo)注系統(tǒng)Semantic Word,Carr等[5]提出了WICKOffice系統(tǒng),F(xiàn)ink等[6]開發(fā)了一個(gè)Word插件,用戶可使用SmartTag和自定義XML標(biāo)記對(duì)文檔中的生物醫(yī)學(xué)領(lǐng)域的專業(yè)術(shù)語(yǔ)進(jìn)行手工標(biāo)注。但這些標(biāo)注系統(tǒng)無(wú)法支持標(biāo)準(zhǔn)的辦公文檔格式,也無(wú)法支持多源語(yǔ)義標(biāo)注。
辦公文檔語(yǔ)義標(biāo)注之所以研究成果較少,大多因辦公文檔的復(fù)雜性所致。在對(duì)辦公文檔進(jìn)行語(yǔ)義標(biāo)注時(shí),需要滿足以下的條件:1)能夠在文檔格式中記錄語(yǔ)義元數(shù)據(jù);2)能夠支持OOXML(office open XML)、ODF(open document format)、UOF(unified office document format)等主流辦公文檔格式標(biāo)準(zhǔn);3)能夠經(jīng)受對(duì)語(yǔ)義元數(shù)據(jù)的編輯和修改;4)能夠在文檔編輯過(guò)程中保持文檔內(nèi)容與語(yǔ)義元數(shù)據(jù)的同步一致;5)能夠支持多源語(yǔ)義標(biāo)注,即允許同一標(biāo)注內(nèi)容對(duì)應(yīng)多個(gè)本體或詞匯表。正是因?yàn)榱魇轿臋n語(yǔ)義標(biāo)注的復(fù)雜性,至今尚未見(jiàn)到在辦公文檔中進(jìn)行語(yǔ)義標(biāo)注的成熟方法。
針對(duì)上述問(wèn)題,本文提出一種在辦公文檔中支持語(yǔ)義標(biāo)注的方法,包括對(duì)辦公文檔格式的擴(kuò)展,標(biāo)注規(guī)則的設(shè)計(jì)以及在主流辦公軟件中支持語(yǔ)義標(biāo)注的方法。本文的成果已經(jīng)被團(tuán)體標(biāo)準(zhǔn)T/CESA 1176—2021《信息技術(shù) 電子文檔語(yǔ)義元數(shù)據(jù)嵌入方法》[7]所采納。
目前雖然辦公文檔語(yǔ)義標(biāo)注的研究較少,但仍有一些相關(guān)的成果可以借鑒。例如,HTML中文本的存儲(chǔ)方式與辦公文檔相似;PDF(portable document format)中也有成熟的語(yǔ)義標(biāo)注技術(shù)。因此,這些研究均可為本文提供參考。
在HTML中,語(yǔ)義標(biāo)注的具體形式主要以嵌入式為主,標(biāo)注結(jié)果作為相關(guān)元素的屬性加以記錄。Tittel等[8]在關(guān)于中世紀(jì)法語(yǔ)的HTML網(wǎng)頁(yè)內(nèi)容中嵌入RDFa(resource description framework in attributes)標(biāo)記的詞匯,將網(wǎng)頁(yè)中的實(shí)體與詞匯表中的概念和屬性對(duì)應(yīng)起來(lái);Beno等[9]構(gòu)造了Doc2RDF,能夠自動(dòng)對(duì)法律領(lǐng)域的HTML文本進(jìn)行標(biāo)注;Salem等[10]在Beno研究的基礎(chǔ)之上,實(shí)現(xiàn)了標(biāo)注多個(gè)領(lǐng)域的HTML文本的功能;Mbouadeu[11]、Albukhitan等[12]利用深度學(xué)習(xí)的方法自動(dòng)標(biāo)注HTML文檔,并使用microdata或microformats將標(biāo)注結(jié)果記錄于原文檔中。
在PDF中,語(yǔ)義標(biāo)注的具體形式主要以分離式為主,標(biāo)注結(jié)果存放在PDF文檔的單獨(dú)數(shù)據(jù)塊中,并與原文檔建立關(guān)聯(lián)。Eriksson[13]、Kim等[14]通過(guò)使用可擴(kuò)展元數(shù)據(jù)平臺(tái)(extensible metadata platform,XMP)[15]技術(shù)在PDF文檔中建立內(nèi)容與本體的映射關(guān)系。
上述研究中,嵌入式標(biāo)注結(jié)果易于管理且能保證語(yǔ)義元數(shù)據(jù)與文檔內(nèi)容同步,但是會(huì)給原文檔格式帶來(lái)一定的影響。與之相比,分離式標(biāo)注結(jié)果需要單獨(dú)進(jìn)行存放,難以保證語(yǔ)義元數(shù)據(jù)與文檔內(nèi)容同步,但是對(duì)原有文檔格式的影響較小。本文采用嵌入式標(biāo)注方法對(duì)辦公文檔進(jìn)行語(yǔ)義標(biāo)注。
在幾種嵌入式語(yǔ)義標(biāo)注技術(shù)中,RDFa[16]具有更強(qiáng)的表達(dá)力與適用性[17],能夠支持多詞匯表。因此,鑒于RDFa應(yīng)用在HTML流式文檔中的諸多優(yōu)點(diǎn),本文基于RDFa對(duì)辦公文檔格式OOXML進(jìn)行擴(kuò)展,以使辦公文檔中可以加入語(yǔ)義元數(shù)據(jù)標(biāo)記。目前OOXML格式在辦公文檔中應(yīng)用最廣,以之為研究對(duì)象具有典型意義,其他基于XML的辦公文檔格式標(biāo)準(zhǔn)ODF和UOF等與之類似,本文的方法也同樣適用。
采用RDFa對(duì)OOXML進(jìn)行語(yǔ)義標(biāo)注前,首先需要分析HTML和OOXML的文檔結(jié)構(gòu)。下面以圖1中的新聞為例加以說(shuō)明。
圖1 一個(gè)新聞的例子
對(duì)于一篇HTML文檔,文檔的主體內(nèi)容通過(guò)組合不同的塊級(jí)元素和行內(nèi)元素進(jìn)行顯示。塊級(jí)元素如div、p等通常表示文本段落或片段,而行內(nèi)元素如span等則通常用來(lái)更細(xì)粒度地分割局部文本。RDFa是萬(wàn)維互聯(lián)網(wǎng)聯(lián)盟(World Wide Web Consortium)W3C制定的標(biāo)準(zhǔn),它能夠在這些元素中增加下列屬性:
@vocab:當(dāng)前所用的默認(rèn)詞匯表;
@typeof:資源的概念(類型);
@property:某類型所具有的屬性。
RDFa不會(huì)影響HTML的瀏覽。使用RDFa對(duì)HTML進(jìn)行語(yǔ)義標(biāo)注如圖2所示。
圖2 RDFa在HTML中的標(biāo)注示例
圖2中,有兩個(gè)標(biāo)注內(nèi)容,即“新聞社”和“東非”,它們分別為詞匯表Schema.org中表示組織(typeof="Organization")和地點(diǎn)(typeof="Place")的兩個(gè)實(shí)體名稱(property="name")。
與HTML格式不同,OOXML文檔的存儲(chǔ)基于ZIP壓縮打包格式[18],文檔的主體內(nèi)容記錄在文件包內(nèi)的document.xml文件中。段落在OOXML格式中均以段落元素p存儲(chǔ),是構(gòu)成文檔的基本單元。p下包含段落屬性元素pPr和句元素r,段落中的文本根據(jù)式樣的不同會(huì)形成多個(gè)句(run)。r下包含句屬性元素rPr和文本元素t。句中的文本記錄在t下。語(yǔ)義元數(shù)據(jù)主要在段落或句一級(jí)進(jìn)行標(biāo)注。
可以借鑒RDFa在HTML中的用法,將RDFa屬性嵌入到t或其他元素中,如圖3所示。
圖3 RDFa在OOXML中的標(biāo)注示例
雖然對(duì)于上述的一般情況,這種基于RDFa對(duì)OOXML進(jìn)行擴(kuò)展的方式是可行的,但是OOXML畢竟與HTML不同,OOXML主要用于辦公文檔編輯,其文檔數(shù)據(jù)與語(yǔ)義信息存在較為復(fù)雜的對(duì)應(yīng)關(guān)系,可能導(dǎo)致以下問(wèn)題。
1) OOXML中語(yǔ)義標(biāo)注的范圍可能與文本元素的范圍不一致,具體體現(xiàn)在兩個(gè)方面:
① 單一文本可能對(duì)應(yīng)多個(gè)語(yǔ)義標(biāo)注內(nèi)容,如上例中的“埃塞俄比亞”、“肯尼亞”等地名實(shí)體出現(xiàn)在同一個(gè)t下,而由于t已是構(gòu)成文本的最小單元,因此無(wú)法為不同的實(shí)體指定不同的RDFa屬性,參見(jiàn)圖4;
圖4 文本元素中包含多個(gè)實(shí)體的OOXML源碼
② 一個(gè)待標(biāo)注內(nèi)容可能分散在多個(gè)句或文本之中,在Microsoft Word等辦公軟件中,往往會(huì)自動(dòng)把中英文文本和數(shù)字分在不同的句中,難以獲得一個(gè)完整的標(biāo)注,如上例中的“2月14日”會(huì)放在多個(gè)句元素和文本元素中,參見(jiàn)圖5。
圖5 實(shí)體分散成多個(gè)句元素和文本元素的OOXML源碼
2) 對(duì)于一般用戶來(lái)說(shuō),HTML僅供瀏覽,不需進(jìn)行編輯。而OOXML則要能支持編輯,因而嵌入了語(yǔ)義元數(shù)據(jù)的文檔需要能夠被辦公軟件打開和編輯。另外,嵌入的語(yǔ)義元數(shù)據(jù)需要具備魯棒性,經(jīng)得起反復(fù)編輯。
上述問(wèn)題,需要專門設(shè)計(jì)流式文檔的語(yǔ)義標(biāo)注規(guī)則,并找到辦公軟件支持語(yǔ)義標(biāo)注的方法。
為解決前文所述的問(wèn)題,本文專門設(shè)計(jì)了用于辦公文檔標(biāo)注的結(jié)構(gòu)模型。標(biāo)注模型如圖6所示。
圖6 標(biāo)注模型結(jié)構(gòu)
該標(biāo)注模型用XML Schema來(lái)描述,根元素為“metadata”,該元素具有@ID、@Seq和@Begin三個(gè)屬性,也可使用任何RDFa的屬性。
對(duì)于單一文本對(duì)應(yīng)多個(gè)語(yǔ)義標(biāo)注內(nèi)容的情況,可將文本元素中的多個(gè)待標(biāo)注內(nèi)容分別放入多個(gè)metadata元素節(jié)點(diǎn)進(jìn)行描述,并將相關(guān)的文本設(shè)為metadata元素的內(nèi)容。以圖4中的“埃塞俄比亞”、“肯尼亞”和“蝗災(zāi)”為例,其標(biāo)注的結(jié)果如圖7所示。
圖7 單一文本對(duì)應(yīng)多個(gè)語(yǔ)義標(biāo)注內(nèi)容的標(biāo)注方法
圖7中,“埃塞俄比亞”和“肯尼亞”為詞匯表Schema.org中的地點(diǎn)(typeof="Place")名稱(property="name"),“蝗災(zāi)”為詞匯表Schema.org中的事件(typeof="Event")名稱(property="name")。
對(duì)于一個(gè)待標(biāo)注內(nèi)容分散在多個(gè)句或文本之中的情況,可以通過(guò)指定metadata元素中@ID和@Seq兩個(gè)屬性,將多個(gè)語(yǔ)義標(biāo)注內(nèi)容按順序進(jìn)行組合。@ID為標(biāo)注實(shí)體的編號(hào),@Seq為標(biāo)注的順序號(hào),@ID結(jié)合@Seq可以實(shí)現(xiàn)同一實(shí)體的多段標(biāo)注。@Begin指示某一標(biāo)注的開始或結(jié)束。
例如,對(duì)應(yīng)圖5的情況,“2月14日”為事件的發(fā)生日期,在一些詞匯表中,日期進(jìn)一步分解為年、月、日,因此,“2月14日”要按兩個(gè)實(shí)體來(lái)標(biāo)注,即“2月”和“14日”。
圖8 一個(gè)待標(biāo)注內(nèi)容分散在多個(gè)句或文本之中的標(biāo)注方法
圖8中,1~4行以及5~8行描述的兩個(gè)metadata元素節(jié)點(diǎn)具有同樣的@ID,表示它們共同標(biāo)注一個(gè)日期元數(shù)據(jù)。第1行的metadata元素節(jié)點(diǎn)其屬性Begin="true",第4行的metadata元素節(jié)點(diǎn)其屬性Begin="false",它們具有同樣的@Seq屬性(Seq="1"),表示是詞匯表Schema.org中事件(typeof="Event")的發(fā)生日期(property="startDate")的第一部分標(biāo)注內(nèi)容,對(duì)應(yīng)兩個(gè)句中的文本“2”、“月”。同理,5~8行表示事件發(fā)生日期的第二部分標(biāo)注內(nèi)容,對(duì)應(yīng)兩個(gè)句中的文本“14”、“日”。
在OOXML格式的文檔中添加RDFa屬性得到擴(kuò)展的OOXML文檔,稱之為語(yǔ)義文檔。然而這種擴(kuò)展將導(dǎo)致文字處理軟件無(wú)法正常打開和編輯語(yǔ)義文檔。本文提出了一種解決方法,即通過(guò)預(yù)處理和后處理方法實(shí)現(xiàn)語(yǔ)義文檔與普通辦公文檔之間的無(wú)縫切換。
預(yù)處理時(shí),利用辦公文檔中的批注機(jī)制作為文字處理軟件中記錄語(yǔ)義元數(shù)據(jù)的載體,將語(yǔ)義文檔中標(biāo)注的語(yǔ)義元數(shù)據(jù)存儲(chǔ)至批注元素中。辦公文檔中的批注是附加在文檔內(nèi)容片段上的注釋信息。批注與辦公文檔中的文本、圖片等內(nèi)容獨(dú)立顯示并相互關(guān)聯(lián)。同時(shí),用戶在編輯文檔內(nèi)容時(shí),也能夠直接編輯和修改批注,對(duì)于編輯具有很好的魯棒性。因此,采用批注來(lái)存儲(chǔ)語(yǔ)義元數(shù)據(jù),可以支持用戶在編輯過(guò)程中對(duì)語(yǔ)義元數(shù)據(jù)進(jìn)行編輯和修改,也可保持在編輯過(guò)程中語(yǔ)義元數(shù)據(jù)的同步一致。
在OOXML打包文件中的document.xml內(nèi),批注由commentRangeStart、commentRangeEnd和comment-Reference三種元素描述。其中,commentRangeStart和commentRangeEnd確定批注的起始位置和結(jié)束位置,表示批注的范圍;commentReference與OOXML打包文件中的comment.xml內(nèi)的comment元素的內(nèi)容相關(guān)聯(lián),用于在文字處理軟件中顯示批注的內(nèi)容。在一個(gè)批注中,上述4個(gè)元素具有相同的屬性@ID。例如,圖1中的“東非”添加批注后,document.xml中將會(huì)呈現(xiàn)如圖9的結(jié)構(gòu)。
圖9 document.xml中的批注引用
在comment.xml文件中的批注結(jié)構(gòu)如圖10所示。
圖10 comment.xml中的批注引用
為能夠區(qū)分一般的批注和包含語(yǔ)義元數(shù)據(jù)的批注,本文采用特殊的用戶名稱用于語(yǔ)義元數(shù)據(jù)批注。未來(lái),建議為文檔批注增加一個(gè)特殊的類型,用于在辦公文檔中記錄語(yǔ)義元數(shù)據(jù)。但是這要通過(guò)標(biāo)準(zhǔn)制定組織改進(jìn)相關(guān)的標(biāo)準(zhǔn)。目前,采用特殊用戶名的方式也是完全可以的,其前提是該用戶只可進(jìn)行語(yǔ)義標(biāo)注,不能進(jìn)行一般的批注。
預(yù)處理算法的核心思想是找到每一個(gè)語(yǔ)義標(biāo)注內(nèi)容的范圍,即語(yǔ)義元素metadata的范圍,以此來(lái)確定批注的范圍,并根據(jù)記錄的語(yǔ)義元數(shù)據(jù)確定批注的內(nèi)容。在確定批注范圍時(shí),會(huì)出現(xiàn)兩種情況:1) 單一文本下具有多個(gè)語(yǔ)義標(biāo)注實(shí)體;2) 標(biāo)注實(shí)體由多個(gè)文本描述。對(duì)于情況1,需要調(diào)整文檔結(jié)構(gòu),復(fù)制多個(gè)r和t元素節(jié)點(diǎn)并保證每個(gè)t下只包含一個(gè)metadata元素節(jié)點(diǎn),以符合OOXML添加批注的標(biāo)準(zhǔn)格式。對(duì)于情況2,則直接根據(jù)兩個(gè)metadata元素節(jié)點(diǎn)確定批注范圍即可。本文采用如下算法進(jìn)行語(yǔ)義文檔的預(yù)處理轉(zhuǎn)換。
Algorithm1:CreateCommentNodeInput:m as metadata, r as range, u as userOutput:c as the comment node1 Function CreateCommentNode(m,r,u)2 Create a new comment node c;3 c.content ← n.metadata; // n is the semantic node in r4 c.range ← Range(t); // t is the text node in r;Range(t) means get range of t5 c.user ← "dsm";// Set user of c as "dsm"6 Output c;7 End Function
Algorithm2:ForwardTransformInput:D as the semantic documentOutput:D as the transformed document in the standard format1 Function ForwardTransform(D)2 Letc-list be the comment list to be added into D;3 c-list ← null;4 For each paragraph p in D5 For each run node r in p6 Ifr contains multiple semantic nodes Then7 Split r into multiple nodes r-list,each of which contains a single semantic node;
8 End If9 End For10 End For11 For each semantic node n in D12 Ifn spans multiple text nodes Then13 Group the text nodes of same semantics into one segment;14 For each text segment s which n spans15 c ← CreateCommentNode(n.metadata,Range(s),"dsm");16 Add c into c-list;17 End For18 Else // n spans single text node t19 c ← CreateCommentNode(n.metadata,Range(t),"dsm");20 Add c into c-list;21 End If22 End for23 Add c-list into D;24 Output D;25 End Function
算法1用來(lái)生成批注元素,包括批注的范圍和內(nèi)容。算法2是預(yù)處理算法的流程。算法2中,步驟2~3聲明待添加的批注元素集合并賦值為空。步驟4~22是生成語(yǔ)義批注的過(guò)程。其中,步驟4~10用于調(diào)整文檔結(jié)構(gòu),對(duì)應(yīng)前文所述確定批注范圍的第一種情況。步驟11~22中,若標(biāo)注實(shí)體由多個(gè)文本描述,即前文所述的第二種情況,則執(zhí)行13~17步驟。確定標(biāo)注實(shí)體的起始和結(jié)束位置后,調(diào)用算法1生成語(yǔ)義批注,否則根據(jù)步驟4~10調(diào)整好的文檔結(jié)構(gòu),直接調(diào)用算法1生成語(yǔ)義批注。步驟23~25輸出轉(zhuǎn)換完成的文檔。
后處理的目的與預(yù)處理相反,核心思想是找到辦公文檔每一個(gè)帶有語(yǔ)義元數(shù)據(jù)的批注及其范圍,以此來(lái)確定語(yǔ)義標(biāo)注的內(nèi)容和范圍。在進(jìn)行后處理轉(zhuǎn)換時(shí),首先要找到語(yǔ)義元數(shù)據(jù)批注的所有元素,即批注范圍元素和批注內(nèi)容元素。在確定語(yǔ)義標(biāo)注范圍和內(nèi)容時(shí),同樣會(huì)出現(xiàn)兩種情況:1) 實(shí)體由單一文本描述;2) 實(shí)體由多個(gè)文本描述。對(duì)于情況1,將實(shí)體放入metadata元素節(jié)點(diǎn)進(jìn)行描述,批注的內(nèi)容放至metadata屬性中。對(duì)于情況2,需要添加兩個(gè)metadata元素節(jié)點(diǎn),設(shè)置相應(yīng)的@Begin,并分別將其插入在批注起始位置后和批注結(jié)束位置前。批注的內(nèi)容放至@Begin值為true的metadata屬性中。本文采用如下算法進(jìn)行語(yǔ)義文檔的后處理轉(zhuǎn)換。
Algorithm3:BackwardTransformInput:D as the document in the standard formatOutput:D as the semantic document1 Function BackwardTransform(D)2 For each comment node c in D3 Ifc.user is "dsm"Then4 Letn be the semantic node;5 Ifc spans multiple text segment Then6 n.id ← GenerateID();// Generate ID7 n.metadata ← c.content;8 Insert n at the first text node;9 Add end tag of n with n.id at the end of c.range;10 Else // c spans single text node t11 n.id ← GenerateID();12 n.metadata ← c.content;13 Insert n at t;14 End If15 Remove c;16 End If17 End For18 Output D;19End Function
在算法3中,步驟2~17是添加語(yǔ)義元素metadata的過(guò)程。步驟3根據(jù)批注用戶名判斷該批注是否為語(yǔ)義批注,若判定為真則執(zhí)行步驟4~15。步驟5~14用于添加語(yǔ)義元素metadata的位置和內(nèi)容。其中,若實(shí)體由多個(gè)文本描述,即前文所述第二種情況,則執(zhí)行步驟6~9,將批注內(nèi)容賦值給@Begin值為“true”的語(yǔ)義元素metadata的屬性中,并在實(shí)體文本的結(jié)束位置添加@Begin值為“false”的語(yǔ)義元素;否則,執(zhí)行步驟11~13,將批注內(nèi)容賦值于語(yǔ)義元素metadata的屬性中,并將metadata插入至文本元素t下。步驟18~19輸出轉(zhuǎn)換完成的文檔。
本文基于C#和winform窗體設(shè)計(jì)器實(shí)現(xiàn)了一個(gè)辦公文檔語(yǔ)義標(biāo)注工具,具有語(yǔ)義標(biāo)注、預(yù)處理轉(zhuǎn)換和后處理轉(zhuǎn)換3個(gè)功能。以圖1的新聞為例,根據(jù)前述辦公文檔語(yǔ)義標(biāo)注方法進(jìn)行標(biāo)注。
圖1的新聞案例中涉及多個(gè)實(shí)體對(duì)象,如“2月14日”、“新聞社”、“蝗災(zāi)”等。應(yīng)用本文的方法進(jìn)行實(shí)體標(biāo)注時(shí),需要根據(jù)對(duì)象的性質(zhì)從Schema.org詞匯表中選擇合適的類型,同時(shí)還要選擇合適的屬性。以新聞示例的正文第一段為例,標(biāo)注結(jié)果如圖11所示。
圖11 語(yǔ)義標(biāo)注后的擴(kuò)展OOXML文檔示例
上述擴(kuò)展的OOXML文檔經(jīng)過(guò)預(yù)處理轉(zhuǎn)換,生成標(biāo)準(zhǔn)的OOXML文檔,圖12展示了辦公軟件Microsoft Word打開該文檔后的編輯界面。從圖12中可以看到,語(yǔ)義文檔中的語(yǔ)義元數(shù)據(jù)在Word文檔中以批注的形式呈現(xiàn),每個(gè)語(yǔ)義批注對(duì)應(yīng)一個(gè)命名實(shí)體,允許用戶按批注方式進(jìn)行編輯。同時(shí),也允許用戶在Word文檔中的任意位置添加語(yǔ)義批注。
圖12 Microsoft Word中打開經(jīng)過(guò)預(yù)處理的文檔示例
圖12的文檔經(jīng)過(guò)后處理轉(zhuǎn)換后,可以生成新的語(yǔ)義文檔。圖13展示了“新聞社”、“東非”、“埃塞俄比亞”3個(gè)實(shí)體在新的語(yǔ)義文檔中的標(biāo)注示例。
從圖13中可以看到,“新聞社”、“東非”、“埃塞俄比亞”3個(gè)實(shí)體的標(biāo)注方式與圖11不同,這是因?yàn)樵谶M(jìn)行前一步的預(yù)處理轉(zhuǎn)換時(shí),將同一文本元素t下的多個(gè)語(yǔ)義標(biāo)注實(shí)體分配了多個(gè)r和t元素,調(diào)整了文檔結(jié)構(gòu),使每一個(gè)語(yǔ)義標(biāo)注實(shí)體對(duì)應(yīng)一個(gè)r和t。圖13與圖11文檔的語(yǔ)義邏輯是一致的。
圖13 后處理轉(zhuǎn)換生成的語(yǔ)義文檔示例
語(yǔ)義文檔可使用Google結(jié)構(gòu)化測(cè)試工具或者RDFa.info[19]驗(yàn)證器檢測(cè)RDFa語(yǔ)法的正確性,并可使用GRDDL(gleaning resource descriptions from dialects of languages)[20]或W3C的RDFa解析器從中提取出RDF三元組結(jié)構(gòu)的語(yǔ)義元數(shù)據(jù),生成Turtle、RDF/XML或N-Triples等文件。圖14為解析的結(jié)構(gòu)化數(shù)據(jù)。由圖14可知,語(yǔ)義文檔可以通過(guò)RDFa.info測(cè)試工具驗(yàn)證。以檢測(cè)到的“Event”為例,“Event”有兩條數(shù)據(jù),即語(yǔ)義文檔中標(biāo)注的事件名稱(name)“蝗災(zāi)”及事件發(fā)生的時(shí)間(startDate)“2月14日”。
圖14 文檔結(jié)構(gòu)化數(shù)據(jù)
基于RDF數(shù)據(jù),可進(jìn)一步使用RDFa.info生成知識(shí)圖譜。圖15為圖11部分語(yǔ)義標(biāo)注內(nèi)容對(duì)應(yīng)的知識(shí)圖譜。
圖15 基于文檔語(yǔ)義元數(shù)據(jù)生成的知識(shí)圖譜
上述結(jié)果表明,本文提出的方法能夠成功實(shí)現(xiàn)辦公文檔的語(yǔ)義標(biāo)注,方便計(jì)算機(jī)對(duì)文檔的知識(shí)提取。
本文的方法適用于其他以XML為基礎(chǔ)的辦公文檔格式,比如ODF和UOF。在版式文檔格式中,國(guó)內(nèi)的OFD(Open Fixed-layout Document)也可被本文的方法所支持。這3種文檔格式標(biāo)準(zhǔn)的XML Schema框架與OOXML十分相似,因此本文的方法可以擴(kuò)展到上述的3種文檔格式中,具有通用性。此外,本文采用RDFa作為語(yǔ)義標(biāo)注技術(shù),能夠?qū)崿F(xiàn)多個(gè)詞匯表的標(biāo)注,具有很強(qiáng)的語(yǔ)義表達(dá)能力。用戶可以選擇不同的詞匯表對(duì)文檔中的實(shí)體進(jìn)行標(biāo)注,標(biāo)注后文檔所蘊(yùn)含的語(yǔ)義信息也會(huì)不同。
本文以流式文檔的典型格式OOXML為研究對(duì)象,詳細(xì)分析了OOXML格式與HTML格式在文本描述方面的差異性。在此基礎(chǔ)上,提出了流式文檔語(yǔ)義格式擴(kuò)展方法。針對(duì)流式文檔格式特點(diǎn),設(shè)計(jì)了特定的語(yǔ)義標(biāo)注規(guī)則。同時(shí),提出通過(guò)預(yù)處理和后處理實(shí)現(xiàn)語(yǔ)義文檔與辦公文檔之間無(wú)縫切換的方法,以保證標(biāo)注后的文檔經(jīng)過(guò)預(yù)處理能夠被文字處理軟件支持,經(jīng)過(guò)后處理能夠使帶有語(yǔ)義批注的辦公文檔重新形成語(yǔ)義文檔。實(shí)驗(yàn)證明,使用本文的標(biāo)注方法能夠增強(qiáng)辦公文檔的語(yǔ)義表示能力,便于計(jì)算機(jī)對(duì)文檔的自動(dòng)理解和處理。
本文主要針對(duì)OOXML格式的辦公文檔進(jìn)行語(yǔ)義標(biāo)注,后續(xù)可擴(kuò)展到ODF、UOF等格式,為更多的辦公文檔格式增加語(yǔ)義標(biāo)注的支持能力。本文的標(biāo)注對(duì)象是文檔中的文本,尚未考慮其他對(duì)象,比如圖像、表格、公式等元素的語(yǔ)義標(biāo)注,它們的結(jié)構(gòu)更加復(fù)雜,需要進(jìn)一步研究和完善標(biāo)注方法,使得標(biāo)注內(nèi)容更加全面。此外,可考慮利用自然語(yǔ)言處理技術(shù)實(shí)現(xiàn)自動(dòng)化或交互式的語(yǔ)義標(biāo)注,提高標(biāo)注的效率。