仲介交易 HTTP://www.aliyun.com/zixun/aggregation/6858.html">SEO診斷 淘寶客 雲主機 技術大廳
筆者一直從事中文自動分詞的研究,其中一個樸素的想法就是該研究對WWW上的中文搜尋引擎一定會有説明,但又常常為開放環境下自動分詞難以達到滿意的精度而苦惱。 近來忽似有所悟,在此將點滴心得寫出來,以抛磚引玉。 一個關於中文搜尋引擎的「有趣」體驗
先講一段筆者的「有趣」經歷。 一日,偶然想在WWW上查找與日本「和服」有關的資料。 打開Yahoo China(HTTP://cn.yahoo.com/)的搜尋引擎,很自然地選擇「和服」作為query。
檢索結果完全出乎意料:找到了255個「相關網站」,卻鮮有與「和服」相關者,如:「中國人才熱線 GB - 提供招聘及求職的資訊和服務」。 在255個網站中逐一查看實不能忍受,重新(即獨立于以前的檢索結果,下同)鍵入「和服」 and 「日本」,希望能縮小搜尋範圍。 這次只得到一個與「和服」相關的網站:「寧波市江東星星絲織腰帶廠 GB - 從事日本和服腰帶的刺繡及製造」。
筆者不相信諾大的Yahoo China僅存此碩果,故又試「和服」 and 「服裝」。 這次共返回45個網站,但相關的仍只有「寧波市江東星星絲織腰帶廠」,檢索精度為1/45。 筆者著實感到疑惑:難道真的要守寶山空手而歸嗎? 腦海中忽跳出一個絕妙好詞:「日式」,趕快鍵入「和服」 and 「日式」,終於挖出不少「寶」來:返回了1140個網頁(不知為什麼,查的是「相關網站」,操作也與以前完全相同,但回饋卻死活都是「相關網頁」),其中不乏與「和服」 相關的內容,如:「和服文化「,下面是和服、日式服裝商品的市場和其他纖維製品市場的比較圖......」終於「大功告成」,當時心裡一陣輕鬆。 過後回想此事,卻覺得不那麼簡單:如果想不出「日式」這個詞,還要試多少個其他詞? 又有多少個相關的網頁筆者根本就無從知道? 不確定性太強了,似乎並不很易琢磨。 檢索好像成了一門「藝術」,而不是一門「技術」。
中文搜尋引擎性能的初步測試
這一段體驗促使我對中文搜尋引擎的性能做了一個初步的調查。 當時我正在香港大學講學,於是要求50名香港大學的學生每人向Yahoo Hong Kong(HTTP://hk.yahoo.com/)鍵入一個感興趣的詞作為查詢,然後分別考察所查詢的檢索精度。 檢索精度定義為:檢索出來的與查詢真正相關的網站(頁)數/檢索出來的網站(頁)數。 如果檢索出來的網站(頁)大於50個,則只考察前50個。
這50個檢索詞及所對應的檢索精度(%)如表1所示。
檢索結果表明,Yahoo Hong Kong沒有做分詞處理,平均檢索精度僅為48.8%,其中一半是垃圾。 表2列出了部分檢索實例。 從檢索錯誤來看,情況相當複雜,涉及中文自動分詞的各個方面,包括交叉歧義(如「研究生態學理論及應用」。 底線指示檢索詞,下同)、組合歧義(「推動以人為本的教育」)、中國人名(如「山東安百合律師事務所」)、外國人名(如「海倫和約翰」、「介紹酒井法子」)、 中國地名(如「泌陽縣雙廟街鄉」)、外國地名(如「埃及和約旦」)、 機構名( 如「掌天氣功療法中心」)、縮略語(如「中大型ERP軟體」)等。
為了粗略估計分詞系統對中文搜尋引擎可能帶來的影響,筆者用清華大學自行研發的中文分詞系統CSeg&Tag對與這50個詞相關的122個典型例句(均由Yahoo Hong Kong 給出,包括「檢索錯誤的例子」78句及「 檢索正確的例子」44句,其中部分例句見表2)進行了自動分詞,分詞結果如表3所示。
總體上,對這122句的分詞正確率為76.2%。 假設這可在一定程度上反映對50個詞檢索出來的所有句子的分詞結果的話,則檢索精度則可以從48.8%上升到76.2%。 可見,雖然目前分詞系統的性能距理想狀態還有相當的距離,對搜尋引擎的作用也是所謂的「有一利也有一弊」,但權衡利弊,還是利大於弊。 換言之,分詞技術在搜尋引擎中是可用的。
進一步分析CSeg&Tag系統分詞出錯的29個句子, 還可以分為兩類:第一類(共11句),基本上是由於對未登錄詞沒能做正確的處理, 被切開了, 但幸運的是,該詞的邊界並沒有同周圍的其他詞產生糾葛(如「聯 有 機器 有限公司」 );第二類(共18句),則是或者把詞的邊界搞錯了(如「掌
天氣 功 療法 中心」),或者不該合的成分被當做一個「詞」合起來了(如「含 學會 及第 十 屆 亞洲 醫學會 大會 介紹」)。 第一類對搜尋引擎的影響,在效果上與不做分詞處理的完全一樣,
所以,如果加上這11句,針對50個詞的檢索精度可望由76.2%提高到85.2%。 第二類對搜尋引擎則屬致命傷,是我們最不希望也是最怕遇見的情形。 再仔細分析一下,
其中有的情形通過簡單的規則可以解決(如「及第」,如果後面緊跟數詞,一般應分開),但大部分情形並不容易對付,甚至在WWW環境下,我們連到底會遇到多少類似的情形都不可能預測出,更遑論有效解決了。 經驗告訴我們,不管投入怎樣的努力,分詞系統永遠不可能在開放環境下達到完美境界——這意味著我們在構造中文搜尋引擎時,必須首先接受這樣一個基本假設:再健壯的中文分詞系統在處理真實文本時也會不可避免地發生某些不可預期的錯誤, 而能達到90%的分詞精度已經是謝天謝地了,出現錯誤是必然的、正常的。 研究中文搜尋引擎的機制也好,演算法也罷,試圖提高檢索的召回率也好,精確率(精度)也罷,必須在這個基本假設上進行,否則無異于緣木求魚。
未來的研發方向
鑒於以上討論,筆者認為:面向搜尋引擎的中文分詞系統一定是基於一個字詞混合的模型,相應的文本檢索機制也一定是字詞混合的。 而針對這種模型和機制的研究勢必成為未來幾年內中文自動分詞系統及中文搜尋引擎系統研發中的前沿與熱點課題。
筆者得到的另一個啟發是:中文搜尋引擎關於不同詞的回應特性存在著很大的差異,比如,即使不分詞,對「旗袍」的檢索精度仍可達到100%,對「土人」的檢索精度則為0。 11545.html">我們有必要對全部漢語常用詞做窮舉式的逐一調查:相對於中文搜尋引擎,該詞的「回應」特性如何? 是否存在某種簡捷的解決辦法(如「土人」幾乎均出現于「風土人情」中)? 或者乾脆受研究水準的限制,目前根本就不可能找到解決之道? 等等。 這項調查對設計基於分詞技術的新一代中文搜尋引擎將是一個頗具價值的基礎性工作。