<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    中文分詞和搜索引擎

    Posted on 2007-11-07 11:19 yukui 閱讀(219) 評論(0)  編輯  收藏

    作者:Winter 工程師

    搜索引擎,上網(wǎng)的人基本上都不陌生了,CNNIC的第17次《互聯(lián)網(wǎng)調(diào)查報告》顯示,使用搜索引擎服務(wù)的網(wǎng)民,僅次于電子郵件。中文分詞,估計了解的人并不多,畢竟太技術(shù),太底層。但中文分詞是中文搜索引擎系統(tǒng)中非常重要的模塊,這里之所以強調(diào)是中文搜索引擎,是針對英文搜索引擎來講,因為對于英文來說,空格代表詞和詞之間的分隔,也就不存在分詞問題。和中文搜索引擎類似還有日文、韓文、泰文搜索引擎等,都需要處理分詞問題。

    為什么需要中文分詞

    目前的搜索引擎,大多是基于一種稱為倒排索引的結(jié)構(gòu)[1]。以什么做為索引的Key值,直接影響到整個搜索引擎的準確度、召回率[2]、速度。我們先看看不使用中文分詞的情況。

    如果不使用中文分詞,可以采用單個漢字索引方式。例如,雅虎,先索引'雅'字,然后再索引'虎'字。同樣,對于一篇文章,先把所有的漢字都單獨索引一次,并記錄他們的位置。搜索過程中,也是先找'雅'字的所有文檔,再找'虎'字的所有文檔,然后做交叉'與'運算,即包含這兩個字,而且位置連續(xù)的文檔才會做為符合要求的結(jié)果。這種方式是最基本的索引方式,現(xiàn)在有些小引擎中還在使用。但這里存在一個很有挑戰(zhàn)性的問題:總共的常用漢字是3000多個,我們每次查詢過程中,進行'與'操作的計算量會相當大,對于大數(shù)據(jù)量搜索引擎來說(超過10億的文檔),每天上億次查詢,這樣的索引結(jié)構(gòu),無疑是對硬件和算法的極大挑戰(zhàn)。

    考慮到速度問題,如果不使用分詞,還有另外一種選擇:n元組合索引方式,2元/3元等。拿2元來說,中國人,先索引'中國', 再索引'國人'。同樣,對于一篇文章,以2為單位,把所有相鄰的漢字都索引起來,并記錄他們的位置。搜索過程中,也是先找包含'中國'的所有文檔,再找'國人'的所有文檔,然后做交叉'與'運算,即包含這兩個單元,而且位置連續(xù)的文檔才會做為符合要求的結(jié)果。這樣以兩個字做為索引單元,可以大大減少在搜索過程中的計算量。

    以上兩種方式,都可以不需要分詞,也能實現(xiàn)搜索引擎的索引和搜索。但是這里存在一個不可忽視的問題:準確度。一個很常見的例子:和服,如果按照上面兩種方式,都會查到包含'主板 和服 務(wù)器'的文檔; 北大 也會得到'東 北大 學(xué)'。對于大數(shù)據(jù)量的搜索引擎來說,每個搜索次都會有成千上萬個結(jié)果,用戶已經(jīng)很挑選他真正想要的文章,如果這里還要增加許多錯誤,估計用戶體驗會極差。這時候,我們需要中文分詞。

    詞,是中文語言中最小的語意單位。以詞為單位做為搜索引擎的索引的Key值,會大大提高搜索引擎結(jié)果的準確性,同時保證了搜索過程中計算量小。其實還有一個優(yōu)點,以詞為單位的索引,索引庫會比上兩種方式小很多。很明顯:如果以 中國人 做為一個詞,那么搜索的時候,不需要任何'與'運算,索引的時候記錄也會減少。關(guān)于搜索過程描述參看中文搜索引擎技術(shù)揭密:系統(tǒng)架構(gòu)

    參考
    1. The Anatomy of a Large-Scale Hypertextual Web Search Engine
    2. 召回率: recall. 即得到的正確結(jié)果占所有應(yīng)該得到的正確結(jié)果的比例。如:包含'雅虎'的正確的網(wǎng)頁應(yīng)該有500個,但搜索得到了600個結(jié)果,其中有400個是正確的,還有200個是錯誤的。那么準確度是:400/600=66.67%, 召回率是:400/500=80%.

    中文分詞的算法

    中文分詞技術(shù)的研究,已經(jīng)有幾十年的歷史了,在20世紀80年代,我國就有人開始研究如何用計算機來自動分詞。如何讓機器去識別語言中最小的語意單位,不是一件很容易的事情。

    如何進行分詞?對于程序員來說,最容易想到的辦法是,用一個大詞典,把所有的詞都存入詞典中,掃描輸入的文本,查找所有可能的詞,然后看哪個詞可以做為輸出。例如:

     


    輸入文本: 我是學(xué)生
    詞: 我/是/學(xué)生

     


    其實這樣做了以后,可以解決60%的問題??偨Y(jié)起來,分詞的算法分為:
    1. 基于字符串匹配的分詞方法
    2. 基于理解的分詞方法
    3. 基于統(tǒng)計的分詞方法

    關(guān)于這3種算法的詳細介紹,可以查看中文分詞技術(shù),我這里想介紹的是,如何處理新詞。

    新詞,術(shù)語是"未登錄詞",就是那些沒有收入到詞典里面的詞。新詞主要包括:人名、地名、機構(gòu)名、熱點新名詞等。例如:2003年之前,沒有人知道"非典"。"非典"剛出現(xiàn)的時候,這就是新詞。還有"超女", "三個代表","芙蓉姐姐"。識別新詞的能力是評估一個分詞系統(tǒng)的重要指標。在國際上每年進行的分詞大賽中,識別新詞的比賽也單獨提出。2006年SIGHAN的分詞大賽中,就增添了對于機構(gòu)名識別的比賽。

    如何識別新詞成為最近幾年分詞技術(shù)研究的重點??偨Y(jié)起來,無非分成兩種:
    1. 基于規(guī)則的方法。
    2. 基于統(tǒng)計、機器學(xué)習(xí)。

    拿人名識別為例。你不可能把所有的人名都放入詞典中,這決定了人名注定會是新詞。從人名構(gòu)造來說,很有規(guī)律:姓+名。張王劉李陳、天下一半人。也就是說可能有一半的人,是這五個姓。名也有一定規(guī)律:建華/建國/志強.....等有許多經(jīng)常用于名字中的漢字;對于地名識別也可以找出很多規(guī)則,省/縣/村/鎮(zhèn)/灣/河等,都是很常用的后綴,如果他們出現(xiàn),之前出現(xiàn)地名的可能性比較大。如果把這些規(guī)律轉(zhuǎn)化成計算機能識別的算法,就是基于規(guī)則的算法。這種基于規(guī)則的算法簡單有效,而且發(fā)現(xiàn)規(guī)則可很方便加入。

    規(guī)則總會有例外,規(guī)則過多以后,如何去權(quán)衡這些規(guī)則,會是十分頭疼的問題。人們試著告訴計算機目標,讓計算機自己去嘗試各種方法組合這些規(guī)則并得到最優(yōu)參數(shù),這就機器學(xué)習(xí)。隨著Machine Learning(機器學(xué)習(xí))技術(shù)的不斷進步,其應(yīng)用范圍也越來越廣,中文分詞算法也從中受益。ANN(人工神經(jīng)網(wǎng)絡(luò)), 最大熵模型, HMM(隱馬爾可夫模型)等算法都在新詞識別中有應(yīng)用。通過機器學(xué)習(xí)識別新詞的原理并不復(fù)雜。一般都是先定義一些特征,然后利用訓(xùn)練語料進行學(xué)習(xí),建立模型。還是以人名識別為例,可以定義姓名前面的字、姓、名、姓名后面的字做為特征,通過利用標注好姓名的語料庫進行學(xué)習(xí)訓(xùn)練。

    機器學(xué)習(xí)識別新詞的好處在于自動尋找一些識別新詞的特征,其準確度和召回率都能達到比較高的水平。但機器學(xué)習(xí)算法需要有足夠多的訓(xùn)練語料,人工準備準確的大規(guī)模的訓(xùn)練語料也會十分困難。另外,機器學(xué)習(xí)算法一般速度會比較慢,優(yōu)化速度,使之用于海量數(shù)據(jù)處理,也是使用機器學(xué)習(xí)的一個關(guān)鍵點。

     

    中文分詞和搜索引擎
    中文分詞除了在索引結(jié)構(gòu)上影響搜索引擎以外,還會如何影響搜索引擎?

    除了搜索引擎的索引過程需要用到分詞以外,所有的搜索之前也需要用到分詞。有些人誤認為"短語搜索"(即兩端加上引號的搜索方式,搜索引擎基本都支持這種方式,查看搜索引擎幫助)是直接拿字符串去匹配不用分詞,因為結(jié)果看上去好像是字符串匹配的結(jié)果。其實不然,短語搜索同樣需要用分詞,只不過在結(jié)果中需要位置連續(xù)等嚴格限制。當位置連續(xù)時,在顯示摘要的時候,會讓你感覺只是用字符串匹配。

    除了在搜索前端后端都需要用到分詞以外,搜索引擎還有一個原則:前端后端分詞結(jié)果應(yīng)該一致。這意思是說,如果你在索引時沒有識別出"文德"的人名,你在搜索時最好也別識別出來,這樣可以按照兩個單字的方式查找,或許有正確結(jié)果,否則會查不到結(jié)果。反之也一樣。由于索引過程中,分詞輸入的一篇文章,有大量的上下文信息,但在搜索時,用戶輸入的可能只有幾個字,很多上下文信息不在存在。如果過多使用統(tǒng)計或機器學(xué)習(xí),很容易導(dǎo)致搜索引擎的前端后端分詞不一致的問題。這也是搜索引擎使用分詞和其他系統(tǒng),如機器翻譯,使用分詞不一樣的地方。

    如果你看過搜索引擎的query log(即所有搜索詞的記錄),你會發(fā)現(xiàn)新詞很多,會占30%,或者更多。對這些新詞的識別會直接影響搜索結(jié)果的準確性,或者說相關(guān)性。搜索結(jié)果的相關(guān)性決定于排序算法,排序算法一部分依賴于網(wǎng)頁的質(zhì)量和權(quán)威性,另一方面依賴于分詞結(jié)果的準確性。分詞結(jié)果準確,我們會方便的計算詞在文章中的重要程度。"超女"做為一個詞在文章中的權(quán)重,和"超"、"女"兩個字在文章中的權(quán)重計算方法會很不一樣,這樣就會直接影響相關(guān)性的計算。

    中文分詞對于搜索引擎的影響,還表現(xiàn)在對于用戶輸入詞意圖的識別。識別用戶的輸入詞是否是人名、網(wǎng)站名、軟件名還是其他通用詞匯,能夠判斷用戶的意圖,從而提供用戶想要的結(jié)果。

    其實中文分詞是所有中文處理的基礎(chǔ),因此如果有一個好的分詞系統(tǒng),會對改進搜索引擎的相關(guān)性有很大的幫助。但最終展現(xiàn)給用戶的是網(wǎng)頁結(jié)果而不是分詞結(jié)果,提高網(wǎng)頁的相關(guān)性,有100%準確的分詞也是不夠。如何在準確的中文分詞基礎(chǔ)上,做更多的分析和挖掘,理解用戶的意圖,滿足用戶的需要,是每個搜索引擎公司都在努力做的事情。

    雅虎的中文分詞
    YST 是Yahoo Search Technology的縮寫。Yahoo收購inktomi公司后,又收購了幾家做搜索的公司,綜合打造出自己的搜索引擎技術(shù)。最開始,雅虎沒有分詞技術(shù)(segmentation), 中文、日文、韓文....等都是使用的第三方的產(chǎn)品。后來,隨著雅虎正式進入中文搜索市場,雅虎開始加強對中文分詞的研究,現(xiàn)在YST中使用的中文分詞系統(tǒng)已經(jīng)是雅虎中國和雅虎美國工程師共同開發(fā)的版本--YWS(Yahoo Word Segmenter),而且現(xiàn)在還在持續(xù)不斷的改進。YWS 在對于人名、地名、機構(gòu)名等新詞識別方面有很不錯的準確度,對于query的分析提供了很大幫助。

    然而,對于搜索引擎廠商來說,沒有最好的分詞,只有最合適的分詞。如何改進分詞系統(tǒng),配合以合適的索引結(jié)構(gòu),最終不斷提高用戶的滿意度,這是一個長期的課題。


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     

    posts - 131, comments - 12, trackbacks - 0, articles - 32

    Copyright © yukui

    主站蜘蛛池模板: 亚洲高清中文字幕综合网| 中文字幕亚洲天堂| 亚洲神级电影国语版| 女人体1963午夜免费视频| 亚洲日本在线观看视频| 日本激情猛烈在线看免费观看| 日韩视频在线免费观看| 亚洲精华国产精华精华液好用| 成年性羞羞视频免费观看无限| 亚洲日韩国产二区无码| 九九九精品成人免费视频| 亚洲一区二区无码偷拍| 日韩激情淫片免费看| 无码一区二区三区亚洲人妻| 国产网站在线免费观看| 曰批全过程免费视频观看免费软件| 亚洲成?Ⅴ人在线观看无码| 久久久久久av无码免费看大片| 亚洲中文字幕在线观看| 日韩人妻无码精品久久免费一 | 亚洲日韩一页精品发布| 成人A片产无码免费视频在线观看| 久久亚洲成a人片| 亚洲免费在线观看视频| 亚洲中文字幕久久精品蜜桃| 国产免费怕怕免费视频观看| sihu国产精品永久免费| 亚洲精品成人av在线| 久久99九九国产免费看小说| 亚洲AV成人无码网站| 久久久无码精品亚洲日韩软件| 久久精品视频免费播放| 亚洲www77777| 亚洲国产精品日韩专区AV| 99久久99久久免费精品小说| 亚洲精品第一国产综合亚AV| 国产亚洲av片在线观看播放| 无码区日韩特区永久免费系列| 国产精品亚洲一区二区三区| 亚洲AV无码国产精品色午友在线| 美女视频黄是免费的网址|