自然語言處理要解決的問題:
其實,自然語言處理的應用非常廣泛,如:
-
垃圾郵件識別
通過自動分析郵件中的文本內容,判斷該郵件是否垃圾郵件。
-
中文輸入法
通過識別輸入的拼音字符串,識別用戶希望輸入的漢字。
-
機器翻譯
將文本從一種語言轉成另一種語言,如中英文機器翻譯。
-
自動問答、客服機器人
用文本輸入一個問題,再返回一段文本作為問題的答案。
……
這里簡單羅列了一些NLP的常見領域:分詞,詞性標注,命名實體識別,句法分析,語義識別,垃圾郵件識別,拼寫糾錯,詞義消歧,語音識別,音字轉換,機器翻譯,自動問答……
如果對自然語言處理的應用場景不太了解,可以去騰訊的中文語義平台簡單玩幾個例子就熟悉了。
3. 自然語言處理的發展現狀
根據stafford教授Dan Jurafsky的介紹:
-
有些問題得到了基本解決,如:詞性標注、命名實體識別、垃圾郵件識別。
-
有些問題取得長足進展,如:情感分析、共指消解、詞義消歧、句法分析、機器翻譯、信息抽取。
-
有些問題依然充滿挑戰,如:自動問答、復述、文摘提取、會話機器人等。
4. 用算法統攝問題
大家可能感受到了,自然語言處理的問題非常龐雜,一時還真不太好系統地梳理。
然而,從我們的學習自然語言處理的經驗來看,通過機器學習的基本思路,可以將很多問題都抽象成同樣的算法和模型來處理,這樣會清晰很多。
比如,詞性標注,垃圾郵件識別,褒貶分析,拼寫糾錯等問題都可以歸結成簡單的分類問題。這就好用我們之前掌握的機器學習分類方法去很好地處理。
又比如,對於機器翻譯,語音識別,音字轉換等等領域,都可以抽象成運用隱馬爾科夫模型去處理,而這本身是一個更加復雜的分類問題。
因此本系列文章盡量從算法原理的角度去梳理自然語言處理的問題,把這些原理在具體場景的不同變換方式給展示出來。
5. 文本處理基礎
5.1 正則表達式
對於英文等字符串類型的自然語言,正則表達式能夠很好地做一些簡單的處理工作。如詞干提取,大小寫轉換等。
現在主流的編程語言對正則表達式都有較好的支持,如Grep、Awk、Sed、Python、Perl、Java、C/C++。可以通過簡單的編程完成一些基本任務。
5.2 分詞
對於英文,分詞比較直觀。一般被空格區分開來的就是不同的詞。但是有些不同的詞匯表達需要我們細心判斷:

這需要我們根據不同的條件做一些簡單的判斷規則。
這樣的方法對英語這種包含固定分隔符的語言行之有效。但對於漢語、日語、德語以及我們上面的“三體文”等文本則不再適用,需要有專門的分詞技術。我們將在之后的文章中進行探討。
- 莎拉波娃現在居住在美國東南部的佛羅里達。
- 莎拉波娃 現在 居住 在 美國 東南部 的 佛羅里達
5.3 編輯距離
編輯距離(Minimum Edit Distance,MED),又稱Levenshtein距離,是指兩個字符串之間,由一個轉成另一個所需要的最少編輯操作次數。
允許的編輯操作包括:
- 將一個字符替換成另一個字符(substitution,s)
- 插入一個字符(insert,i)
- 刪除一個字符(delete,d)
一個簡單的示意圖如下:

我們可以使用動態規划算法解最小編輯距離,其形式化定義如下:

通過這種方法,給字符串之間定義了一個量化的“距離”的概念,而且很有解釋力。
在機器學習中,有了“距離”就可以做很多事情。比如判斷兩個字符串的相似性,做一些分類、聚類的工作。
在工程上,編輯距離可以用來提供用於拼寫糾錯的侯選單詞。比如我用英文輸入法輸入一個“girlfriand”的單詞。但是詞庫中沒有“girlfriand”這個詞。則可以尋找與“girlfriand”編輯距離為1或2的其他字符串,如“girlfriend”、“girlfriends”,作為糾正拼寫錯誤的候選詞。剩下的問題就是判斷哪個侯選詞的作為糾正詞的概率更高而已。
6. 分類問題基礎
由於自然語言處理中相當一部分都可以抽象成分類問題去處理。我們在這里補充一些分類問題的基本知識,方便以后探討。
6.1 分類問題的多種類型
-
二分類:判斷題
1.1 褒貶分析:判斷一段文本是“褒”還是“貶”。
1.2 垃圾郵件識別:判斷一封郵件是“正常郵件”還是“垃圾郵件”。
-
多分類:單選題
2.1 詞性標注:判斷一個詞語是名詞、動詞、形容詞、副詞等等。
2.2 拼寫糾錯:判斷多個侯選詞中的哪個詞可以作為最終的糾正詞。
2.3 中文分詞:從多種分詞序列中挑選最優序列。
2.4 機器翻譯:從多個備選翻譯句子中,判斷出最優翻譯語句。
-
類重疊分類:多選題
3.1 主題分析:判斷一個新聞同時包含哪幾類主題(美食、食品安全、健康等)

有時候管多選題叫做軟分類,單選題叫硬分類。
6.2 多分類的評估指標
對於一般二分類,我們評估的指標有召回率、精確度和F值。對於多分類我們也有類似的評價標准。如果cij為有多少篇ci的文檔被自動分類到cj類別下,則有:

7. 小結
本文主要是講了一些自然語言處理的淺層內容。我們從從破譯外星人文字導出自然語言處理過程中的經驗主義視角。因為業務場景十分繁雜,我們打算從機器學習算法的角度去觀察這些業務場景,以便有個清晰的認識。文本處理的一些基礎內容,如正則表達式、分詞斷句等是自然語言預處理過程中的常用手段。編輯距離是衡量兩個字符串相似性的尺度。了解這些基礎之后,就可以進行一些典型的自然語言處理問題了,比如文本分類。我們將在接下來的文章中一一介紹。
zhuan:hanxiaoyang