標籤:

計算機是如何對自然語言進行分詞的?


語言承載著人類的思維,自然語言處理是人工智慧領域的重要發展方向之一。由於語言的書寫習慣和形式的不同,拉丁語系一般用空格分開每個有意義的詞,而亞洲語言是連續的,我們人能輕易地理解和分辨出句子上具有意義的詞,對於計算機來說就不是那麼簡單了。所以當我們進行中文自然語言處理的時候,分詞往往是我們的第一步,因為大多數情況下辭彙是我們理解自然語言的基礎。現有的中文分詞演算法可以分為以下三類:

(1)基於字元串匹配的啟發式分詞方法:

這種方法我們可以想像我們手中有一個非常全面的詞典,將要分詞的文本按照一定的匹配規則與詞典中的詞條進行匹配,如果我們在詞典中找到了某個字元串,那麼就成功匹配出一個詞。根據匹配規則的不同,常見的可分為正向最大匹配、逆向最大匹配、最短路徑分詞法等。

(2)基於詞意的分詞方法

這種分詞方法想讓計算機像人一樣理解句子進而達到分詞的目的。在分詞的同時通過對文本進行句法、語義分析,利用句法信息和語義信息來處理歧義現象。這種方法目前發展的還不是很成熟。

(3)基於統計的分詞方法

根據對片語的統計,在上下文中,相鄰的字出現的頻率次數越多,那這個字元串就越有可能是一個有意義的詞,借用統計的思想完成分詞。

這三種方法到底哪種分詞演算法更好,還沒有一個絕對的結論。因為對於任何一個分詞系統來說,都不是依靠單一演算法完成的,往往綜合各種分詞技術,來適應不同的情況,達到一個更好的效果。


分詞是計算機進行自然語言處理的一個重要過程。分詞的意思就是把一句話按順序分成相應的詞。比如下面這句話:

悟空問答是一個為所有人服務的問答社區。

如果我們要對這句話進行分詞的話,結果是:

悟空/問答/是/一個/為/所有人/服務/的/問答/社區。

那麼計算機是如何來對一句話進行分詞的呢?最直接的一個辦法就是把每一個字依次拿出來和語料庫進行對比,如果語料庫中存在這個字或詞,那麼就將其分開來。具體的過程是下面這樣子。

還以上面的句子為例。當我們把第一個字「悟」拿出來,可以把它當做單字去處理;而繼續檢索時,發現第二個字可以和第一個字組成一個詞「悟空」,出現在了語料庫中。那麼我們就換成將悟空作為一個詞進行分割。依次類推,便可以將整個句子分割完。這就是計算機進行分詞的最基本的原理。

但是這種方法會出現一個問題:遇到兩義詞的時候便進入了困境。比如「北京大學生」這個詞應該是分為「北京」和「大學生」,還是「北京大學」和「生」呢?

上個世紀九十年代,在清華大學通信專業讀博的郭進提出了用統計的方法去衡量分詞結果合理性的方案。簡單地來說,就是把不同的分詞結果都列舉出來,看看哪一種出現的概率最大。概率最大的那個就被認為是計算機分詞的最後結果。這種方案聽起來比較合理,但是在具體實施的過程中會出現問題,因為要列舉所有的結果並計算概率,這樣導致的計算量是非常大的,並不適合實際應用。

當然總會有一種辦法去解決問題。如果我們把它看做是一個動態規劃的問題,然後用維特比演算法便可以很快地找到最佳結果了。


推薦閱讀:

大,中,小:哪款平板電腦適合你
Windows7電腦系統便箋工具數據損壞怎麼辦?
有沒有一種可以放在電腦桌面又可以提醒記事的小工具?
win10電腦系統如何選擇可以設置提醒的備忘錄軟體?
電腦版敬業簽記事本怎麼查看已完成的事項

TAG:科技 | 電腦 |