中文分詞的一些研究記錄

來源:互聯網
上載者:User

    這兩天想瞭解一下中文分詞的一些技術,因此就研究了一把,也就是瞭解了一些皮毛,記錄下來,首先申明我是外行,請勿用專業標準來要去我。

    中文分詞,主要是三個流派,一是詞典派,一是統計派,一是規則派。比如“我愛北京天安門”,詞典派就是去查詞典,詞典中中有“我”,“愛”,“北京”和“天安門”,就分出來了,簡單吧。詞典派的演算法一般是最大匹配演算法,比如“毛澤東北京華煙雲”,正向最大匹配就是“毛澤東 北京 華煙雲”,逆向最大匹配是“毛澤 東北 京華煙雲”。還可以雙向“毛澤東 北 京華煙雲”。還有其他演算法。統計派呢,就複雜點了,中心思想就是“由字組詞”,研究字組詞的機率,比如“我”,單獨出現的機率是“50%”,“我愛”組合出現的機率是“10%”,那麼“我愛”就不是一個詞。比如“北京”,“北京”在很多文章中老放在一起,那麼就應該在一起,是一個地名。一個是規則派,規則派我沒怎麼看,好像單獨出現效果不好,一般大家都不用它。

    說起優劣,詞典派演算法簡單,無非是查查查,效能也好,普通電腦,一秒幾百K甚至上M都可能。詞典派的一個主要問題是,詞典中沒有咋辦,沒有就沒法分啊,而且互連網上大家創造力驚人,新詞層出不窮。而統計派,在識別新詞方面,尤其是人名、地名、機構、日期、數量詞方面特別管用,你詞典中能把所有人名都放進去麼,而且,詞典大了,有歧義啊。統計派,和RPG遊戲類似,得滿滿來培養,就是訓練,而且分詞的時候效能也不大好。

    分詞演算法,網上也挺多,如果兼顧效能、準確性,還是c++寫的比較好。

 

中科院的ICTCLAS分詞。

這是官方的源碼下載網站

http://ictclas.org/Down_OpenSrc.asp

有C#版本,是呂振宇做做的,分析文章列表如下:

http://www.cnblogs.com/zhenyulu/category/85598.html

做.NET的朋友可以訂閱呂老師的部落格,在.NET方面很有研究。

JAVA版本的,是張新波做的,下面是分析文章:

http://blog.csdn.net/sinboy/category/207165.aspx

把文章看完,把代碼看完,你就是專家了。ICTCLAS的分詞,只支援GBK(GB2312)字元集,所以如果是UTF-8的,您還得自己轉一下,本來我想改寫成支援UTF-8的,沒時間搞了。

下面是分完的結果:

---------------------------------------------------

視頻/n  :/w  證監會/j  發布/v  創業/vn  板/n  IPO/nx  辦法/n   5/m  月/n  1/m  日/q  起/f  實施/v    媒體/n  來源/n  :/w  第一/m  財經/n  《/w  早市/n  導航/vn  》/w  新華/nz  網/n  北京/ns  3/m  月/n  31/m  日/q  電/n  (/w  記者/n  趙/nr  曉輝/nr  、/w  陶/nr  俊潔/nr  )/w  中國證監會/n  31/m  日/d  發布/v  《/w  首/d  次/a  公開/a  發行/v  股票/n  並/c  在/c  創業/nz  板/a  上/f  市/n  管理/v  暫行/b  辦法/n  》/w  ,/w  辦法/n  自/a  5/m  月/n  1/m  日/d  起/f  實施/u  。/w  這/r  意味著/v  籌備/v  十/m  餘/m  年/a  之/a  久/a  的/b  創業/nz  板/a  有望/v  於/d  5/m  月/n  1/m  日/d  起/f  正式/a  開啟/v  。/w  辦法/n  共/d  分/v  為/p  6/m  章/q  58/m  條/q  ,/w  對/p  擬/v  到/v  創業/v  板/ng  上市/v  企業/n  的/u  發行/vn  條件/n  、/w  發行/v  程式/n  、/w  資訊/n  披露/vn  、/w  監督/vn  管理/vn  和/c  法律/n  責任/n  等/u  方面/n  進行/v  了/u  詳細/a  規定/n  。/w  根據/p  規定/n  ,/w  到/v  創業/v  板/ng  上/f  市/n  的/u  企業/n  應當/v  是/v  依法/d  設立/v  且/c  持續/vd  經營/v  三/m  年/q  以上/f  的/u  股份/n  有限公司/n  ,/w  最近/t  兩/m  年/q  連續/a  盈利/n  ,/w  最近/t  兩/m  年/q  淨利潤/n  累計/v  不/d  少於/v  1000/m  萬/m  元/q  ,/w  且/c  持續/vd  增長/v  ;/w  或者/c  最近/t  一/m  年/q  盈利/n  ,/w  且/c  淨利潤/n  不/d  少於/v  500/m  萬/m  元/q  ,/w  最近/t  一/m  年/q  營業/vn  收入/n  不/d  少於/v  5000/m  萬/m  元/q  ,/w  最近/t  兩/m  年/q  營業/vn  收入/n  增長率/n  均/d  不/d  低於/v  30%/m  。/w  企業/n  發行/v  後/f  的/u  股本/n  總額/n  不/d  少於/v  3000/m  萬/m  元/q  。/w

ICTCLAS:235.109000 ms

---------------------------------------------------

 

寫完了,又發現一個資料挺全的部落格,刀劍笑的:

http://blog.csdn.net/jyz3051/category/356808.aspx?PageNumber=1

 

還有一個分詞是,李沫南寫的,libmmseg。

李沫南這個傢伙,如果我沒記錯的話,我和他共事過,想不到研究分詞,還能遇到故人。

http://www.coreseek.com/

我簡單介紹一下:sphinx。sphinx是俄羅斯人寫的開源的針對資料庫的一款索引產品。如果想做中小規模的站內搜尋,用它就沒錯了。特色是比Mysql的全文索引快(廢話),另外純天然的支援資料庫(可以內嵌到Mysql中做為一個引擎)。想研究的朋友可以看這裡:http://www.sphinxsearch.com/ 。再插一句話,本來對於sphinx我是寫過一篇教程的,但是csdn伺服器抽風,所以就沒了,我也不寫了。

還是回到分詞吧,libmmseg分詞方法可以看下面的部落格文章,此部落格也是李沫南的部落格。

http://nzinfo.spaces.live.com/Blog/cns!67694E0B61E3E8D2!344.entry

下面是分完的結果

---------------------------------------------------

$ mmseg -d /home/lhb/workspace/mmseg/dict/ /home/lhb/soft/text/01.txt

/x 視頻/x :/x 證監會/x 發布/x 創業/x 板/x IPO/x 辦法/x  /x 5/x 月/x 1/x 日/x 起/x 實施/x  /x  /x 媒體/x 來源/x :/x 第一/x 財經/x 《/x 早市/x 導航/x 》/x
 /x  /x 新華/x 網/x 北京/x 3/x 月/x 31/x 日/x 電/x (/x 記者/x 趙/x 曉/x 輝/x 、/x 陶/x 俊/x 潔/x )/x 中國/x 證監會/x 31/x 日/x 發布/x 《/x 首次/x 公開/x 發行/x 股票/x 並/x 在/x 創業/x 板/x 上市/x 管理/x 暫行/x 辦法/x 》/x ,/x 辦法/x 自/x 5/x 月/x 1/x 日/x 起/x 實施/x 。/x 這/x 意味著/x 籌備/x 十/x 餘年/x 之/x 久/x 的/x 創業/x 板/x 有望/x 於/x 5/x 月/x 1/x 日/x 起/x 正式/x 開啟/x 。/x
 /x  /x 辦/x 法共/x 分為/x 6/x 章/x 58/x 條/x ,/x 對/x 擬/x 到/x 創業/x 板/x 上市/x 企業/x 的/x 發行/x 條件/x 、/x 發行/x 程式/x 、/x 資訊/x 披露/x 、/x 監督/x 管理/x 和/x 法律/x 責任/x 等/x 方面/x 進行/x 了/x 詳細/x 規定/x 。/x
 /x  /x 根據/x 規定/x ,/x 到/x 創業/x 板/x 上市/x 的/x 企業/x 應當/x 是/x 依法/x 設立/x 且/x 持續/x 經營/x 三/x 年/x 以上/x 的/x 股份/x 有限公司/x ,/x 最近/x 兩/x 年/x 連續/x 盈利/x ,/x 最近/x 兩/x 年/x 淨利潤/x 累計/x 不/x 少於/x 1000/x 萬元/x ,/x 且/x 持續/x 增長/x ;/x 或者/x 最近/x 一/x 年/x 盈利/x ,/x 且/x 淨利潤/x 不/x 少於/x 500/x 萬元/x ,/x 最近/x 一/x 年/x 營業/x 收入/x 不/x 少於/x 5000/x 萬元/x ,/x 最近/x 兩/x 年/x 營業/x 收入/x 增長率/x 均/x 不/x 低於/x 30/x %/x 。/x 企業/x 發行/x 後/x 的/x 股本/x 總額/x 不/x 少於/x 3000/x 萬元/x 。/x
Word Splite took: 22 ms.
---------------------------------------------------

 

ICTCLAS和libmmseg的優劣,前者效果要好一些,後者速度快一些。前者效果好的原因是對於人名、地名有一些規則在裡頭。後者呢,這些好像沒有。速度方面,後者比前者快一個數量級吧。另,前者的UTF-8支援需要額外處理。

 

對於統計派,也有一些資料可以參考。

趙海的首頁:

http://bcmi.sjtu.edu.cn/~zhaohai/index-cn.html

趙海的部落格

http://cwseg.spaces.live.com/

現在統計派都比較流行CRF(Conditon Random Field)條件隨機場/域的方法,看字都認識,合起來就不知道啥意思了。

據說HMM(Hidden Markov Model 馬爾可夫模型),MEMM(最大熵馬爾科夫模型)過時了。關於這幾個概念,可以參考:http://wshxzt.ycool.com/post.1769559.html。

工具包和使用上,下面連結:

CRF 理論、工具包的使用及在NE 上的應用

基於CRF的中文分詞

當然還有一些,上google搜CRF就可以了。

一款好的分詞,估計需要用到綜合的辦法,詞典是必須的,新詞識別也是必須的,歧義消除也是必須的,因此就要博採眾長,才能再效能、準確率、召回率上找到平衡。

 

寫完這篇文章,發現了一幫哥們基於CRF++做的分詞開源項目,bamboo,哈哈

http://groups.google.com/group/nlpbamboo

http://code.google.com/p/nlpbamboo/

有興趣可以研究一下哦,那裡聚了不少人。

1)下載bamboo,編譯安裝後,

2)下載已經訓練過的模型

http://code.google.com/p/nlpbamboo/downloads/list

下載index.tar.bz2,解壓到/opt/bamboo/index下

你要是想自己跑,可以下載

people-daily-bamboo-edition.txt.gz 人民日報98年一月語料庫(bamboo修改版), 將“姓”和“名”合并為一個切分單位. Dec 02 3.0 MB 470

3)$cd /opt/bamboo/bin/

lhb@lhb-vm-desktop:/opt/bamboo/bin$ ./bamboo -p crf_seg < /home/lhb/soft/text/01.txt
parsing '-'...

----------------------------------------
視頻 : 證監會 發布 創業板 IPO 辦法 5月 1日 起 實施 媒體 來源 : 第一 財經 《 早市 導航 》
新華網 北京 3月 31日 電 ( 記者 趙曉輝 、 陶俊潔 ) 中國 證監會 31日 發布 《 首 次 公開 發行 股票 並 在 創業板 上市 管理 暫行 辦法 》 , 辦法 自 5月 1日 起 實施 。 這 意味著 籌備 十 餘 年 之 久 的 創業板 有望於 5月 1日 起 正式 開啟 。
辦法 共 分為 6 章 58 條 , 對 擬 到 創業板 上市 企業 的 發行 條件 、 發行 程式 、 資訊 披露 、 監督 管理 和 法律 責任 等 方面 進行 了 詳細 規定 。
根據 規定 , 到 創業板 上市 的 企業 應當 是 依法 設立 且 持續 經營 三 年 以上 的 股份 有限公司 , 最近 兩 年 連續 盈利 , 最近 兩 年 淨利潤 累計 不 少於 1000萬 元 , 且 持續 增長 ; 或者 最近 一 年 盈利 , 且 淨利潤 不 少於 500萬 元 , 最近 一 年 營業 收入 不 少於 5000萬 元 , 最近 兩 年 營業 收入 增長率 均 不 低於 30% 。 企業 發行 後 的 股本 總額 不 少於 3000萬 元 。
consumed time: 284 ms

---------------------------------------

 

基於CRF++訓練的方法,見我的另外一篇:CRF++分詞指南

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.