趙嫦花,米春橋
(1.懷化學(xué)院計(jì)算機(jī)科學(xué)與工程學(xué)院,湖南 懷化 418000;2.武陵山片區(qū)生態(tài)農(nóng)業(yè)智能控制技術(shù)湖南省重點(diǎn)實(shí)驗(yàn)室,湖南 懷化 418000)
本體是概念的可視化,即標(biāo)準(zhǔn)化現(xiàn)實(shí)世界中抽象的概念,使概念與概念、概念與對(duì)象、對(duì)象與對(duì)象之間的關(guān)系更加清晰,從而實(shí)現(xiàn)知識(shí)重用和知識(shí)共享.本體引入計(jì)算機(jī)科學(xué)領(lǐng)域之后,國內(nèi)外許多研究機(jī)構(gòu)對(duì)基于敘詞表的領(lǐng)域本體建構(gòu)及相關(guān)問題進(jìn)行了研究,目前已經(jīng)開發(fā)了大量相對(duì)成熟的本體.[1]由于本體建構(gòu)方法和應(yīng)用領(lǐng)域的不同,這些本體在規(guī)模和復(fù)雜性上有一些差異.為了使提取出的關(guān)鍵字能反映文檔主題,劉俊等[2]提出了一種新的詞的主題特征(Topic Feature)計(jì)算方法,該方法利用主題模型中詞和主題的分布情況計(jì)算詞的主題特征和提取關(guān)鍵字;Vigneshwari S等[3]提出了一種使用基于多本體的散列法實(shí)現(xiàn)語義的社會(huì)信息檢索技術(shù).
支持本體推理規(guī)則和語義推理的工具有很多,如FACT,RACER,Jena[4]等.在本體中推理出病蟲害及其相應(yīng)的處理知識(shí)之間的關(guān)系后,可開發(fā)用于分析病蟲害產(chǎn)生原因及其影響的智能軟件.與其他的資源獲取渠道相比,本體能提供詳盡的病蟲害相關(guān)信息[5],并幫助農(nóng)民理解專家知識(shí),使得不同的病蟲害得到特定的防治方案,從而最低限度地減小損失.隨著時(shí)間的推移,病蟲會(huì)形成耐藥性,動(dòng)態(tài)更新病蟲害知識(shí)庫十分重要.筆者擬采用自適用本體構(gòu)建方法設(shè)計(jì)一套本體知識(shí)庫系統(tǒng),并將其命名為CitrusPestOntoGenerator.該系統(tǒng)能從對(duì)柑桔病蟲害的最新文字描述中提取關(guān)鍵字信息,并構(gòu)建相應(yīng)的本體庫,也能幫助農(nóng)業(yè)專家更新病蟲害知識(shí)庫,如加入新的病蟲害種類、實(shí)例、癥狀、原因和補(bǔ)救措施等.
圖1 CitrusPestOntoGenerator流程Fig. 1 Workflow of CitrusPestOntoGenerator
CitrusPestOntoGenerator的核心思想是動(dòng)態(tài)構(gòu)建本體庫以支持柑桔病蟲害管理.農(nóng)業(yè)專家有很多與農(nóng)作物病蟲害管理相關(guān)的說明文件,這些文件一般都是文本格式,不能在自動(dòng)化系統(tǒng)里直接使用,因此必須讓這些文本具有與本體一樣的結(jié)構(gòu).利用本體可以將柑桔病蟲害文本進(jìn)行層次結(jié)構(gòu)劃分,一旦構(gòu)建好病蟲害本體,文本就可以很容易地轉(zhuǎn)化成任何語言.CitrusPestOntoGenerator的整體工作流程是如圖1所示.
圖2 CitrusPestOntoGenerator使用的本體庫基礎(chǔ)Fig. 2 Foundation Ontology Used by CitrusPestOntoGenerator
CitrusPestOntoGenerator系統(tǒng)為農(nóng)業(yè)專家提供了基礎(chǔ)本體(圖2),筆者選擇OWL作為構(gòu)建本體的語言.由于OWL可以表征互聯(lián)網(wǎng)的信息,因此一旦柑桔病蟲害知識(shí)被存儲(chǔ)為OWL文檔,就可以使用網(wǎng)絡(luò)訪問,也可輕松應(yīng)用于其他任何農(nóng)業(yè)專家系統(tǒng).柑桔病蟲害基礎(chǔ)本體中的基本類別分為蟲害(Insetct Pests)、非蟲害(Non-Insect Pests)和病害(Diseases),病害又包括真菌病(Fungal)、細(xì)菌疾病(Bacterial)和病毒(Viruses)3個(gè)子類.
為了添加更多類別的蟲害實(shí)例和有害生物到本體庫中,農(nóng)業(yè)專家需要提供包含特定作物蟲害細(xì)節(jié)的文本語料庫.通過友好的用戶界面,農(nóng)業(yè)專家可以在文本語料庫中添加或刪除文本描述.從所有柑桔病蟲害語料庫中提取關(guān)鍵字時(shí),首先逐個(gè)讀取文件,并應(yīng)用關(guān)鍵字提取步驟收集所有關(guān)鍵字[6-7],然后刪除重復(fù)的關(guān)鍵字,提供最終更新的蟲害本體關(guān)鍵字列表.柑桔病蟲害關(guān)鍵字提取算法的具體流程如下所示:
輸入:柑桔病蟲害描述文件
輸出:相關(guān)關(guān)鍵字
Begin
從文件中提取文本
While
切分文本
去除停用詞
通過應(yīng)用OpenNLP POS標(biāo)簽和保留POS
標(biāo)簽來提取名詞和專有名詞
對(duì)所有關(guān)鍵字進(jìn)行排序
將關(guān)鍵字與AGROVOC詞庫進(jìn)行比較,去
除無關(guān)的關(guān)鍵字
EndWhile
移除重復(fù)關(guān)鍵字
將列表分為2個(gè)列表,一個(gè)為名詞,另一個(gè)為專
有名詞
End
使用由Java提供的StringTokenizer來提取和分割與柑桔病蟲害有關(guān)的文件.文檔中的停用詞若對(duì)本體構(gòu)建無用,則先標(biāo)記出來,再將這些字詞從標(biāo)記集合中刪除.關(guān)鍵字是否為停用詞通過使用頻率來確定,若使用頻率小于3,則判定其為停用詞,并將停用詞從列表中刪除.剩下的關(guān)鍵字將通過英文分詞算法被還原成英文單詞原型,如將planted還原成plant.病蟲害類以owl:class表示并保存在病蟲害本體中,它的實(shí)例以owl:individual表示.本體中的類(Class)和實(shí)例(Individual)通常是語句中的名詞和專有名詞,筆者利用這個(gè)特性,使用openNLP POS標(biāo)簽來提取名詞和專有名詞.
關(guān)鍵字提取是對(duì)關(guān)鍵字進(jìn)行排序且只保留排名靠前的關(guān)鍵字,這是通過使用TFIDF算法實(shí)現(xiàn)的[6].TFIDF值包括詞頻(Term Frequency,TF)和逆向文件頻率(Inverse Document Frequency,IDF)兩部分,TF表示詞條在文檔中出現(xiàn)的頻率,IDF是一個(gè)詞語普遍重要性的度量.某一特定詞語的IDF可以由總文件數(shù)目除以包含該詞語的文件數(shù)目,再對(duì)得到的商取對(duì)數(shù).這里每個(gè)關(guān)鍵字在具體病蟲害文件中的都要計(jì)算出來,然后按逆序頻率刪除關(guān)鍵字.關(guān)鍵字的TFIDF值詞頻和逆向文件頻率,列表根據(jù)TFIDF值進(jìn)行排序.在CitrusPestOntoGenerator中,筆者對(duì)每個(gè)文件提取了大約100個(gè)關(guān)鍵字.
圖3 提取柑桔病蟲害關(guān)鍵字的界面Fig. 3 Keywords Extraction
為了找到關(guān)鍵字與農(nóng)業(yè)領(lǐng)域的相關(guān)性,筆者尋找存在于農(nóng)業(yè)多語種敘詞表(AGROVOC)中的關(guān)鍵字,那些AGROVOC中不存在的關(guān)鍵字將從關(guān)鍵字列表中刪除.所有這些步驟都是重復(fù)讀取柑桔種植業(yè)專家提供的文件,再將從這些文件中收集到的關(guān)鍵字放在一起,最后準(zhǔn)備2個(gè)關(guān)鍵字列表,一個(gè)是名詞,另一個(gè)是專有名詞.列表中的詞將按照類和實(shí)例添加到新的病蟲害本體中.提取柑桔病蟲害關(guān)鍵字的界面如圖3所示.
圖4 CitrusPestOntoGenerator對(duì)基礎(chǔ)本體庫的擴(kuò)展Fig. 4 Extending of Foundation Ontology Through CitrusPestOntoGenerator
找到關(guān)鍵字后,農(nóng)業(yè)專家首先刪除無用的關(guān)鍵字,然后按照前面收集的關(guān)鍵字類和實(shí)例添加新的蟲害類型、蟲害實(shí)例和蟲害屬性,以此更新基礎(chǔ)病蟲害本體庫.CitrusPestOntoGenerator對(duì)基礎(chǔ)本體庫的擴(kuò)展如圖4所示.從圖4中可以看出,本體庫增加了蟲害的子類,分別為蚜蟲(Aphid)、螨蟲(Acarid)、蚧類(Scale Insects)、潛葉蛾(Phyllocnistis Citrella)和蠅蟲(Flies).
系統(tǒng)提取的關(guān)鍵字不僅可以添加到柑桔病蟲害本體中,而且可以添加到專家自己的知識(shí)庫中.這些關(guān)鍵字被保存到單獨(dú)的關(guān)鍵字本體中,它將隨著柑桔病蟲害本體的更新而動(dòng)態(tài)更新,也會(huì)和AGROVOC進(jìn)行比較擴(kuò)展.這使得系統(tǒng)具有健壯性,有助于提高關(guān)鍵字提取的精度.為了將信息存儲(chǔ)為OWL文檔,使用斯坦福大學(xué)基于Java語言開發(fā)的本體開發(fā)環(huán)境Protégé5.0,在Protégé中可以添加或刪除類、方法、實(shí)例、數(shù)據(jù)屬性和對(duì)象屬性等.筆者將蟲害類型存儲(chǔ)為OWL類,實(shí)例存儲(chǔ)為OWL個(gè)體,將癥狀、原因和補(bǔ)救措施存儲(chǔ)為OWL個(gè)體的數(shù)據(jù)屬性,并將其設(shè)置為字符格式.
采用柑桔病蟲害關(guān)鍵字提取算法對(duì)100個(gè)柑桔病蟲害文檔進(jìn)行關(guān)鍵字提取,并將其中8個(gè)樣本的提取結(jié)果進(jìn)行關(guān)鍵字分類,結(jié)果如表1所示.
表1 8個(gè)樣本的柑桔病蟲害關(guān)鍵字提取分類
由表1中的數(shù)據(jù),可計(jì)算得到CitrusPestOntoGenerator系統(tǒng)關(guān)鍵字的平均提取準(zhǔn)確率為73%.使用CitrusPestOntoGenerator系統(tǒng)生成100個(gè)本體,檢索來自每個(gè)文檔的100個(gè)關(guān)鍵字并記錄其中有用的關(guān)鍵字,實(shí)驗(yàn)結(jié)果表明該自適應(yīng)算法有助于有用的關(guān)鍵字的提取.
本體在語義網(wǎng)中扮演著重要的角色,它能很好地表示異構(gòu)數(shù)據(jù),柑桔病蟲害本體的構(gòu)建能很好地為農(nóng)民解決問題.CitrusPestOntoGenerator系統(tǒng)使用自然語言處理技術(shù),協(xié)助農(nóng)業(yè)專家為柑桔病蟲害分級(jí),并確定它的類型和實(shí)例.在使用CitrusPestOntoGenerator系統(tǒng)時(shí),農(nóng)業(yè)專家不需要理解本體,只需確認(rèn)從文本中提取出來的病蟲害類型、實(shí)例、癥狀、原因及補(bǔ)救措施即可.CitrusPestOntoGenerator系統(tǒng)利用NLP技術(shù)和OWL表征知識(shí)的強(qiáng)大能力,將專家知識(shí)轉(zhuǎn)化為結(jié)構(gòu)化格式,并以各種方式向農(nóng)民提供信息.