999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Lucene的中文分詞器的改進與實現

2015-09-21 01:29:52羅惠峰郭淑琴
網絡安全與數據管理 2015年11期
關鍵詞:文本

羅惠峰,郭淑琴

(浙江工業大學 信息工程學院,浙江 杭州 310023)

0 引言

隨著網絡的發展和數據存儲技術的成熟,如何在大量的數據中快速、準確地獲取到我們所需要的信息成為一個亟待解決的問題,也是信息檢索技術的核心問題。

信息檢索的核心是全文檢索技術,全文檢索是指以各種計算機數據諸如文字、聲音、圖像等為處理對象,提供按照數據資料的內容而不是外在特征來實現的信息檢索手段。當前對全文數據的檢索主要有兩種方法:順序掃描法(Serial Scanning)和倒排索引法(Inverted Index)。前者較為原始,對于小數量的數據是最直接和最方便的方法;但隨著數據量的增多,倒排索引法具有更快的檢索速度和更全的應用范圍[1]。Lucene并不是一個完整的搜索引擎應用,而是一個開放源代碼的高性能、可伸縮的信息搜索庫,可以方便地嵌入到各種應用中,實現針對應用的全文索引/檢索功能,并且已經在許多搜索項目中得到了廣泛的應用[2]。

中文分詞技術作為信息檢索的核心技術之一,它的研究與發展促進了全文檢索技術的應用。本文主要研究了中文分詞的最大匹配算法,并通過該算法對原始中文分詞器進行了改進,改進后的分詞器更加適用于中文條件下的搜索。

1 Lucene架構及簡介

圖1描述了基于Lucene的全文檢索過程,Lucene對索引的創建和搜索是通過不同的流程來實現。創建索引時,需要通過文件、數據庫、Web或人工輸入方式來對數據進行采集;其次則需要建立索引的Document,一條Document就類似于數據庫的一條記錄[3];最后通過這些Document來生成索引。搜索索引時,首先通過用戶查詢得到用戶的查詢條件,然后Lucene通過查詢條件對索引進行搜索,并將最終經過一定規則排序后的結果返回給用戶。目前常見的搜索引擎排序算法有Direct Hit排序算法、PageRank算法、排名競價服務和詞頻位置加權算法[4]。

圖1 基于Lucene的全文檢索過程

圖2 為Lucene的邏輯架構圖。由圖2可以看出Lucene索引和檢索時各個模塊間的調用關系:當索引文件時,接口模塊會先調用語法分析器對文本進行分析,并通過基礎結構公共模塊將分析后的數據寫入索引文件中。用戶查詢時,同樣是通過接口模塊將查詢語句傳遞到索引核心模塊,該模塊負責在底層的存儲類中讀取索引文件里面的數據,并返回給接口模塊[5]。該邏輯圖中的部分模塊是作為公共類存在的。

圖2 Lucene核心邏輯架構

2 自定義中文分詞器的設計

Lucene架構中的分詞器(Analyzer)用于對文本數據進行分詞,文本數據的索引創建過程一般包含以下幾步:(1)將原文檔傳遞給分詞組件(Tokenizer);(2)將得到的詞元 (Token) 傳遞給語言過濾組件(TokenFilter);(3)最后將得到的語匯單元(Term)傳遞給索引組件從而建立該詞的索引[6]。如圖3所示。

圖3 分析器對文本數據的處理流程

2.1 文本解析器的應用

在構建搜索程序時,一個重要的步驟就是從文檔中提取文本以用于索引。這就要求搜索程序能夠處理多種多樣的文檔。對于XML或者HTML等文本格式,必須小心處理以避免對其標簽進行錯誤的改寫。

由于Lucene只能處理文本內容,而不能直接處理文件,因此對于存儲文本的各種文件,Lucene過去采用不同的文檔過濾器,并通過這些過濾器從文件中提取文本,同時還需要自己檢測文檔類型和編碼類型[4]。通過引入文本解析器TIKA作為中間模塊,實現對文件的文本內容進行提取。除此之外,TIKA還能從大多數類型的文檔中提取出元數據[7]。TIKA相當于提供了應對各種文件的中間器,如圖4所示。

圖4 TIKA解析器在系統中的應用架構

2.2 分詞器的設計思路

經過文本提取后的內容,就可以進行分詞操作了。然而Lucene自帶的分詞器在中文環境下的應用具有很大的局限性。對于英文該分詞器采用空格分詞,對于中文實際上只是將文本切割為單個字符,并不符合中文的語法及語義。最大匹配算法(MMSEG)是一種常見的、基于詞典的分詞算法[8]。該算法以正向最大匹配為主,多種消除歧義的規則為輔。它的匹配規則包括正向匹配和復雜匹配;歧義消除規則依次采用最大匹配、最大平均單詞長度、單詞長度最小方差和單字單詞語素最大自由度對語句進行分詞,直到只有一種結果或者最后一個規則使用完畢。

該算法強調長度和均衡,體現在以下幾個方面:每個詞的組合要盡可能長,每個詞也要盡可能長,每個詞的長度要盡可能接近,每個詞的詞頻也要較為接近。例如,假設 C1,C2,C3,…,Cn為一組字符構成的短語字符串,首先搜索詞典以確定_C1_是否為單個字,若為單個字則繼續搜索_C1C2_,直到在詞典中找到最長的單詞即為最合理的匹配。取出這個詞,并對下一個字符采取同樣的操作,直到該字符串最后一個字。在消除歧義方面,定義平均詞長:

式中N為詞組總字數,M為詞語數量。對于字數一定的詞組,詞語數量越少則平均詞長越大,該系列分詞后的詞語更符合中文語義。當平均詞長相同時,繼續采用詞語長度的變化率(即標準差公式)來判斷分詞的好壞,定義每個詞的長度分別為 n1,n2,n3,…,nn,則該短語詞語長度變化率為:

變化率越小,則說明該方法下的分詞效果越好。最后,對于單字詞和連接詞的判斷,采用的方法是計算詞組中的所有單字詞詞頻的自然對數,然后將得到的值相加,取總和最大的詞組。例如A_BBB_C(單字詞詞頻,A:3,C:7),DD_E_F (單字詞詞頻,E:5,F:5) 表示兩個詞組,A、C、E、F表示不同的單字詞,如果不取自然對數,單純就詞頻來計算,這兩個詞組是一樣的,但實際上不同的詞頻范圍所表示的效果也不同,所以這里取自然對數:

比如:設施_和 _服務,設施_和服 _務,在文本中,“和”字作為單字的詞頻越高,則第一種分詞方法的可能性就越大。

基于以上所述的分詞算法,對示例語句“我是一名大學生”進行分析,并標明分詞后的語匯單元的屬性,如圖5所示。

圖5 帶有位置信息和偏移信息的中文語匯單元

由圖5各項屬性可知,當文本被語匯單元化了之后,相對于前一個語匯單元的位置信息將以位置增量值保存,默認值為1。如果位置增量大于1,則表明兩個語匯單元之間有被TokenFilter過濾掉的停用詞。基于以上分詞算法,可以構建同義詞引擎,該同義詞能滿足與原詞匯具有相同的詞匯偏移量,并且通過堆棧的方式設置0位置增量來表示插入的同義詞,那么就可以實現基于Lucene的中文同義詞分詞器的改進。這種改進使得在搜索時,輸入任何一個同義詞,都能得到相匹配的結果。

3 Lucene應用測試實例及分析

根據前文所述的自定義中文分詞器的設計方案,將該分詞器集成到Lucene分詞模塊中去,并通過對比最大匹配算法分詞器(MMSegAnalyzer)以及封裝好的自定義中文分詞器(MyAnalyzer)來進行測試。自定義中文分詞器部分代碼如下,構造該類時將同義詞引擎傳入,并加載絕對路徑下的詞典。

public class MyAnalyzer extends Analyzer{

private SamewordContext samewordContext;

//構造時把同義詞引擎 SamewordContext傳入

public MyAnalyzer(SamewordContext swc){

samewordContext=swc;

}

@Override

public TokenStream tokenStream(String fieldName,Reader reader){

Dictionary dic=

Dictionary.getInstance("D:\Java\mmseg4j-1.8.5\data");

//分詞器采用最大匹配算法分詞器

return new MySameTokenFilter(new MMSegTokenizer(new MaxWordSeg(dic),reader),samewordContext

}

}

首先測試文本解析器TIKA的解析性能,通過對比TXT文本與被解析后的PDF文檔在Lucene中和Windows中對中文詞組“工具”的識別條數、索引和檢索時間,表明結合了文本解析器TIKA的Lucene具有較強的實用性。本文所用測試文本為世界科技百卷書及中華學生百科全書共200冊,數據量約30 MB,系統為Windows 7 SP2。測試結果如表1所示。

表1 在不同環境下對不同格式文檔搜索的對比

由表1可得知,使用Lucene對文件內容創建索引并進行搜索,其檢索效率與Windows自帶檢索功能相比,具有更快的算法實現。在搜索速度上,兩種方式的速度差別并不大,主要差別在于索引創建的過程。該實驗結果很好地證明了最大匹配算法在中文分詞上的優越性,以及TIKA對文本內容的解析性能。

接下來對搜索系統的完備性進行測試。首先通過同義詞引擎將一組詞匯定義為相關同義詞,這使得在檢索某一詞匯時,即使文檔本身中不包含該內容,但只要包含了該詞匯的相關同義詞,即可獲得檢索結果。該方法是基于前述的位置信息和偏移信息等語匯單元屬性。定義同義詞:文明=文化=中華文明,并通過自定義分詞器建立索引并檢索這些詞匯,檢索結果如表2所示。

表2 搜索結果查全率功能測試

由表2測試得知,當文本解析器與自定義分詞器被引入Lucene之后,檢索響應度和檢索滿意度均有較高提升,可以更方便快捷地實現用戶對數據的管理與檢索。

4 結束語

通常使用功能完備性、分詞準確性、檢索速度、查全率來評價搜索系統的性能。通過上述測試實例的對比發現,結合了改進后的自定義中文分詞器的搜索系統,對以上性能指標均有較高提升。當然,該分詞器算法主要是根據最大匹配算法,通過詞典的加載來完成同義詞引擎的構造。將來的研究方向:可以結合中文語義及概率統計智能化得出同義詞詞根,從而根據詞根使得搜索系統更加豐富化、人性化,并將其應用在網絡數據檢索、網站搜索功能等方面。

[1]張博.基于 Lucene倒排索引性能的研究與優化 [D].昆明:昆明理工大學,2013.

[2]李永春,丁華福.Lucene的全文檢索的研究與應用[J].計算機技術與發展,2009,20(2):12-15.

[3]羅剛.解密搜索引擎技術實戰Lucene&Java精華版[M].北京:電子工業出版社,2014.

[4]高樂,張健.基于網頁分塊的搜索引擎排序算法改進[J].浙江工業大學學報,2005,33(3):272-275.

[5]林碧英,趙銳,陳良臣.基于 Lucene的全文檢索引擎研究與應用 [J].計算機技術與發展,2007,17 (5):186-190.

[6]劉冰凌.基于正向最大匹配算法的優化算法ImpFMMseg的實現[D].武漢:中南民族大學,2010.

[7]CUTTING D.The Lucene search engine powerful flexible and free[M].Newyork: John Wiley Sons,2000.

[8]MCCANDLESS M.Lucene in Action[M].牛長流,肖宇,譯.北京:人民郵電出版社,2011.

猜你喜歡
文本
文本聯讀學概括 細致觀察促寫作
重點:論述類文本閱讀
重點:實用類文本閱讀
初中群文閱讀的文本選擇及組織
甘肅教育(2020年8期)2020-06-11 06:10:02
作為“文本鏈”的元電影
藝術評論(2020年3期)2020-02-06 06:29:22
在808DA上文本顯示的改善
“文化傳承與理解”離不開對具體文本的解讀與把握
基于doc2vec和TF-IDF的相似文本識別
電子制作(2018年18期)2018-11-14 01:48:06
文本之中·文本之外·文本之上——童話故事《坐井觀天》的教學隱喻
從背景出發還是從文本出發
語文知識(2015年11期)2015-02-28 22:01:59
主站蜘蛛池模板: 手机在线看片不卡中文字幕| 玖玖精品在线| 色成人综合| 成人午夜视频免费看欧美| 欧美一区二区三区不卡免费| 久久精品嫩草研究院| 亚洲首页在线观看| 老司机精品久久| 精品久久久久久成人AV| 尤物特级无码毛片免费| 国产午夜福利亚洲第一| 免费激情网站| 国产人碰人摸人爱免费视频| 亚洲精品成人片在线观看| 欧美精品另类| 国产日韩丝袜一二三区| 日本欧美成人免费| 日韩二区三区无| 夜夜拍夜夜爽| 九色在线观看视频| 婷婷中文在线| 国产性生交xxxxx免费| 国产女人水多毛片18| 亚洲国产天堂在线观看| 亚洲啪啪网| 香蕉99国内自产自拍视频| 国产亚洲视频免费播放| a级毛片免费在线观看| 国产在线精彩视频二区| 99久久国产自偷自偷免费一区| 97久久人人超碰国产精品| 手机永久AV在线播放| 国产超碰在线观看| 国产高清无码第一十页在线观看| 波多野一区| 欧美国产精品不卡在线观看| 精品中文字幕一区在线| 大陆国产精品视频| 22sihu国产精品视频影视资讯| 亚洲第一黄色网址| 日韩欧美中文字幕在线韩免费| 成人日韩视频| 日本a级免费| 91无码视频在线观看| 欧美精品成人| 亚洲精品另类| 日韩不卡高清视频| 精品国产香蕉伊思人在线| 男女精品视频| 人妻丰满熟妇av五码区| 亚洲成人播放| 99热亚洲精品6码| 露脸一二三区国语对白| 国产男人的天堂| 中文精品久久久久国产网址| 免费又爽又刺激高潮网址 | 在线国产你懂的| 国产综合无码一区二区色蜜蜜| 午夜影院a级片| 免费99精品国产自在现线| 农村乱人伦一区二区| 热九九精品| 亚洲欧美h| 欧美精品二区| 亚洲精品中文字幕午夜| 在线无码九区| 波多野结衣一级毛片| 114级毛片免费观看| 亚洲码在线中文在线观看| 无码国产伊人| 午夜精品福利影院| 久久6免费视频| 国产玖玖玖精品视频| 亚洲三级网站| 亚洲va视频| 亚洲无码电影| 欧美视频在线观看第一页| 久热中文字幕在线观看| 97视频精品全国在线观看| 国产精品污污在线观看网站| 99热6这里只有精品| 国产精品伦视频观看免费|