亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Lucene.net 中文分詞算法分析

        2011-12-02 02:57:02周拴龍
        鄭州大學學報(理學版) 2011年3期
        關(guān)鍵詞:解析器鄭州大學歧義

        周拴龍

        (鄭州大學 信息管理系 河南 鄭州 450001)

        Lucene.net中文分詞算法分析

        周拴龍

        (鄭州大學 信息管理系 河南 鄭州 450001)

        Lucene.net實現(xiàn)中文分詞依靠的是Analyzer類,但通過分析其內(nèi)置的KeywordAnalyzer,StandardAnalyzer,StopAnalyzer,SimpleAnalyzer,WhitespaceAnalyzer 5個分詞類發(fā)現(xiàn),它們幾乎都是按單字的標準進行切分的,為更好處理中文信息,必須引用外部獨立開發(fā)的中文分詞包.在對ChineseAnalyzer,CJKAnalyzer和 IKAnalyzer這3種典型的中文分詞包分別測試后,發(fā)現(xiàn)采用字典分詞以及正反雙向搜索方法的IKAnalyzer分詞器的分詞效果更勝一籌.

        Lucene; 中文分詞; Analyzer類

        0 引言

        從發(fā)展歷史角度看,Lucene是Apache軟件基金會Jakarta項目組的一個子項目,是一個開放源代碼的全文搜索引擎工具包.Lucene的目的是為軟件開發(fā)人員提供一個簡單易用的工具包,以方便地在目標系統(tǒng)中實現(xiàn)全文檢索的功能,或者是以此為基礎(chǔ)建立起完整的全文搜索引擎[1].

        到目前為止,Lucene的C#移植有3個版本,最開始是NLucene,然后是Lucene.net,當Lucene.net轉(zhuǎn)向商業(yè)化之后,SourceForge上又出現(xiàn)了DotLucene項目.它們都是Lucene全文搜索引擎庫的 .net實現(xiàn).所以3者在架構(gòu)、內(nèi)核等方面與Lucene是一脈相承的.綜合性能比較,Lucene.net在3者里最為成熟、穩(wěn)定,所以,本文選擇了Lucene.net分析其中文分詞算法的實現(xiàn)[2].

        1 Lucene的工作原理

        圖1 Lucene 索引機制架構(gòu)Fig.1 Index mechanism structure of Lucene

        Lucene包括索引和搜索兩大部分.

        索引所做的工作是為各種各樣的文檔構(gòu)建Lucene能識別的索引文件.具體講,第1步,Lucene 使用各種解析器對各種不同類型的文檔進行解析.Lucene有多種文檔解析器,如HTML解析器,PDF解析器,MS Word解析器,Text File解析器等等.Lucene根據(jù)文檔類型做出判斷,將不同文檔交由不同解析器處理,濾去種種不必要信息,最終輸出純文本內(nèi)容.第2步, Lucene 的分詞器—Analyzer從純文本內(nèi)容中提取出索引項以及相關(guān)信息,如索引項的出現(xiàn)頻率等.第3步,由Analyzer把這些信息寫到索引文件中[1].圖1顯示了 Lucene 索引機制的架構(gòu).

        搜索所做的工作是從用戶輸入的關(guān)鍵字入手找出與之相匹配的文本并返還給用戶.搜索不是本文要討論的重點,因為Lucene默認對搜索關(guān)鍵詞不分詞,所以分詞的工作就集中在了索引部分.

        Lucene的索引中有5個基礎(chǔ)類:

        (1)Document—是用來描述要解析的文檔的,這里的文檔可以是HTML,PDF,Word或Text File等等類型.一個 Document 對象由多個 Field 對象組成.

        (2)Field—是用來描述一個文檔的某個屬性的.Field有3個屬性:是否存儲,是否索引,是否分詞.

        (3)Analyzer—它負責在一個文檔被索引之前,預先對文檔內(nèi)容進行分詞處理,主要是提取詞匯單元,并除掉無用的信息.Analyzer 類是一個抽象類,它有多個實現(xiàn).針對不同的語言和應用需要選擇適合的 Analyzer.Analyzer 把分詞后的內(nèi)容交給 IndexWriter 來建立索引.

        (4)IndexWriter—“寫入索引”.它的作用就是把一個個的 Document 對象加到索引中來.這是 Lucene 用來創(chuàng)建索引的一個核心類.

        (5)Directory—標示Lucene 的索引的存儲位置[2].

        最初,Lucene的設(shè)計者只考慮了英文、德文兩種西文格式的分詞情形.眾所周知,中文分詞要走的是另外一條道路.

        2 中文分詞

        2.1中文分詞技術(shù)的核心—分詞算法

        現(xiàn)有的中文分詞算法可分為3大類:基于規(guī)則的分詞方法、基于統(tǒng)計的分詞方法和基于理解的分詞方法.

        (1)基于規(guī)則的分詞方法

        這種方法又叫做機械分詞法,它是按照一定的策略將待分析的漢字串與一個“充分大的”機器詞典中的詞條進行匹配,若在詞典中找到某個字符串,則匹配成功(識別出一個詞).按照掃描方向的不同,串匹配分詞方法可以分為正向(由左到右)匹配和逆向(由右到左)匹配;按照不同長度優(yōu)先匹配的情況,可以分為最大(最長)匹配和最小(最短)匹配;按照是否與詞性標注過程相結(jié)合,又可以分為單純分詞方法和分詞與標注相結(jié)合的一體化方法.

        常用的機械分詞方法有以下3種:正向最大匹配法;逆向最大匹配法;最少切分匹配法.一般說來,逆向匹配的切分精度略高于正向匹配,遇到的歧義現(xiàn)象也較少.

        (2)基于統(tǒng)計的分詞方法

        從形式上看,詞是穩(wěn)定的字的組合,因此在上下文中,相鄰的字同時出現(xiàn)的次數(shù)越多,就越有可能構(gòu)成一個詞.因此字與字相鄰共現(xiàn)的頻率或概率能夠較好地反映成詞的可信度.可以對語料中相鄰共現(xiàn)的各個字的組合的頻度進行統(tǒng)計,計算它們的互現(xiàn)信息.具體操作起來,我們可以借鑒信息計量學的方法,定義兩個字的互現(xiàn)信息,并最終計算兩個漢字的相鄰共現(xiàn)概率.互現(xiàn)信息體現(xiàn)了漢字之間結(jié)合關(guān)系的緊密程度.當緊密程度高于某一個閾值時,便可認為此字組可能構(gòu)成了一個詞.

        這種方法有一定的局限性,會抽出一些共現(xiàn)頻度高、但并不是詞的常用字組,例如“這一”、“之一”、“有的”、“我的”、“許多的”等,并且對常用詞的識別精度差,時空開銷大.實際應用的統(tǒng)計分詞系統(tǒng)都要使用一部基本的分詞詞典(常用詞詞典)進行串匹配分詞,同時使用統(tǒng)計方法識別一些新的詞,即將串頻統(tǒng)計和串匹配結(jié)合起來,既發(fā)揮匹配分詞切分速度快、效率高的特點,又利用了無詞典分詞結(jié)合上下文識別生詞、自動消除歧義的優(yōu)點.

        (3)基于理解的分詞方法

        這種分詞方法是通過讓計算機模擬人對句子的理解,達到識別詞的效果.其核心思想就是在分詞的同時進行句法、語義分析,利用句法信息和語義信息來處理歧義現(xiàn)象.它通常包括3個部分:分詞子系統(tǒng)、句法語義子系統(tǒng)、總控部分.在總控部分的協(xié)調(diào)下,分詞子系統(tǒng)可以獲得有關(guān)詞、句子等的句法和語義信息來對分詞歧義進行判斷,這種分詞方法模擬了人對句子的理解過程,需要使用大量的語言知識和信息.由于漢語語言知識的籠統(tǒng)、復雜性,難以將各種語言信息組織成機器可直接讀取的形式,因此,目前基于理解的分詞系統(tǒng)還處在試驗階段[3].

        到底哪種分詞算法的準確度更高,目前并無定論.但取得公認的是,對于任何一個成熟的分詞系統(tǒng)來說,不可能單獨依靠某一種算法來實現(xiàn),都需要綜合不同的算法.

        2.2中文分詞的難題

        中文是一種十分復雜的語言,讓計算機理解中文語言更是困難.在中文分詞過程中,有2大難題一直沒有完全突破.

        (1)歧義識別

        歧義是指同樣的一句話,可能有兩種或者更多的切分方法.例如:表面的,因為“表面”和“面的”都是詞,那么這個短語就可以分成“表面/的”和“表/面的”.這種稱為交叉歧義.由于沒有人的知識去理解,計算機很難知道到底哪個方案正確.

        交叉歧義相對組合歧義來說還是比較容易處理的,組合歧義就必需根據(jù)整個句子來判斷了.例如,在句子“這個門把手壞了”中,“把手”是個詞,但在句子“請把手拿開”中,“把手”就不是一個詞.

        如果交叉歧義和組合歧義計算機都能解決的話,在歧義中還有一個難題,是真歧義.真歧義意思是給出一句話,由人去判斷也不知道哪個應該是詞,哪個應該不是詞.例如:“乒乓球拍賣完了”,可以切分成“乒乓/球拍/賣/完/了”、也可切分成“乒乓球/拍賣/完/了”,如果沒有上下文其他的句子,恐怕誰也不知道“拍賣”在這里算不算一個詞.

        (2)新詞識別

        新詞,專業(yè)的術(shù)語稱為未登錄詞.也就是那些在詞庫中都沒有收錄過,但又確實能稱為詞的那些詞.最典型的是人名,人可以很容易理解句子“王軍虎去廣州了”中,“王軍”是個詞,因為是一個人的名字,但要是讓計算機去識別就困難了.如果把“王軍虎”做為一個詞收錄到字典中去,全世界有那么多名字,而且每時每刻都有新增的人名,收錄這些人名本身就是一項巨大的工程.即使這項工作可以完成,還是會存在問題,例如:在句子“王軍虎頭虎腦的”中,“王軍虎”還能不能算詞[4].

        新詞中除了人名以外,還有機構(gòu)名、地名、產(chǎn)品名、商標名、簡稱、省略語等都是很難處理的問題,而且這些又正好是人們經(jīng)常使用的詞,因此對于搜索引擎來說,分詞系統(tǒng)中的新詞識別十分重要.

        目前,在設(shè)計算法時,對于此類詞的區(qū)分將會逆向考慮,不在詞庫的詞排除常用字后即為專有名詞,這也意味著要對常用“字”進行詞性分類如“西”“姆”,按照現(xiàn)代漢語習慣,只會和其他字結(jié)合不單獨出現(xiàn),所以“馬克西姆”是專有名詞.而對于“在”、“和”、“了”之類的字可以單獨出現(xiàn).

        3 Lucene.net的中文分詞

        3.1Lucene.net中文分詞核心—Analyzer

        Lucene.net中,分詞是核心庫之一,其內(nèi)置在Lucene.net里的分詞都被放在項目的Analysis目錄下,也就是Lucene.net.Analysis命名空間下.

        分詞的類的命名一般都是以“Analyzer”結(jié)束,比如KeywordAnalyzer,StandardAnalyzer,StopAnalyzer,SimpleAnalyzer,WhitespaceAnalyzer等,全部繼承自Analyzer類.而它們一般各有一個輔助類,一般以“Tokenizer”結(jié)尾,分詞的邏輯大都在輔助類完成.

        嚴格地講,Analyzer應該被稱作詞法分析器 ,它是一個進行詞法過濾和分析的類,實際上是個對分詞器、過濾器進行綜合包裝的類.而真正執(zhí)行分詞動作的是輔助類Tokenizer,它們對文本進行分詞,可能是單字、詞、二元切分等等,是真正的分詞器.

        3.2比較Lucene.net的5個內(nèi)置分詞類

        現(xiàn)在,對于KeywordAnalyzer,StandardAnalyzer,StopAnalyzer,SimpleAnalyzer,WhitespaceAnalyzer這5個內(nèi)置的分詞類做兩個測試,以分析對比他們各自的分詞效果.

        首先,private static String TestString=“鄭州大學信息管理系,I love my major.”做第一個測試,結(jié)果如下:

        Lucene.net.Analysis.KeywordAnalyzer結(jié)果:

        鄭州大學信息管理系,I love my major.

        Lucene.net.Analysis.StandardAnalyzer結(jié)果:

        鄭/州/大/學/信/息/管/理/系/I/love/ my/ major

        Lucene.net.Analysis.SimpleAnalyzer結(jié)果:

        鄭州大學信息管理系/I/love/my/major

        Lucene.net.Analysis.StopAnalyzer結(jié)果:

        鄭州大學信息管理系/I/love/my/major

        Lucene.net.Analysis.WhitespaceAnalyzer結(jié)果:

        鄭州大學信息管理系,I /love/my/major.

        接下來,換一句話來做第二個測試.更改Teststring值為“鄭州大學信息管理系,I’m glad to see you.阿Q正傳.”.測試結(jié)果如下:

        Lucene.net.Analysis.KeywordAnalyzer結(jié)果:

        鄭州大學信息管理系,I’m glad to see you.阿Q正傳.

        Lucene.net.Analysis.Standard.StandardAnalyzer結(jié)果:

        鄭/州/大/學/信/息/管/理/系/I’m/glad/to/see/you/阿Q正傳/

        Lucene.net.Analysis.SimpleAnalyzer結(jié)果:

        鄭州大學信息管理系/I’m/glad/to/see/you/阿Q正傳

        Lucene.net.Analysis.StopAnalyzer結(jié)果:

        鄭州大學信息管理系/I’m/glad/to/see/you/阿Q正傳

        Lucene.net.Analysis.WhitespaceAnalyzer結(jié)果:

        鄭州大學信息管理系,I’m/glad/to/see/you.阿Q正傳.

        由此可以看出:KeywordAnalyzer分詞,沒有任何變化;StandardAnalyzer對英文和中文都單字拆分;SimpleAnalyzer和StopAnalyzer差不多,對英文按單字分開,而對中文則幾無變化;WhitespaceAnalyzer只是按空格劃分,不屏蔽標點符號.

        以上這些是初步的結(jié)論,但可以確定的是,Lucene.net自帶的分詞類幾乎都是按單字的標準進行切分的,這點在處理中文信息時是遠遠達不到應用要求的.

        3.3更多的中文分詞包

        上文提到,中文分詞可分為單字分詞、二元分詞、詞庫匹配、語義理解等幾種,每一種方法,Lucene.net的程序愛好者們都嘗試去研究,開發(fā)出許多達到應用級的分詞包.

        上面的測試是對Lucene.net內(nèi)置的分詞程序進行的測試,使用的是Lucene.net默認的單字分詞.對于后3種中文分詞方法,我們分別選擇ChineseAnalyzer,CJKAnalyzer和 IKAnalyzer 3種典型的中文分詞包進行測試.

        private static String TestString = “原鄭州大學創(chuàng)建于1956年,是新中國成立后國家創(chuàng)辦的第一所綜合性大學.”;

        ChineseAnalyzer結(jié)果:

        原/鄭/州/大/學/創(chuàng)/建/于/1956/年/是/新/中/國/成/立/后/國/家/創(chuàng)/辦/的/第/一/所/綜/合/性/大/學

        CJKAnalyzer結(jié)果:

        原鄭/鄭州/大學/學創(chuàng)/創(chuàng)建/建于/于1956/1956年/年是/是新/新中/中國/國成/成立/立后/后國/國家/家創(chuàng)/創(chuàng)辦/辦的/的第/第一/一所/所綜/綜合/合性/性大/大學

        IKAnalyzer結(jié)果:

        鄭州大學/鄭州/大學/鄭/大/創(chuàng)建/1956年/1956/年/新中國/中國/成立/國家/創(chuàng)辦/第一所/第一/一/綜合性大學/綜合性/綜合/大學/大

        由此可見:

        ChineseAnalyzer采用一元分詞的方法,基本等同StandardAnalyzer;

        CJKAnalyzer則是二元分詞方法,交叉雙字進行分割;

        而IKAnalyzer則是字典分詞方法,并采用正反雙向搜索來提高分詞效果.且從測試中可以看出:ChineseAnalyzer和CJKAnalyzer沒有過濾常用的漢字,如“是”、“的”等,這些常用的漢字對搜索是沒有多大作用的.KIAnalyzer則可以通過在詞典中屏蔽掉這些常用字而提高分詞和檢索的效率.

        [1] 趙峰.基于Lucene的全文檢索系統(tǒng)初探[J].黑龍江科技信息,2007,12:62-64.

        [2] 孫永波,郭紅峰.天文文獻全文檢索系統(tǒng)的研究與實現(xiàn)[J].天文研究與技術(shù),2007,4(3):296-300.

        [3] 蔡建超,郭一平,王亮.基于Lucene.NET校園網(wǎng)搜索引擎的設(shè)計與實現(xiàn)[J].計算機技術(shù)與發(fā)展,2006,16(11):73-75.

        [4] 趙汀,孟祥武.基于Lucene API 中文全文數(shù)據(jù)庫的設(shè)計與實現(xiàn)[J].計算機工程與應用,2003,20:179-181.

        AnalysisonChineseSegmentationAlgorithmofLucene.net

        ZHOU Shuan-long

        (DepartmentofInformationManagement,ZhengzhouUniversity,Zhengzhou450001,China)

        The segment of Chinese word relies on the Class Analyzer.By analyzing the five built-in analyzers of Lucene.net, it was found that their segment were based on the single character of KeywordAnalyzer, StandardAnalyzer,StopAnalyzer,SimpleAnalyzer and WhitespaceAnalyzer.An improted segment kit for a better Chinese information disposal was added.By testing the three typical kits, ChineseAnalyzer,CJKAnalyzer and IKAnalyzer, it was found that IKAnalyzer which uses Dictionary participle and the positive and negative two-way search method, worked well.

        Lucene; Chinese word segment; Class Analyzer

        TP 391

        A

        1671-6841(2011)03-0073-05

        2010-12-10

        周拴龍(1964-),男,副教授,碩士,主要從事信息資源數(shù)字化、全文檢索等方面的研究,E-mail:shuanlong@zzu.edu.cn.

        猜你喜歡
        解析器鄭州大學歧義
        基于多解析器的域名隱私保護機制
        基于Wireshark的列控中心以太網(wǎng)通信協(xié)議解析器的研究與實現(xiàn)
        eUCP條款歧義剖析
        中國外匯(2019年12期)2019-10-10 07:26:58
        如何防御DNS陷阱?常用3種DNS欺騙手法
        一種基于無關(guān)DNS的通信隱私保護技術(shù)研究
        電子世界(2018年14期)2018-04-15 16:14:25
        《鄭州大學學報(理學版)》征稿簡則
        English Jokes: Homonyms
        鄭州大學學報(理學版)
        一面來自鄭州大學的錦旗
        中國民政(2016年9期)2016-05-17 04:51:34
        “那么大”的語義模糊與歧義分析
        亚洲日本va99在线| 国模精品一区二区三区| 99久久精品日本一区二区免费| 日韩AVAV天堂AV在线| 麻美由真中文字幕人妻| 亚洲一区二区成人在线视频| 成av人片一区二区久久| 欧美综合天天夜夜久久| 亚洲最大日夜无码中文字幕 | 美女被躁到高潮嗷嗷免费观看| 久久无码潮喷a片无码高潮| 男男性恋免费视频网站| 青草网在线观看| 国产激情视频高清在线免费观看| 日本添下边视频全过程| 亚洲精品综合欧美一区二区三区| 亚洲三区二区一区视频| 久久免费精品日本久久中文字幕| 观看在线人视频| 成人久久久久久久久久久| 久久无码人妻一区二区三区午夜 | 亚洲av中文无码乱人伦在线r▽| 一区二区久久不射av| 毛片色片av色在线观看| 人妻少妇精品中文字幕专区| 久久99精品久久久久久9蜜桃| 一本一本久久a久久精品| 粉嫩的18在线观看极品精品| 日韩人妻另类中文字幕| 欧美巨大巨粗黑人性aaaaaa| 伊人色网站| 久久狠狠髙潮曰十八女人| 亚洲国产精品日本无码网站 | 亚洲精品乱码久久麻豆| 国产欧美日韩一区二区加勒比| 欧美人与动人物牲交免费观看| 97人妻碰免费视频| 一区二区三区免费自拍偷拍视频| 加勒比hezyo黑人专区| 亚洲肥老太bbw中国熟女| 欧美丝袜激情办公室在线观看|