信息的飛速增加,使搜索引擎成爲人們查找信息的首選工具,Google、百度等大型搜索引擎一直是人們討論的話題。隨着搜索市場價值的不斷增長,愈來愈多的公司開發出本身的搜索引擎,阿里巴巴的商機搜索、8848的購物搜索等也陸續面世,天然,搜索引擎技術也成爲技術人員關注的熱點。算法
雖然在國外搜索引擎技術早就開始研究,但在國內仍是陸續涌現出優秀的搜索引擎,像百度等。目前在中文搜索引擎領域,國內的搜索引擎已經和國外的搜索引擎效果上相差不遠。之因此能造成這樣的局面,有一個重要的緣由就在於中文和英文兩種語言自身的書寫方式不一樣,這其中對於計算機涉及的技術就是中文分詞。工具
什麼是中文分詞搜索引擎
衆所周知,英文是以詞爲單位的,詞和詞之間是靠空格隔開,而中文是以字爲單位,句子中全部的字連起來才能描述一個意思。例如,英文句子I am a student,用中文則爲:「我是一個學生」。計算機能夠很簡單經過空格知道student是一個單詞,可是不能很容易明白「學」、「生」兩個字合起來才表示一個詞。把中文的漢字序列切分紅有意義的詞,就是中文分詞,有些人也稱爲切詞。我是一個學生,分詞的結果是:我 是 一個 學生。翻譯
中文分詞和搜索引擎排序
中文分詞到底對搜索引擎有多大影響?對於搜索引擎來講,最重要的並非找到全部結果,由於在上百億的網頁中找到全部結果沒有太多的意義,沒有人能看得完,最重要的是把最相關的結果排在最前面,這也稱爲相關度排序。中文分詞的準確與否,經常直接影響到對搜索結果的相關度排序。索引
中文分詞技術開發
中文分詞技術屬於天然語言處理技術範疇,對於一句話,人能夠經過本身的知識來明白哪些是詞,哪些不是詞,但如何讓計算機也能理解?其處理過程就是分詞算法。字符串
現有的分詞算法可分爲三大類:基於字符串匹配的分詞方法、基於理解的分詞方法和基於統計的分詞方法。下面一一分析。產品
一、基於字符串匹配的分詞方法效率
這種方法又叫作機械分詞方法,它是按照必定的策略將待分析的漢字串與一個「充分大的」機器詞典中的詞條進行配,若在詞典中找到某個字符串,則匹配成功(識別出一個詞)。按照掃描方向的不一樣,串匹配分詞方法能夠分爲正向匹配和逆向匹配;按照不一樣長度優先匹配的狀況,能夠分爲最大(最長)匹配和最小(最短)匹配;按照是否與詞性標註過程相結合,又能夠分爲單純分詞方法和分詞與標註相結合的一體化方法。經常使用的幾種機械分詞方法以下:
正向最大匹配法(由左到右的方向);
逆向最大匹配法(由右到左的方向);
最少切分(使每一句中切出的詞數最小)。
還能夠將上述各類方法相互組合,例如,能夠將正向最大匹配方法和逆向最大匹配方法結合起來構成雙向匹配法。因爲漢語單字成詞的特色,正向最小匹配和逆向最小匹配通常不多使用。通常說來,逆向匹配的切分精度略高於正向匹配,遇到的歧義現象也較少。統計結果代表,單純使用正向最大匹配的錯誤率爲1/169,單純使用逆向最大匹配的錯誤率爲1/245。但這種精度還遠遠不能知足實際的須要。實際使用的分詞系統,都是把機械分詞做爲一種初分手段,還 需經過利用各類其它的語言信息來進一步提升切分的準確率。
一種方法是改進掃描方式,稱爲特徵掃描或標誌切分,優先在待分析字符串中識別和切分出一些帶有明顯特徵的詞,以這些詞做爲斷點,可將原字符串分爲較小的串再來進機械分詞,從而減小匹配的錯誤率。另外一種方法是將分詞和詞類標註結合起來,利用豐富的詞類信息對分詞決策提供幫助,而且在標註過程當中又反過來對分詞結果進行檢驗、調整,從而極大地提升切分的準確率。對於機械分詞方法,能夠創建一個通常的模型,在這方面有專業的學術論文,這裏不作詳細論述。
二、基於理解的分詞方法
這種分詞方法是經過讓計算機模擬人對句子的理解,達到識別詞的效果。其基本思想就是在分詞的同時進行句法、語義分析,利用句法信息和語義信息來處理歧義現象。它一般包括三個部分:分詞子系統、句法語義子系統、總控部分。在總控部分的協調下,分詞子系統能夠得到有關詞、句子等的句法和語義信息來對分詞歧義進行判斷,即它模擬了人對句子的理解過程。這種分詞方法須要使用大量的語言知識和信息。因爲漢語語言知識的籠統、複雜性,難以將各類語言信息組織成機 器可直接讀取的形式,所以目前基於理解的分詞系統還處在試驗階段。
三、基於統計的分詞方法
從形式上看,詞是穩定的字的組合,所以在上下文中,相鄰的字同時出現的次數越多,就越有可能構成一個詞。所以字與字相鄰共現的頻率或機率可以較好的反映成詞的可信度。能夠對語料中相鄰共現的各個字的組合的頻度進行統計,計算它們的互現信息。定義兩個字的互現信息,計算兩個漢字X、Y的相鄰共現機率。互現信息體現了漢字之間結合關係的緊密程度。當緊密程度高於某一個閾值時,即可認爲此字組可能構成了一個詞。這種方法只需對語料中的字組頻度進行統計,不須要切分詞典,於是又叫作無詞典分詞法或統計取詞方法。
但這種方法也有必定的侷限性,會常常抽出一些共現頻度高、但並非詞的經常使用字組,例如「這一」、「之一」、「有的」、「個人」、「許多的」等,而且對經常使用詞的識別精度差,時空開銷大。實際應用的統計分詞系統都要使用一部基本的分詞詞典(經常使用詞詞典)進行串匹配分詞,同時使用統計方法識別一些新的詞,即將串頻統計和串匹配結合起來,既發揮匹配分詞切分速度快、效率高的特色,又利用了無詞典分詞結合上下 文識別生詞、自動消除歧義的優勢。
到底哪一種分詞算法的準確度更高,目前並沒有定論。對於任何一個成熟的分詞系統來講,不可能單獨依靠某一種算法來實現,都須要綜合不一樣的算法。筆者瞭解,海量科技的分詞算法就採用「複方分詞法」,所謂複方,至關於用中藥中的複方概念,即用不一樣的藥才綜合起來去醫治疾病,一樣,對於中文詞的識別,須要多 種算法來處理不一樣的問題。
分詞中的難題
有了成熟的分詞算法,是否就能容易的解決中文分詞的問題呢?事實遠非如此。中文是一種十分複雜的語言,讓計算機理解中文語言更是困難。在中文分詞過程當中,有兩大難題一直沒有徹底突破。
一、歧義識別
歧義是指一樣的一句話,可能有兩種或者更多的切分方法。例如:表面的,由於「表面」和「面的」都是詞,那麼這個短語就能夠分紅「表面的」和「表面的」。這種稱爲交叉歧義。像這種交叉歧義十分常見,前面舉的「和服」的例子,其實就是由於交叉歧義引發的錯誤。「化妝和服裝」能夠分紅「化妝和服裝」或者「化妝和服裝」。因爲沒有人的知識去理解,計算機很難知道到底哪一個方案正確。
交叉歧義相對組合歧義來講是還算比較容易處理,組合歧義就必需根據整個句子來判斷了。例如,在句子「這個門把手壞了」中,「把手」是個詞,但在句子「請把手拿開」中,「把手」就不是一個詞;在句子「將軍任命了一名中將」中,「中將」是個詞,但在句子「產量三年中將增加兩倍」中,「中將」就再也不是詞。
這些詞計算機又如何去識別?若是交叉歧義和組合歧義計算機都能解決的話,在歧義中還有一個難題,是真歧義。真歧義意思是給出一句話,由人去判斷也不知道哪一個應該是詞,哪一個應該不是詞。例如:「乒乓球拍賣完了」,能夠切分紅「乒乓 球拍 賣 完 了」、也可切分紅「乒乓球 拍賣 完 了」,若是沒有上下文其餘的句子,恐怕誰也不知道「拍賣」在這裏算不算一個詞。
二、新詞識別
新詞,專業術語稱爲未登陸詞。也就是那些在字典中都沒有收錄過,但又確實能稱爲詞的那些詞。最典型的是人名,人能夠很容易理解句子「王軍虎去廣州了」中,「王軍虎」是個詞,由於是一我的的名字,但要是讓計算機去識別就困難了。若是把「王軍虎」作爲一個詞收錄到字典中去,全世界有那麼多名字,並且每時每刻都有新增的人名,收錄這些人名自己就是一項巨大的工程。即便這項工做能夠完成,仍是會存在問題,例如:在句子「王軍虎頭虎腦的」中,「王軍虎」還能 不能算詞?
新詞中除了人名之外,還有機構名、地名、產品名、商標名、簡稱、省略語等都是很難處理的問題,並且這些又正好是人們常用的詞,所以對於搜索引擎來講,分詞系統中的新詞識別十分重要。目前新詞識別準確率已經成爲評價一個分詞系統好壞的重要標誌之一。
中文分詞的應用
目前在天然語言處理技術中,中文處理技術比西文處理技術要落後很大一段距離,許多西文的處理方法中文不能直接採用,就是由於中文必需有分詞這道工序。中文分詞是其餘中文信息處理的基礎,搜索引擎只是中文分詞的一個應用。其餘的好比機器翻譯(MT)、語音合成、自動分類、自動摘要、自動校對等等,都須要用到分詞。由於中文須要分詞,可能會影響一些研究,但同時也爲一些企業帶來機會,由於國外的計算機處理技術要想進入中國市場,首先也是要解決中文分詞 問題。在中文研究方面,相比外國人來講,中國人有十分明顯的優點。
分詞準確性對搜索引擎來講十分重要,但若是分詞速度太慢,即便準確性再高,對於搜索引擎來講也是不可用的,由於搜索引擎須要處理數以億計的網頁,若是分詞耗用的時間過長,會嚴重影響搜索引擎內容更新的速度。所以對於搜索引擎來講,分詞的準確性和速度,兩者都須要達到很高的要求。
目前研究中文分詞的大可能是科研院校,清華、北大、中科院、北京語言學院、東北大學、IBM研究院、微軟中國研究院等都有本身的研究隊伍,而真正專業研究中文分詞的商業公司除了海量科技之外,幾乎沒有了。科研院校研究的技術,大部分不能很快產品化,而一個專業公司的力量畢竟有限,看來中文分詞技術要想更好的服務於更多的產品,還有很長一段路。