国产一区二区精品久久_蜜桃狠狠狠狠狠狠狠狠狠_午夜视频精品_激情都市一区二区

當(dāng)前位置:首頁(yè) > 網(wǎng)站舊欄目 > 學(xué)習(xí)園地 > 設(shè)計(jì)軟件教程 > 采訪IK Analyzer 中文分詞器開(kāi)源項(xiàng)目作者林良益(十三)

采訪IK Analyzer 中文分詞器開(kāi)源項(xiàng)目作者林良益(十三)
2010-01-14 23:28:07  作者:  來(lái)源:
眾所周知,全文搜索幾乎已經(jīng)成為每個(gè)網(wǎng)站的必須提供的基本功能之一,用Lucene構(gòu)造一個(gè)“索引-查詢”的應(yīng)用是常見(jiàn)的java解決方案,目前由linliangyi2007創(chuàng)立的IK Analyzer是最好的Lucene 中文分詞器之一。

首先介紹一下IKAnalyzer:IKAnalyzer是一個(gè)開(kāi)源的,基于java語(yǔ)言開(kāi)發(fā)的輕量級(jí)的中文分詞工具包。從2006年12月推出1.0版開(kāi)始,IKAnalyzer 已經(jīng)推出了3個(gè)大版本。最初,它是以開(kāi)源項(xiàng)目Luence為應(yīng)用主體的,結(jié)合詞典分詞和文法分析算法的中文分詞組件。最近剛剛發(fā)布了 3.1.1Stable穩(wěn)定版本,新版本的IKAnalyzer 則發(fā)展為面向Java的公用分詞組件,獨(dú)立于Lucene項(xiàng)目,同時(shí)提供了對(duì)Lucene的默認(rèn)優(yōu)化實(shí)現(xiàn)。

linliangyi2007 (林良益) 是一位資深的Java開(kāi)發(fā)者和優(yōu)秀開(kāi)源開(kāi)發(fā)者, JavaEye非常榮幸的采訪了他。

linliangyi2007 (林良益)  博客:http://linliangyi2007.javaeye.com/

歡迎大家推薦更多開(kāi)源項(xiàng)目給我們,支持中國(guó)的開(kāi)源項(xiàng)目發(fā)展,發(fā)站內(nèi)短信給JavaEye管理員或者發(fā)信到webmaster@javaeye.com,謝謝。

采訪IK Analyzer 中文分詞器開(kāi)源項(xiàng)目作者linliangyi2007 Top

JavaEye:1. hi,linliangyi2007 你好,非常榮幸能夠采訪你。你能介紹一下IK Analyzer 中文分詞器開(kāi)源項(xiàng)目是如何創(chuàng)立的嗎?

linliangyi2007:好的,這個(gè)要從和lucene的結(jié)緣開(kāi)始說(shuō)起了,大概05年左右,開(kāi)始是為了完成一個(gè)電信的信息管理系統(tǒng),里面需要用到全文檢索的。后來(lái)發(fā)現(xiàn)對(duì)中文搜索,lucene沒(méi)有很好的分詞支持。當(dāng)時(shí)我發(fā)現(xiàn)最棒的就是車東的CJK了,應(yīng)該說(shuō),他的blog文章對(duì)我的IK Analyzer 誕生起了很大的影響。 后來(lái),我們公司開(kāi)始做一個(gè)基于web gis的本地信息搜索網(wǎng)站的互聯(lián)網(wǎng)應(yīng)用,這就促使我萌生了自己寫一個(gè)中文分詞器的想法。最開(kāi)始是基于對(duì)詞典的匹配,后來(lái)對(duì)詞典中未出現(xiàn)的詞語(yǔ)就有了進(jìn)一步處理的想法,IK Analyzer 的設(shè)計(jì)理念也是一步一步形成的。這期間也結(jié)合了很多互聯(lián)網(wǎng)用戶的搜索體驗(yàn)的反饋。

有趣的是,我的兩位好朋友,也就是paoding分詞器的作者和JE-MMAnalyzer分詞器的作者,都在基本相同的時(shí)期開(kāi)始了各自的分詞器研究。  三個(gè)人也就熱火朝天的討論開(kāi)了,有交流,也有比較。因?yàn)橛辛诉@樣一個(gè)圈子和氛圍,也使的IK分詞器一直從06年底開(kāi)始,不斷的更新到現(xiàn)在。 大家的處理速度,算法的優(yōu)化,還有詞典的整理一直在持續(xù)。當(dāng)然,由于大家都有自己的工作(吃飯問(wèn)題很實(shí)際啊),期間都有一段時(shí)間,暫停了項(xiàng)目的發(fā)展,IK2.0是在07年初發(fā)布的,3.0則到了09年,最近剛剛發(fā)布了 3.1.1Stable穩(wěn)定版本。


JavaEye:2. IK Analyzer 中文分詞器項(xiàng)目的特點(diǎn)和應(yīng)用的主要方面是哪些?新版本做了哪些修正?

linliangyi2007:IK Analyzer 是更多的考慮了互聯(lián)網(wǎng)用戶在產(chǎn)品及名址信息搜索這塊的應(yīng)用,IK特別適用于搜索商家,產(chǎn)品,名址,如商品交易,美食,娛樂(lè),電子地圖等,因?yàn)樗腔谶@樣的應(yīng)用誕生的。IK在一開(kāi)始的設(shè)計(jì)的時(shí)候,它有一個(gè)隱形的目標(biāo),是對(duì)數(shù)詞,量詞,專有名詞的增強(qiáng)處理,這是由于它的基于web gis搜索的需求定位決定的。 如果持續(xù)使用IK的用戶,應(yīng)該會(huì)發(fā)現(xiàn),IK的早期版本對(duì)數(shù)量詞,專有名詞的切分,是整體輸出的,舉個(gè)例子:“2009年12月”,在IK1.x版本的時(shí)候,是作為一個(gè)詞元輸出的,對(duì)未知的路名,人名,商店,公司名稱都是如此,因此很多用戶說(shuō),IK早先版本的分詞效果“看起來(lái)”特別好,注意,我這里說(shuō)的是“看起來(lái)", 但搜索起來(lái)就未必了。

由于lucene搜索的倒排搜索結(jié)構(gòu),決定了lucene搜索的速度優(yōu)勢(shì)在于“全詞匹配”而非like匹配,這就造成了過(guò)于粗粒度的輸出分詞結(jié)果好看,但用戶經(jīng)常搜索不到東西,在飽受公司客戶“無(wú)情的”打擊之后,IK后續(xù)的版本對(duì)此做了很大的改進(jìn)。后期版本的切分越來(lái)越細(xì)碎,越來(lái)越不“漂亮”了,這點(diǎn)在3.0尤其明顯,但保證了用戶在分詞搜索中的召回率。問(wèn)題是,這點(diǎn)的改進(jìn)會(huì)帶來(lái)另一方面的負(fù)面影響,詞打得太散,搜索的準(zhǔn)確度下降了,為此IK3.0從問(wèn)題的另一角度來(lái)提供了相對(duì)的解決方案。

JavaEye:3. 能否詳細(xì)介紹一下這個(gè)解決方案?

linliangyi2007:好的,使用lucene搜索的開(kāi)發(fā)者應(yīng)該注意到,分詞器在其中扮演著兩個(gè)角色:一個(gè)是在lucene建立索引庫(kù)時(shí)候,對(duì)文檔進(jìn)行切分。這時(shí)候,細(xì)粒度的切分,保證信息能盡可能的被“查找到”;另一個(gè)使用分詞器的過(guò)程,實(shí)在用戶輸入搜索關(guān)鍵字的過(guò)程。分詞器要多關(guān)鍵字進(jìn)行分詞,而后同索引匹配。 IK3.0就在這個(gè)地方為用戶提供了一個(gè)相對(duì)優(yōu)化的搜索方式,一個(gè)是IKQueryParser,這個(gè)也是我在blog中吐血推薦的, 呵呵。對(duì)于大多普通的搜索應(yīng)用,它能為用戶提供不錯(cuò)的搜索關(guān)鍵字組合。

舉個(gè)例子,用戶搜索“永和服裝飾品”,對(duì)于分詞器而言,它會(huì)切分出“永和”“和服”“服裝”“裝飾”“飾品”等。但分詞器沒(méi)有判斷的能力(實(shí)際上,目前所有的分詞器,即便有部分排除歧義的功能,也不完善),如果強(qiáng)制分詞器進(jìn)行排歧義處理,則可能會(huì)得出完全錯(cuò)誤的結(jié)果。IK則是嘗試給出所有可能的方案,在IKQueryparser 中,它不是簡(jiǎn)單的返回所有分詞結(jié)果的組合,而是建立起一個(gè)分詞樹(shù),將有可能的組合放在一起,它的輸出會(huì)類似于這樣:(“永和” && “服裝” &&  “飾品”) || (“和服”&& “裝飾”), 通過(guò)這個(gè)搜索邏輯去索引中進(jìn)行匹配,在現(xiàn)實(shí)中,我們完全可以假設(shè)只有合理的詞元會(huì)搭配在一起, 那么,不合理的搭配,它的就可能不會(huì)出現(xiàn),或者即使出現(xiàn),但匹配度較低。 因此,IK3.0又給出了一個(gè)IKSimilarity的相似度評(píng)估器,來(lái)提高多詞匹配的優(yōu)先度,這樣的搜索,就能形成高匹配度的文檔,出現(xiàn)在前面,低匹配度的在后面,不合理的匹配就不出現(xiàn)的結(jié)果。這個(gè)也是自己的項(xiàng)目實(shí)戰(zhàn)經(jīng)歷了。

IKSimilarity是實(shí)現(xiàn)了lucene Similarity的接口的,在進(jìn)行搜索前,使用IndexSearch的API進(jìn)行設(shè)置就好,這個(gè)在IK3.0的DEMO中有詳細(xì)的例子說(shuō)明,至此,IK3.0在盡可能保證文檔召回率的前提下,實(shí)現(xiàn)了相關(guān)文檔搜索匹配度的優(yōu)先。當(dāng)然,這不能絕對(duì)意義上杜絕不正確信息被搜索出來(lái)(PS:就目前各大主要搜索引擎的實(shí)現(xiàn)也是這樣的)。在分詞器的設(shè)計(jì)中,應(yīng)該說(shuō)不盡是IK,其他分詞器的作者也是絞盡腦汁的想了很多, 但目前還沒(méi)有特別完美的方案。對(duì)IK而言,我也收到了來(lái)至各方面用戶的反饋,有用在互聯(lián)網(wǎng)搜索領(lǐng)域的,有用于企業(yè)內(nèi)部搜索的,還有做語(yǔ)言分析的,但就我個(gè)人的感覺(jué)而言,目前很難在一個(gè)分詞器中,實(shí)現(xiàn)多種目標(biāo)。因此,我很贊同paoding的作者說(shuō)的一句話,沒(méi)有最好的分詞器,只有最適合于某個(gè)領(lǐng)域的分詞器。

JavaEye:4. 你能分析和比較一下類似的其他中文分詞器項(xiàng)目嗎?

linliangyi2007:簡(jiǎn)單說(shuō)一下吧:

JE-MManalyzer:它的算法具有歧義分析,比較適合做垂直搜索和信息挖掘。他的中文名稱是“極易”,開(kāi)發(fā)者的理念是-簡(jiǎn)單即是美。

中科院的分詞器:中科院的分詞器很牛,其切分結(jié)果明顯基于語(yǔ)義分析。

paoding:paoding的結(jié)構(gòu)設(shè)計(jì)的非常靈活,適合于對(duì)其進(jìn)行開(kāi)源改造。

mmseg4j:?jiǎn)螐膍mseg4j 的項(xiàng)目介紹上看,它是一個(gè)很純粹的基于詞典分詞的實(shí)現(xiàn),既有細(xì)粒度的切分,也有最大長(zhǎng)度的切分。應(yīng)該說(shuō),是一個(gè)學(xué)習(xí)詞典分詞的很好的典范。

JavaEye:5. IK Analyzer 未來(lái)的roadmap是什么? 你對(duì) IK Analyzer的規(guī)劃和目標(biāo)是什么?

linliangyi2007:就IK后期的roadmap而言,主要致力于兩點(diǎn),一個(gè)是詞典的整理優(yōu)化,這塊工作量是巨大的,且是枯燥的,呵呵。3.1.版本后詞條是27萬(wàn),但其中有不少的“不合格”詞語(yǔ),需要被剔除。第二是,有可能引入詞頻和字頻的統(tǒng)計(jì)算法,來(lái)優(yōu)化對(duì)未知詞語(yǔ)的處理,這個(gè)還處于理論階段。

后期的想法,可能會(huì)考慮犧牲一定的性能,來(lái)?yè)Q取分詞效果,從企業(yè)應(yīng)用和中小型互聯(lián)網(wǎng)應(yīng)用而言,10萬(wàn)漢字/秒以上的處理速度,應(yīng)該都能夠滿足需求了。  

JavaEye:6. 你對(duì)整個(gè)lucene搜索領(lǐng)域怎么看?能推薦幾個(gè)你覺(jué)得比較關(guān)注的搜索領(lǐng)域熱點(diǎn)嗎?

linliangyi2007:lucene是一個(gè)相當(dāng)優(yōu)秀的全文檢索核心框架,基于它的應(yīng)用是很多的。就lucene自己而言,已經(jīng)發(fā)展出了nutch(面向互聯(lián)網(wǎng)),solr(面向企業(yè)集群)等多種應(yīng)用,這些也都是全文索引領(lǐng)域最經(jīng)常用到的。而實(shí)際上,lucene的索引特性還可以用在更多方面,比如,你可以用它了做web gis的地圖引擎,這是一個(gè)已經(jīng)成功實(shí)現(xiàn)的商用項(xiàng)目。

因此,對(duì)lucene的關(guān)注,我覺(jué)得應(yīng)該開(kāi)放自己的思維。因?yàn)樗饕谟?jì)算機(jī)應(yīng)用中,領(lǐng)域是非常廣泛的,大家應(yīng)該不拘一格。這點(diǎn)要?dú)w功于google對(duì)數(shù)據(jù)搜索應(yīng)用概念的推廣,深入人心。

JavaEye:7. 未來(lái)搜索引擎的發(fā)展方向會(huì)有哪些呢?

linliangyi2007:大型互聯(lián)網(wǎng)應(yīng)用,比如google,他們的應(yīng)該不僅是分詞器了,應(yīng)該是一個(gè)自然語(yǔ)言處理系統(tǒng)了,包括了自我學(xué)習(xí)能力。

先說(shuō)搜索的內(nèi)容形式,會(huì)多元化,實(shí)際上已經(jīng)有國(guó)外的公司在研發(fā)了,基于音頻的,圖像的搜索,如通過(guò)歌詞搜索音頻內(nèi)容,從搜索的用戶體驗(yàn)上,會(huì)結(jié)合用戶的使用習(xí)慣給出搜索結(jié)果。也就是說(shuō),在未來(lái),有可能你和我在google上搜索相同的詞語(yǔ),出來(lái)的結(jié)果會(huì)有不同。

還有,就是搜索形式可能會(huì)更多,有針對(duì)特定類型信息的垂直搜索,信息挖掘,也可能是針對(duì)SNS方式的人際網(wǎng)絡(luò)搜索。 其實(shí)搜索的本質(zhì)就是按照用戶的視角將紛繁的數(shù)據(jù)進(jìn)行合理的組織,再呈現(xiàn)在用面前; 從最早的MIS系統(tǒng)的sql搜索,到現(xiàn)在,一直如此。至于搜索領(lǐng)域google這樣的大公司,基于新的搜索技術(shù)的公司未來(lái)有可能有機(jī)會(huì)超過(guò)他們,我想,最終的網(wǎng)絡(luò)世界一定是大一統(tǒng)的。大家以后應(yīng)該是買數(shù)據(jù)賺錢,而不是服務(wù)了。服務(wù)的方式是有限的,服務(wù)的內(nèi)容(數(shù)據(jù))是無(wú)限的,是需要人們創(chuàng)造和提供的。

JavaEye:8. 目前IK Analyzer 是你一個(gè)人開(kāi)發(fā)?還是有其他合作開(kāi)發(fā)者?現(xiàn)在你平均每天花在IK Analyzer 上的時(shí)間大概是多久呢?

linliangyi2007:IK目前就我一人,我也一直在尋找合作者。(JavaEye: 希望什么樣的合作者?)最關(guān)鍵的是興趣和恒心吧。我基本上每天都會(huì)花至少30分鐘來(lái)解答網(wǎng)友的問(wèn)題,然后如果需要,就進(jìn)行修訂。平時(shí)有了新想法,就會(huì)進(jìn)行試驗(yàn),如果可行,就會(huì)發(fā)布新版本。有時(shí)候一天會(huì)有20多封郵件咨詢問(wèn)題,當(dāng)然有時(shí)候一周才一封,呵呵。


JavaEye:9. 目前大概有多少用戶在使用IK Analyzer?

linliangyi2007:初步估計(jì)從06年底到現(xiàn)在,應(yīng)該有1萬(wàn)多用戶。(JavaEye:很厲害  )  主要都是國(guó)內(nèi)的,畢竟是中文的。

JavaEye:10. 為什么給這個(gè)項(xiàng)目起IK Analyzer 這個(gè)名字呢?

linliangyi2007:呵呵,這個(gè)問(wèn)題問(wèn)的好,我很喜歡Diablo,尤其是Diablo II,我玩暗黑7年了。暗黑中有個(gè)角色,野蠻人哦,它的終極套裝就是“不朽之王Immortal King”,IK誕生的那一天,剛好是我打出一整套套裝的那一天,于是就用這個(gè)套裝的名字做紀(jì)念了,呵呵,感謝暴雪,感謝JavaEye,感謝CCAV。。。    聽(tīng)說(shuō)java也是這么命名的,當(dāng)時(shí)的設(shè)計(jì)人員正在喝java咖啡來(lái)著……

JavaEye:11. 你的開(kāi)發(fā)環(huán)境是什么? 使用什么操作系統(tǒng),和IDE?

linliangyi2007:我用Eclipse,操作系統(tǒng)多是windows,偶爾用linux, 客戶多使用unix。

JavaEye:12. 通過(guò)開(kāi)發(fā)IK Analyzer ,你對(duì)中國(guó)的軟件開(kāi)發(fā)人員做開(kāi)源項(xiàng)目有什么感受和想法嗎?

linliangyi2007:現(xiàn)在大家日常用的開(kāi)發(fā)平臺(tái),95%以上都是國(guó)外的組織貢獻(xiàn)的,中國(guó)在這塊,是需要趕上的。中國(guó)的開(kāi)源比前幾年有了明顯的發(fā)展,但還需要大家一起來(lái)參與。希望大家能逐步型成貢獻(xiàn)代碼的習(xí)慣,其實(shí)開(kāi)源不一定每個(gè)人都有做一個(gè)項(xiàng)目,參與其中就好, 哪怕就一小段的代碼。linux能成功,它的很多核心代碼都被閱讀過(guò),并通過(guò)網(wǎng)友們進(jìn)行了補(bǔ)充和修訂。中國(guó)的開(kāi)源氛圍薄弱,我覺(jué)得更多的是中國(guó)傳統(tǒng)思想中,對(duì)知識(shí)保守的因素,師傅對(duì)徒弟都要留一手,何況是同業(yè)者呢。但我要說(shuō),思想的交互是互利的,知識(shí)在開(kāi)放的氛圍中增長(zhǎng)的速度要遠(yuǎn)超過(guò)封閉的開(kāi)發(fā), 我經(jīng)常跟我的同事進(jìn)行頭腦風(fēng)暴,大家都很有收獲的,碰撞后的思想,往往能產(chǎn)生意料之外的好結(jié)果。


JavaEye:13. 作為一個(gè)JavaEye老會(huì)員,你對(duì)JavaEye網(wǎng)站有什么建議和意見(jiàn)嗎?

linliangyi2007:希望javaeye更專業(yè)更有深度。對(duì)新人創(chuàng)造更包容,更寬松的咨詢空間,對(duì)老人們則是思想碰撞,溫故知新的場(chǎng)所。

安徽新華電腦學(xué)校專業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢