必威电竞|足球世界杯竞猜平台

中文分詞
來源:互聯(lián)網(wǎng)

中文分詞(Chinese Word Segmentation)指的是將一個漢字序列切分成一個個單獨的詞。分詞是將連續(xù)的字序列按照一定規(guī)范重新組合成詞序列的過程。中文分詞技術是由于中文在基本文法上的特殊性而存在的,其中一個重要特點是詞與詞組邊界的模糊性。中文分詞技術不僅應用于中文,也在英文處理中有應用,如手寫識別。

影響

中文分詞對于搜索引擎來說,最重要的并不是找到所有結(jié)果,因為在上百億的網(wǎng)頁中找到所有結(jié)果沒有太多的意義,沒有人能看得完,最重要的是把最相關的結(jié)果排在最前面,這也稱為相關度排序。中文分詞的準確與否,常常直接影響到對搜索結(jié)果的相關度排序。從定性分析來說,搜索引擎的分詞算法不同,詞庫的不同都會影響頁面的返回結(jié)果。

算法分類

現(xiàn)有的分詞算法可分為三大類:基于字符串匹配的分詞方法、基于理解的分詞方法和基于統(tǒng)計的分詞方法。按照是否與詞性標注過程相結(jié)合,又可以分為單純分詞方法和分詞與標注相結(jié)合的一體化方法。

字符匹配

這種方法又叫做機械分詞方法,它是按照一定的策略將待分析的漢字串與一個“充分大的”機器詞典中的詞條進行匹配,若在詞典中找到某個字符串,則匹配成功(識別出一個詞)。按照掃描方向的不同,串匹配分詞方法可以分為正向匹配和逆向匹配;按照不同長度優(yōu)先匹配的情況,可以分為最大(最長)匹配和最小(最短)匹配;常用的幾種機械分詞方法如下:

正向最大匹配法(由左到右的方向);

逆向最大匹配法(由右到左的方向);

最少切分(使每一句中切出的詞數(shù)最小);

雙向最大匹配法(進行由左到右、由右到左兩次掃描)

還可以將上述各種方法相互組合,例如,可以將正向最大匹配方法和逆向最大匹配方法結(jié)合起來構成雙向匹配法。由于漢語單字成詞的特點,正向最小匹配和逆向最小匹配一般很少使用。一般說來,逆向匹配的切分精度略高于正向匹配,遇到的歧義現(xiàn)象也較少。統(tǒng)計結(jié)果表明,單純使用正向最大匹配的錯誤率為1/169,單純使用逆向最大匹配的錯誤率為1/245。但這種精度還遠遠不能滿足實際的需要。實際使用的分詞系統(tǒng),都是把機械分詞作為一種初分手段,還需通過利用各種其它的語言信息來進一步提高切分的準確率。

一種方法是改進掃描方式,稱為特征掃描或標志切分,優(yōu)先在待分析字符串中識別和切分出一些帶有明顯特征的詞,以這些詞作為斷點,可將原字符串分為較小的串再來進機械分詞,從而減少匹配的錯誤率。另一種方法是將分詞和詞類標注結(jié)合起來,利用豐富的詞類信息對分詞決策提供幫助,并且在標注過程中又反過來對分詞結(jié)果進行檢驗、調(diào)整,從而極大地提高切分的準確率。

對于機械分詞方法,可以建立一個一般的模型,在這方面有專業(yè)的學術論文,這里不做詳細論述。

理解法

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

統(tǒng)計法

從形式上看,詞是穩(wěn)定的字的組合,因此在上下文中,相鄰的字同時出現(xiàn)的次數(shù)越多,就越有可能構成一個詞。因此字與字相鄰共現(xiàn)的頻率或概率能夠較好的反映成詞的可信度。可以對語料中相鄰共現(xiàn)的各個字的組合的頻度進行統(tǒng)計,計算它們的互現(xiàn)信息。定義兩個字的互現(xiàn)信息,計算兩個漢字X、Y的相鄰共現(xiàn)概率。互現(xiàn)信息體現(xiàn)了漢字之間結(jié)合關系的緊密程度。當緊密程度高于某一個閾值時,便可認為此字組可能構成了一個詞。這種方法只需對語料中的字組頻度進行統(tǒng)計,不需要切分詞典,因而又叫做無詞典分詞法或統(tǒng)計取詞方法。但這種方法也有一定的局限性,會經(jīng)常抽出一些共現(xiàn)頻度高、但并不是詞的常用字組,例如“這一”“之一”“有的”“我的”“許多的”等,并且對常用詞的識別精度差,時空開銷大。實際應用的統(tǒng)計分詞系統(tǒng)都要使用一部基本的分詞詞典(常用詞詞典)進行串匹配分詞,同時使用統(tǒng)計方法識別一些新的詞,即將串頻統(tǒng)計和串匹配結(jié)合起來,既發(fā)揮匹配分詞切分速度快、效率高的特點,又利用了無詞典分詞結(jié)合上下文識別生詞、自動消除歧義的優(yōu)點。

另外一類是基于統(tǒng)計機器學習的方法。首先給出大量已經(jīng)分詞的文本,利用統(tǒng)計機器學習模型學習詞語切分的規(guī)律(稱為訓練),從而實現(xiàn)對未知文本的切分。我們知道,漢語中各個字單獨作詞語的能力是不同的,此外有的字常常作為前綴出現(xiàn),有的字卻常常作為后綴(“者”“性”),結(jié)合兩個字相臨時是否成詞的信息,這樣就得到了許多與分詞有關的知識。這種方法就是充分利用漢語組詞的規(guī)律來分詞。這種方法的最大缺點是需要有大量預先分好詞的語料作支撐,而且訓練過程中時空開銷極大。

到底哪種分詞算法的準確度更高,目前并無定論。對于任何一個成熟的分詞系統(tǒng)來說,不可能單獨依靠某一種算法來實現(xiàn),都需要綜合不同的算法。例如,海量科技的分詞算法就采用“復方分詞法”,所謂復方,就是像中西醫(yī)結(jié)合般綜合運用機械方法和知識方法。對于成熟的中文分詞系統(tǒng),需要多種算法綜合處理問題。

技術難點

有了成熟的分詞算法,是否就能容易的解決中文分詞的問題呢?事實遠非如此。中文是一種十分復雜的語言,讓計算機理解中文語言更是困難。在中文分詞過程中,有兩大難題一直沒有完全突破。

歧義識別

歧義是指同樣的一句話,可能有兩種或者更多的切分方法。主要的歧義有兩種:交集型歧義和組合型歧義,例如:表面的,因為“表面”和“面的”都是詞,那么這個短語就可以分成“表面 的”和“表 面的”。這種稱為交集型歧義(交叉歧義)。像這種交集型歧義十分常見,前面舉的“和服”的例子,其實就是因為交集型歧義引起的錯誤。“化妝和服裝”可以分成“化妝 和 服裝”或者“化妝 和服 裝”。由于沒有人的知識去理解,計算機很難知道到底哪個方案正確。

交集型歧義相對組合型歧義來說是還算比較容易處理,組合型歧義就必須根據(jù)整個句子來判斷了。例如,在句子“這個門把手壞了”中,“把手”是個詞,但在句子“請把手拿開”中,“把手”就不是一個詞;在句子“將軍任命了一名中將”中,“中將”是個詞,但在句子“產(chǎn)量三年中將增長兩倍”中,“中將”就不再是詞。

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

新詞識別

命名實體(人名、地名)、新詞,專業(yè)術語稱為未登錄詞。也就是那些在分詞詞典中沒有收錄,但又確實能稱為詞的那些詞。最典型的是人名,人可以很容易理解。句子“王軍虎去廣州市了”中,“王軍虎”是個詞,因為是一個人的名字,但要是讓計算機去識別就困難了。如果把“王軍虎”做為一個詞收錄到字典中去,全世界有那么多名字,而且每時每刻都有新增的人名,收錄這些人名本身就是一項既不劃算又巨大的工程。

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

應用

在自然語言處理技術中,中文處理技術比西文處理技術要落后一大截,許多西文的處理方法中文不能直接采用,就是因為中文必需有分詞這道工序。中文分詞是其他中文信息處理的基礎,搜索引擎只是中文分詞的一個應用。其他的比如機器翻譯(MT)、語音合成、自動分類、自動摘要、自動校對等等,都需要用到分詞。因為中文需要分詞,可能會影響一些研究,但同時也為一些企業(yè)帶來機會,因為國外的計算機處理技術要想進入中國市場,首先也是要解決中文分詞問題。

分詞準確性對搜索引擎來說十分重要,但如果分詞速度太慢,即使準確性再高,對于搜索引擎來說也是不可用的,因為搜索引擎需要處理數(shù)以億計的網(wǎng)頁,如果分詞耗用的時間過長,會嚴重影響搜索引擎內(nèi)容更新的速度。因此對于搜索引擎來說,分詞的準確性和速度,二者都需要達到很高的要求。研究中文分詞的大多是科研院校,清華大學北京大學哈爾濱工業(yè)大學、中科院、北京語言大學山西大學、東北大學、IBM研究院、微軟亞洲研究院等都有自己的研究隊伍,而真正專業(yè)研究中文分詞的商業(yè)公司除了海量以外,幾乎沒有了。科研院校研究的技術,大部分不能很快產(chǎn)品化,而一個專業(yè)公司的力量畢竟有限,看來中文分詞技術要想更好的服務于更多的產(chǎn)品,還有很長一段路。

常見項目

word分詞

word分詞是一個Java實現(xiàn)的分布式的中文分詞組件,提供了多種基于詞典的分詞算法,并利用ngram模型來消除歧義。能準確識別英文、數(shù)字,以及日期、時間等數(shù)量詞,能識別人名、地名、組織機構名等未登錄詞。能通過自定義配置文件來改變組件行為,能自定義用戶詞庫、自動檢測詞庫變化、支持大規(guī)模分布式環(huán)境,能靈活指定多種分詞算法,能使用refine功能靈活控制分詞結(jié)果,還能使用詞性標注、同義標注、反義標注、拼音標注等功能。同時還無縫和Lucene、Solr、elasticsearch、Luke集成。

MFSOU中文分詞PHP擴展

一個PHP函數(shù)實現(xiàn)中文分詞。使分詞更容易,使用如下圖:

SCWS

Hightman開發(fā)的一套基于詞頻詞典的機械中文分詞引擎,它能將一整段的漢字基本正確的切分成詞。采用的是采集的詞頻詞典,并輔以一定的專有名稱,人名,地名,數(shù)字年代等規(guī)則識別來達到基本分詞,經(jīng)小范圍測試大概準確率在 90% ~ 95% 之間,已能基本滿足一些小型搜索引擎、關鍵字提取等場合運用。45Kb左右的文本切詞時間是0.026秒,大概是1.5MB文本/秒,支持PHP4和PHP 5。

FudanNLP

FudanNLP主要是為中文自然語言處理而開發(fā)的工具包,也包含為實現(xiàn)這些任務的機器學習算法和數(shù)據(jù)集。本工具包及其包含數(shù)據(jù)集使用LGPL3.0許可證。開發(fā)語言為Java。功能包括中文分詞等,不需要字典支持。

ICTCLAS

這是最早的中文開源分詞項目之一,ICTCLAS在國內(nèi)973專家組組織的評測中活動獲得了第一名,在第一屆國際中文處理研究機構SigHan組織的評測中都獲得了多項第一名。ICTCLAS3.0分詞速度單機996KB/s,分詞精度98.45%,API不超過200KB,各種詞典數(shù)據(jù)壓縮后不到3M.ICTCLAS全部采用C/C++編寫,支持LinuxFreeBSD及Windows系列操作系統(tǒng),支持C/C++、C#、Delphi、Java等主流的開發(fā)語言。

HTTPCWS

HTTPCWS 是一款基于HTTP協(xié)議的開源中文分詞系統(tǒng),目前僅支持Linux系統(tǒng)。HTTPCWS 使用“ICTCLAS 3.0 2009共享版中文分詞算法”的API進行分詞處理,得出分詞結(jié)果。HTTPCWS 將取代之前的 PHPCWS 中文分詞擴展。

CC-CEDICT

一個中文詞典開源項目,提供一份以漢語拼音為中文輔助的漢英辭典,截至2009年2月8日,已收錄82712個單詞。其詞典可以用于中文分詞使用,而且不存在版權問題。Google Chrome中文版就是使用的這個詞典進行中文分詞的。

IK

IKAnalyzer是一個開源的,基于java語言開發(fā)的輕量級的中文分詞工具包。從2006年12月推出1.0版開始,IKAnalyzer已經(jīng)推出了3個大版本。最初,它是以開源項目Luence為應用主體的,結(jié)合詞典分詞和文法分析算法的中文分詞組件。新版本的IKAnalyzer3.0則發(fā)展為面向Java的公用分詞組件,獨立于Lucene項目,同時提供了對Lucene的默認優(yōu)化實現(xiàn)。

Paoding

Paoding(庖丁解牛分詞)基于Java的開源中文分詞組件,提供lucene和solr 接口,具有極高效率和高擴展性。引入隱喻,采用完全的面向?qū)ο笤O計,構思先進。

高效率:在PIII 1G內(nèi)存?zhèn)€人機器上, 1秒可準確分詞 100萬漢字。

采用基于不限制個數(shù)的詞典文件對文章進行有效切分,使能夠?qū)υ~匯分類定義。

能夠?qū)ξ粗脑~匯進行合理解析。

僅支持Java語言。

MMSEG4J

MMSEG4J基于Java的開源中文分詞組件,提供lucene和solr 接口:

1.mmseg4j 用 Chih-Hao Tsai 的 MMSeg 算法實現(xiàn)的中文分詞器,并實現(xiàn) lucene 的 analyzer 和 solr 的TokenizerFactory 以方便在Lucene和Solr中使用。

2.MMSeg 算法有兩種分詞方法:Simple和Complex,都是基于正向最大匹配。Complex 加了四個規(guī)則過慮。官方說:詞語的正確識別率達到了 98.41%。mmseg4j 已經(jīng)實現(xiàn)了這兩種分詞算法。

盤古分詞

盤古分詞是一個基于.net 平臺的開源中文分詞組件,提供lucene(.net 版本) 和HubbleDotNet的接口

高效:Core Duo 1.8 GHz 下單線程 分詞速度為 390K 字符每秒

準確:盤古分詞采用字典和統(tǒng)計結(jié)合的分詞算法,分詞準確率較高。

功能:盤古分詞提供中文人名識別,簡繁混合分詞,多元分詞,英文詞根化,強制一元分詞,詞頻優(yōu)先分詞,停用詞過濾,英文專名提取等一系列功能。

Jcseg

jcseg是使用Java開發(fā)的一個中文分詞器,使用流行的mmseg算法實現(xiàn)。

1。mmseg四種過濾算法,分詞準確率達到了98.4%以上。

2。支持自定義詞庫。在lexicon文件夾下,可以隨便添加/刪除/更改詞庫和詞庫內(nèi)容,并且對詞庫進行了分類,詞庫整合了《現(xiàn)代漢語詞典(第7版)》和cc-cedict辭典。

3。詞條拼音和同義詞支持,jcseg為所有詞條標注了拼音,并且詞條可以添加同義詞集合,jcseg會自動將拼音和同義詞加入到分詞結(jié)果中。

4。中文數(shù)字和分數(shù)識別,例如:"四五十個人都來了,三十分之一。"中的"四五十"和"三十分之一",并且jcseg會自動將其轉(zhuǎn)換為對應的阿拉伯數(shù)字。

5。支持中英混合詞的識別。例如:B超,x射線。

6。支持基本單字單位的識別,例如2012年。

7。良好的英文支持,自動識別電子郵件,網(wǎng)址,分數(shù),小數(shù),百分數(shù)。

8。智能圓角半角轉(zhuǎn)換處理。

9。特殊字母識別:例如:Ⅰ,Ⅱ

10。特殊數(shù)字識別:例如:①,⑩

11。配對標點內(nèi)容提取:例如:最好的Java書《java編程思想》,‘暢想杯黑客技術大賽’,被《,‘,“,『標點標記的內(nèi)容。

12。智能中文人名識別。中文人名識別正確率達94%以上。

jcseg佩帶了jcseg.properties配置文檔,使用文本編輯器就可以自主的編輯其選項,配置適合不同應用場合的分詞應用。

friso

friso是使用c語言開發(fā)的一個中文分詞器,使用流行的mmseg算法實現(xiàn)。完全基于模塊化設計和實現(xiàn),可以很方便的植入到其他程序中,例如:MySQLPHP等。并且提供了一個php中文分詞擴展robbe。

1。只支持UTF-8編碼。【源碼無需修改就能在各種平臺下編譯使用,加載完20萬的詞條,內(nèi)存占用穩(wěn)定為14M。】。

2。mmseg四種過濾算法,分詞準確率達到了98.41%。

3。支持自定義詞庫。在dict文件夾下,可以隨便添加/刪除/更改詞庫和詞庫詞條,并且對詞庫進行了分類。

4。詞庫使用了friso的Java版本jcseg的簡化詞庫。

5。支持中英混合詞的識別。例如:c語言,IC卡。

7。很好的英文支持,電子郵件,網(wǎng)址,小數(shù),分數(shù),百分數(shù)。

8。支持阿拉伯數(shù)字基本單字單位的識別,例如2012年,5噸,120斤。

9。自動英文圓角/半角,大寫/小寫轉(zhuǎn)換。

參考資料 >

中文分詞.有道.2024-10-25

中文分詞.有道.2024-10-25

【分詞】中文分詞的古今中外,你想知道的都在這里.微信公眾平臺.2024-10-25

生活家百科家居網(wǎng)