国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Nutch在中醫(yī)藥信息融合中的應(yīng)用研究

2023-04-13 11:38區(qū)卓越覃姜維孫曉翠
現(xiàn)代計(jì)算機(jī) 2023年3期
關(guān)鍵詞:分詞搜索引擎頁(yè)面

區(qū)卓越,覃姜維,趙 峰,孫曉翠,4*

(1.廣東藥科大學(xué)醫(yī)藥信息工程學(xué)院,廣州 510006;2. 廣東工業(yè)大學(xué)數(shù)學(xué)與統(tǒng)計(jì)學(xué)院,廣州 510520;3. 中鐵工程設(shè)計(jì)咨詢(xún)集團(tuán)有限公司,北京 100071;4. 廣東普通高校工程技術(shù)研究中心-醫(yī)藥信息真實(shí)世界工程技術(shù)研究中心,廣州 510006)

0 引言

2000 年以來(lái),隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展以及數(shù)據(jù)之間高度交叉的發(fā)展趨勢(shì),再加上民眾對(duì)健康意識(shí)、醫(yī)藥意識(shí)的逐步增強(qiáng),民眾對(duì)于中醫(yī)藥信息的需求日益增加,鑒于此,中醫(yī)藥信息融合的相關(guān)應(yīng)用研究推陳出新。其中,設(shè)計(jì)以中醫(yī)藥信息為導(dǎo)向的搜索引擎是滿(mǎn)足信息搜尋需求的好方法。分析國(guó)內(nèi)外現(xiàn)有的信息檢索系統(tǒng),存在以下問(wèn)題,一是缺乏針對(duì)性,如今市面上搜索引擎的檢索對(duì)象過(guò)于寬泛,并不是面向某一特定領(lǐng)域的垂直搜索引擎[1],沒(méi)有對(duì)中醫(yī)藥信息做出針對(duì)性的歸納、關(guān)聯(lián)處理與融合[2],用戶(hù)需花費(fèi)大量時(shí)間在無(wú)關(guān)數(shù)據(jù)中獲取所需的中醫(yī)藥信息。隨著數(shù)據(jù)采集量的增多與數(shù)據(jù)更新頻率的增高,加之缺乏必要的數(shù)據(jù)過(guò)濾與篩選[3],搜索引擎的檢索信息有效率與使用率會(huì)逐步下降,難以實(shí)現(xiàn)對(duì)中醫(yī)藥信息的針對(duì)性搜索服務(wù);二是欠缺共享性,由于中醫(yī)藥信息來(lái)源分散,數(shù)據(jù)呈現(xiàn)形式多樣化,數(shù)據(jù)結(jié)構(gòu)形式不盡相同,傳統(tǒng)的基于SQL 語(yǔ)句的信息檢索系統(tǒng)難以實(shí)現(xiàn)對(duì)中醫(yī)藥信息的精確搜索。即便是使用非關(guān)系型的數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),也難以根據(jù)數(shù)據(jù)的重要性做出預(yù)測(cè)性的結(jié)果排序返回至用戶(hù)[4],造成存儲(chǔ)空間、算力資源和數(shù)據(jù)價(jià)值的浪費(fèi)。隨著國(guó)家“互聯(lián)網(wǎng)+”戰(zhàn)略的實(shí)施與“大健康”理念的提出,在大數(shù)據(jù)時(shí)代下[5],信息化能有效推動(dòng)經(jīng)濟(jì)社會(huì)發(fā)展,有效推進(jìn)以國(guó)內(nèi)大循環(huán)為主體的新發(fā)展格局的構(gòu)建。就中醫(yī)藥現(xiàn)代化、中醫(yī)藥信息化來(lái)講,亟需構(gòu)建以信息技術(shù)為中心的醫(yī)藥數(shù)據(jù)處理分析[6]、數(shù)據(jù)挖掘[7-9]、知識(shí)發(fā)現(xiàn)[10]等服務(wù)建設(shè)面向中醫(yī)藥信息的搜索引擎,提供大眾的醫(yī)藥信息獲取途徑,喚醒民眾的醫(yī)藥健康意識(shí),并為衛(wèi)生部門(mén)提供中醫(yī)藥信息普及宣傳的輿論口,為監(jiān)管部門(mén)把握醫(yī)藥信息化發(fā)展現(xiàn)狀、制定政策、定制惠民服務(wù)等提供輔助決策支持[11],也可搭配其他內(nèi)容管理系統(tǒng)平臺(tái)如Drupal[12]、WordPress[13]或Joomla[14]進(jìn)行中醫(yī)藥信息的深度利用與挖掘。

本文從現(xiàn)實(shí)出發(fā),充分考慮當(dāng)今數(shù)字時(shí)代尤其是疫情時(shí)代下的實(shí)際情況,秉承中醫(yī)藥現(xiàn)代化與中醫(yī)藥信息融合應(yīng)用的發(fā)展理念,設(shè)計(jì)并實(shí)現(xiàn)一款“中醫(yī)藥信息搜索引擎”。該搜索引擎以開(kāi)源軟件Nutch 為基礎(chǔ),結(jié)合其“網(wǎng)絡(luò)爬蟲(chóng)”與“全文搜索”兩大功能,解決了漢字識(shí)別與搜索的改進(jìn)、以用戶(hù)友好性為導(dǎo)向的網(wǎng)頁(yè)UI 優(yōu)化等問(wèn)題,實(shí)現(xiàn)了類(lèi)似百度、必應(yīng)、Yandex 等搜索引擎的功能,減少了無(wú)關(guān)信息如廣告商、營(yíng)銷(xiāo)號(hào)的干擾,使獲取中醫(yī)藥信息的過(guò)程更加便捷、精確,更有針對(duì)性地、高效地向民眾提供實(shí)用的中醫(yī)藥信息。

1 中醫(yī)藥信息搜索引擎的設(shè)計(jì)與實(shí)現(xiàn)

1.1 Nutch簡(jiǎn)介

經(jīng)過(guò)比較后[15],決定使用Nutch進(jìn)行項(xiàng)目搭建。Nutch 是Apach Lucene 下屬的一個(gè)高度可擴(kuò)展、成熟的Web 爬蟲(chóng)程序,用于處理各種數(shù)據(jù)采集任務(wù),包括“網(wǎng)絡(luò)爬蟲(chóng)”和“全文搜索”兩大部分,是一個(gè)優(yōu)秀的、基于Java 的開(kāi)源爬蟲(chóng)軟件,在城市交通[16]、社交情報(bào)[17]、電商貿(mào)易[18]、就業(yè)招聘[19]等領(lǐng)域有廣泛應(yīng)用前例。本項(xiàng)目將會(huì)基于Nutch設(shè)計(jì)與實(shí)現(xiàn)中醫(yī)藥信息搜索引擎。Nutch的工作流程如圖1所示。

圖1 Nutch工作流程

其步驟可總結(jié)如下:

(1)注入(inject)初試URL:將管理員提供的URL 進(jìn)行統(tǒng)一化及過(guò)濾非法URL、重復(fù)URL后,將剩余的可用URL 及其最新?tīng)顟B(tài)存入Crawldb數(shù)據(jù)庫(kù)。

(2)生成(generate)新的segment:按照Crawldb中的URL生成抓取列表并存入segments目錄中。

(3)網(wǎng)絡(luò)抓?。╢etch):按照上一步在segments目錄中生成的抓取列表進(jìn)行抓取,同時(shí)對(duì)抓取內(nèi)容解析。

(4)內(nèi)容解析(parse):將抓取的內(nèi)容解析為兩大部分:URL與數(shù)據(jù)內(nèi)容。

(5)更新(update)Crawldb:更新存儲(chǔ)URL的Crawldb,為下一輪的抓取做好新的URL準(zhǔn)備。

(6)建索引(index):由于Nutch 是Apache Lucene的子項(xiàng)目,Nutch使用Lucene完成數(shù)據(jù)索引,通過(guò)索引庫(kù)完成用戶(hù)搜索的功能。

(7)用戶(hù)搜索:用戶(hù)鍵入關(guān)鍵字進(jìn)行檢索,Nutch 檢索到內(nèi)容后,將結(jié)果按照一定的算法打分后排序并返回至用戶(hù)。

上述過(guò)程中的步驟(1)~(6)即“網(wǎng)絡(luò)爬蟲(chóng)”部分,步驟(7)即為“全文搜索”部分。

概括來(lái)講,Nutch 是以管理員給定的網(wǎng)站作為入口進(jìn)行爬取,將所爬取的內(nèi)容進(jìn)行解析,并建立相應(yīng)的爬取結(jié)果索引,再通過(guò)一定的算法對(duì)搜索結(jié)果進(jìn)行評(píng)分、排序以響應(yīng)用戶(hù)的搜索需求,以實(shí)現(xiàn)爬取、建索引、搜索的高度統(tǒng)一。

1.2 Nutch的評(píng)分機(jī)制

在1.1 的工作流程步驟(7)中,Nutch 使用評(píng)分機(jī)制對(duì)搜索結(jié)果進(jìn)行評(píng)分,按照分?jǐn)?shù)排序后返回至用戶(hù)。

Nutch 構(gòu)建于Apach Lucene 之上,在Lucene中,文檔的分?jǐn)?shù)受用戶(hù)查詢(xún)語(yǔ)句影響,在用戶(hù)進(jìn)行搜索時(shí)實(shí)時(shí)返回排序結(jié)果。而Lucene 的評(píng)分機(jī)制在Lucene的Similarity類(lèi)中,用公式表示,即:

公式(1)基于TF-IDF 算法進(jìn)行評(píng)分(具體解釋見(jiàn)表1),通過(guò)查詢(xún)?cè)~項(xiàng)在文檔中出現(xiàn)的頻率TF 與詞項(xiàng)在整個(gè)文檔集合中的逆文檔頻率IDF進(jìn)行計(jì)算[20]。TF-IDF算法公式如下:

表1 Lucene得分計(jì)算公式解釋

1.3 基于Nutch的中醫(yī)藥信息搜索引擎

基于Nutch進(jìn)行開(kāi)發(fā)后的中醫(yī)藥信息搜索引擎如圖2所示,此時(shí)輸入英文或數(shù)字才能正常搜索;若輸入中文搜索,則會(huì)出現(xiàn)亂碼,搜索失敗,如圖3所示。

圖2 輸入“Ginseng(人參)”搜索

圖3 搜索中文出現(xiàn)亂碼

仍然面臨的難題,一是Nutch本身不支持對(duì)中文的識(shí)別與搜索,鍵入漢字進(jìn)行檢索時(shí),頁(yè)面會(huì)發(fā)生亂碼現(xiàn)象;二是Nutch的頁(yè)面對(duì)檢索結(jié)果的呈現(xiàn)過(guò)于簡(jiǎn)陋,效率低下,缺乏用戶(hù)友好性。下面介紹漢字識(shí)別與搜索的改進(jìn)、以用戶(hù)友好性為導(dǎo)向的網(wǎng)頁(yè)UI優(yōu)化等問(wèn)題的實(shí)現(xiàn)方法。

2 中醫(yī)藥信息搜索引擎的優(yōu)化及應(yīng)用結(jié)果分析

2.1 漢字識(shí)別與搜索

長(zhǎng)久以來(lái),漢字的識(shí)別與搜索一直是國(guó)內(nèi)研究的重點(diǎn)課題之一。為了解決漢字的識(shí)別與劃分,涌現(xiàn)了許多優(yōu)秀的漢字分詞組件,如北京理工大學(xué)張華平博士團(tuán)隊(duì)研發(fā)的NLPIRICTCLAS 分詞系統(tǒng)[21]、清華大學(xué)自然語(yǔ)言處理與社會(huì)人文計(jì)算實(shí)驗(yàn)室研發(fā)的THULAC 分詞包[22]、盤(pán)古分詞等,也有學(xué)者使用詞典進(jìn)行中文分詞。由于Nutch源于外國(guó),故其對(duì)漢字的搜索與識(shí)別能力低,甚至?xí)霈F(xiàn)無(wú)法搜索、亂碼等情況,故需要對(duì)其進(jìn)行優(yōu)化與改進(jìn),使其支持漢字的識(shí)別與搜索。Tan 等[23]曾探索過(guò)Nutch處理中文索引的優(yōu)化方案。綜合比較各種方案[24-26],本項(xiàng)目將使用漢字分詞組件IKAnalyzer對(duì)Nutch 進(jìn)行優(yōu)化和改進(jìn)。

同Nutch 一樣,IKAnalyzer 也基于Java 語(yǔ)言開(kāi)發(fā),是一個(gè)輕量級(jí)的漢字分詞組件工具包。IKAnalyzer 使用“正向迭代最細(xì)粒度切分算法”進(jìn)行漢字分詞,主要包含“細(xì)粒度”和“智能分詞”兩種切分模式,不僅可實(shí)現(xiàn)中文分詞處理,還兼容日文、朝鮮文字符等[27]。

為使Nutch 實(shí)現(xiàn)基于IKAnalyzer 的中文分詞,具體來(lái)講,即是修改Nutch 相關(guān)代碼接口、xml 文件,將分詞軟件嵌入Nutch 后,使用javacc 再次進(jìn)行編譯,即可使其支持中文的識(shí)別與搜索功能。

首先,改寫(xiě)安裝目錄/src/java/org/apache/nutch/searcher 下的Query.java,為其導(dǎo)入一個(gè)org.apache.nutch.analysis 包下的異常類(lèi)ParseException,同時(shí)改寫(xiě)line 456附近的parse函數(shù),使它拋出一個(gè)異常ParseException,用以處理解析特點(diǎn)語(yǔ)言(中文)時(shí)發(fā)生的異常事件。

接著,修改上方目錄中/analysis 路徑下的NutchAnalysis.jj,將其從按字劃分修改為按詞劃分。具體來(lái)講,就是將該文件中l(wèi)ine 130 附近的“| >”復(fù)寫(xiě)為“| )+>”,就可實(shí)現(xiàn)組“字”成“詞”,其中“+”是“多次”的意思。將上述修改過(guò)的NutchAnalysis.jj 文件復(fù)制至另一個(gè)文件夾下,使用javacc 命令編譯,將生成的7 個(gè)新的java文件復(fù)制到原先的目錄下覆蓋同名文件。

在新生成的java 文件中,找到NutchAnalysis.java,所有用于解析文本的分詞插件都需要重寫(xiě)實(shí)現(xiàn)NutchAnalyzer 類(lèi)中的tokenStream 抽象方法,首先為其導(dǎo)入包org.wltea.analyzer.lucene.IKTokenizer,同時(shí)重新編寫(xiě)line 51 附近的兩個(gè)parseQuery 函數(shù),具體地,即分別讓它們拋出異常ParseException,處理解析字符串時(shí)發(fā)生的異常事件。接下來(lái)繼續(xù)修改繼承自NutchAnalyzer的NutchDocumentAnalyzer類(lèi)。

修改同一目錄下的NutchDocumentAnalyzer.java,為其添加分詞組件IKAnalyzer,使用IKAnalyzer 的分詞方法替換實(shí)現(xiàn)Nutch 原來(lái)的分詞方法。具體方法是,在該文件中導(dǎo)入包org.wltea.analyzer.lucene.IKAnalyzer 和org.apache.lucene.analysis.tokenattributes.*,同時(shí)重新編寫(xiě)line 110 附近處的函數(shù),為其加入IKAnalyzer 實(shí)例。具體地,即將原代碼的analyzer 對(duì)象賦值為IKAnalyzer實(shí)例并返回。

上述各類(lèi)的繼承關(guān)系如圖4所示。

圖4 類(lèi)間繼承關(guān)系的UML

其中的Analyzer 抽象類(lèi)用作Nutch 的底層分析器,其來(lái)自于2.2 小節(jié)提到的Lucene。陰影部分則是經(jīng)過(guò)優(yōu)化的部分。

接下來(lái)按Nutch 安裝目錄下的配置文件build.xml 添加分詞包的信息。在Nutch 目錄下執(zhí)行ant 編譯命令,它自動(dòng)找到build.xml 并開(kāi)始執(zhí)行。

執(zhí)行成功后,繼續(xù)用“ant war”編譯,可以在build目錄下得到以“nutch-1.2”為名的“.job”“.war”以及“.jar”文件,將上述三個(gè)文件覆蓋Nutch目錄下的同名文件。

此時(shí)需要更改tomcat 服務(wù)器的設(shè)置,將上述的“nutch-1.2.war”復(fù)制至tomcat 安裝目錄中的webapp 目錄,待其自動(dòng)解壓。并在解壓后目錄中的/WEB-INF/classes 中修改nutch-site.xml,添加屬性“plugin.includes”,賦值為“protocolhttp”“urlfilter-regex”“analysis-(zh)”等,否則無(wú)法顯示搜索結(jié)果而顯示空白。

然后修改tomcat/conf 下的server.xml,找到下列屬性并修改:

然后重啟tomcat。此時(shí)可以使用中文查詢(xún),如以“頭痛”為關(guān)鍵字搜索,結(jié)果見(jiàn)圖5,可見(jiàn)此時(shí)Nutch已支持漢字的識(shí)別與搜索。

圖5 優(yōu)化后支持漢字的中醫(yī)藥信息搜索引擎

加入中文分詞插件優(yōu)化后的Nutch工作流程如圖6所示,對(duì)比圖1,陰影部分則為優(yōu)化部分。

圖6 優(yōu)化后的Nutch工作流程

2.2 以用戶(hù)友好性為導(dǎo)向的網(wǎng)頁(yè)UI優(yōu)化

Nutch 本身的搜索結(jié)果呈現(xiàn)頁(yè)面較簡(jiǎn)單,極度缺少用戶(hù)友好性。故需對(duì)頁(yè)面UI 進(jìn)行優(yōu)化改進(jìn),使其搜索結(jié)果更加突出,對(duì)用戶(hù)更友好。

首先,找出index.jsp 頁(yè)面,這個(gè)是Nutch 默認(rèn)的首頁(yè),需要根據(jù)中醫(yī)藥特色重寫(xiě)該頁(yè)面,刪除其語(yǔ)言選擇、幫助、Nutch 介紹等無(wú)關(guān)緊要的功能,加入面向中醫(yī)藥信息的內(nèi)容。

其次,核心是對(duì)search.jsp 頁(yè)面的重寫(xiě)。如刪除“”/>”一行,阻止其搜索時(shí)跳轉(zhuǎn)至默認(rèn)的頁(yè)面自動(dòng)生成模板函數(shù),否則頁(yè)面效果會(huì)一如既往地簡(jiǎn)陋。

同時(shí),將“”>”改為“”,增加可讀性;同時(shí)可刪除下兩行的queryLang 和anchors,項(xiàng)目不需要該額外搜索結(jié)果。

其中標(biāo)簽有“i18n”字眼的靜態(tài)代碼用以自動(dòng)生成搜索結(jié)果數(shù)值統(tǒng)計(jì),被寫(xiě)死以至于無(wú)法顯示成中文,故將其刪除,并將搜索結(jié)果數(shù)值統(tǒng)計(jì)改成:

為使搜索結(jié)果的關(guān)鍵字在頁(yè)面中高亮顯示、更加突出,修改./include/style.html的CSS配置文件,譬如將.highlight 的樣式屬性修改為紅色、加粗等,符合用戶(hù)閱讀習(xí)慣,更具用戶(hù)友好性。

優(yōu)化完成后,重啟tomcat 服務(wù)器,打開(kāi)搜索頁(yè)面,可見(jiàn)美觀許多(見(jiàn)圖7)。輸入文字搜索,搜索結(jié)果加粗、標(biāo)紅,更加突出(圖8)。

圖7 頁(yè)面UI優(yōu)化后效果

圖8 以用戶(hù)友好性為導(dǎo)向的搜索結(jié)果頁(yè)面

基于Nutch的中醫(yī)藥信息搜索引擎優(yōu)化改進(jìn)前后,發(fā)生的改變具體見(jiàn)表2。

表2 優(yōu)化前后對(duì)比

3 結(jié)語(yǔ)

本文首先對(duì)Nutch的組成、工作流程等特點(diǎn)進(jìn)行了描述與介紹,提出了疫情時(shí)代下民眾獲取中醫(yī)藥信息的新穎解決方法,即基于Nutch構(gòu)建中醫(yī)藥信息搜索引擎。鑒于Nutch不支持漢字的識(shí)別與搜索,使用漢字分詞組件IKAnalyzer對(duì)Nutch 進(jìn)行優(yōu)化改造,提高了中文醫(yī)藥信息識(shí)別與搜索的準(zhǔn)確性;并優(yōu)化網(wǎng)頁(yè)UI 使搜索結(jié)果更加突出?;贜utch的中醫(yī)藥信息搜索引擎契合當(dāng)今“互聯(lián)網(wǎng)+”的時(shí)代發(fā)展潮流,符合醫(yī)藥信息化的發(fā)展趨勢(shì),是中醫(yī)藥現(xiàn)代化的一個(gè)應(yīng)用嘗試,能有效地處理、存儲(chǔ)、分享醫(yī)藥數(shù)據(jù),相信在中醫(yī)藥信息資源處理的未來(lái)發(fā)展中會(huì)受到越來(lái)越多的重視。

猜你喜歡
分詞搜索引擎頁(yè)面
刷新生活的頁(yè)面
分詞在英語(yǔ)教學(xué)中的妙用
結(jié)巴分詞在詞云中的應(yīng)用
結(jié)巴分詞在詞云中的應(yīng)用
網(wǎng)絡(luò)搜索引擎亟待規(guī)范
Nutch搜索引擎在網(wǎng)絡(luò)輿情管控中的應(yīng)用
基于Nutch的醫(yī)療搜索引擎的研究與開(kāi)發(fā)
廣告主與搜索引擎的雙向博弈分析
網(wǎng)站結(jié)構(gòu)在SEO中的研究與應(yīng)用
論英語(yǔ)不定式和-ing分詞的語(yǔ)義傳承
固阳县| 富源县| 浦江县| 望谟县| 名山县| 临朐县| 洪洞县| 积石山| 镇康县| 罗田县| 阿荣旗| 靖安县| 化德县| 兰州市| 乌拉特前旗| 潍坊市| 华蓥市| 镇安县| 秀山| 社会| 金门县| 武城县| 平顶山市| 鲁甸县| 柳州市| 原阳县| 灌云县| 苍南县| 弋阳县| 昔阳县| 镇原县| 芦溪县| 景谷| 三亚市| 五原县| 阳朔县| 壶关县| 高密市| 文登市| 博罗县| 勐海县|