“自動分詞”從誕生到現在,經歷了什麼?

上一期文章我們說到了工程師們是通過設計分詞算法來讓計算機準確的知道我們要搜索的資料,給我們使用互聯網帶來了革命性的變化。這篇文章我們來說一說分詞算法的發展以及現狀。

“自動分詞”從誕生到現在,經歷了什麼?

世界上沒有完美的事物,所有的一切都是在克服缺陷中走向完美。"最大匹配算法"是最先的投入使用的算法,它符合人們的閱讀習慣,能夠在大多數情況下正確理解人們的意願,但它是不完美的。它在遇見"交集型歧義"時就會變得不可靠,比如"北京大學生來應聘"會被錯誤的分為"北京大學/生前/來/應聘"。

一些比較機械的問題可以通過一個特殊規則表來解決,還有一個適用非常廣泛的特殊規則,這個強大的規則可以修正很多交集型歧義的劃分錯誤。首先我們要維護一個一般不單獨成詞的字表,比如"美"、"片"、"偉"等等。在分詞的過程中,一旦發現這些詞被孤立出來,就要重新判斷它和前面的字組詞的可能性。

“自動分詞”從誕生到現在,經歷了什麼?

我們還有一種與人們閱讀習慣完全不同的算法思路:把句子當成一個整體來考慮,從全局的角度來考慮一個句子劃分方案的優劣。最初用的辦法是,尋找詞數最少的,再配合上面提到的"不成詞字表",我們就可以得到一個簡明而強大的算法:對一種分詞方案,裡面有多少詞,就減去多少分;每出現一個不成詞的字,就多減一分。減分最少的方案就是最好的分詞方案。這種算法思路充分的利用了計算機的計算優勢,將複雜問題通過邏輯運算來解決。

算法還有進一步優化的空間。字不成詞有一個程度的問題。"民"是一個不成詞的元素,"鴨"一般不單獨成詞,但在科技文和兒歌中除外。每個字成詞都有一定概率,每個詞出現的概率不同。於是我們用概率設計出了一個更加標準、連續、自動的算法:最大概率算法:先統計大量真實語料中各個詞出現的概率,然後將每種分詞方案中各詞出現的概率乘起來作為計算機判斷分詞方案的優劣,找出最優方案作為分詞結果。

“自動分詞”從誕生到現在,經歷了什麼?

但還有一種缺陷沒有被上述算法處理:"組合型歧義",是指一個字串即可合又可分。舉例"個人恩怨"中的"個人"是一個詞,但"這個人"中的"個"是單獨的字,一旦涉及到組合型歧義,最大匹配、最少詞數、概率最大算法都不能解決。

接下來聰明的設計師們跳出了以前的設計框架,把人類語言抽象為一個二元模型,什麼是二元模型?對任意兩個詞語a1,a2,統計詞庫中a1後面是a2的概率P(a1,a2),將得出的數據做成一個二維表。再定義一個句子劃分方案的得分為P(φ,a1)·P(a1,a2)·P(a2,a3)……,其中w1,w2,…,wn依次表示分出的詞,P(φ,a1)表示句子開頭是a1的概率。這個算法模型解決了詞類標註和語音識別等各類自然語言的處理問題。

“自動分詞”從誕生到現在,經歷了什麼?

至此,中文自動分詞算法終於有了一個實用的解決方案。

但漢語的博大精深豈是如此輕易就可以解決的,宇宙大神級文明"李白"都無法通過窮舉找出中國最優美的詩句。

“自動分詞”從誕生到現在,經歷了什麼?

近十年來,如何識別為登錄詞的問題,成為了中文分詞領域的下一個難關。比如地名,人名。

比如"高峰"、"汪洋"、"建國",計算機無法分辨這些到底是人的名字,還是別的詞語。還有一些比較奇葩的地名,比如,北京有一個地名叫"臭水溝",結果網上一搜,一堆臭水溝的圖片出來了。

“自動分詞”從誕生到現在,經歷了什麼?

還有機構名,品牌名,縮略詞,還有網絡新詞,千奇百怪的網絡新詞不知道什麼時候就在網上火起來了,這是要逼瘋設計師的節奏啊!!!


分享到:


相關文章: