人工智能之自然語言處理是干什么的?
自然語言處理(NLP, Nature Language Processing),對一般人來說是個陌生的概念。但是,作為人類,每天都在處理著自然語言。
這里的自然語言,是相對于計算機語言說的,就是人們平常說的話,漢語、英語、法語等等人類創造并使用的語言就是自然語言,是人類發展過程中“自然”產生的。
計算機語言是計算機被發明后,人類為了更好的使用計算機、與計算機溝通而編制的語言,相較于自然語言,它更簡單更規則化。
自然語言處理,也是在計算機領域才被提及的,是計算機應用的一個分支,是讓計算機處理人類的語言,并試圖理解人類的語言。其實,我們每個人每天的說話、讀書、寫字都是在處理著自然語言,但不能說每個人都是弄自然語言處理的。
世界上絕大多數的人類語言都有文字,人類歷史很長很長的時間(在留聲機發明之前)都是通過文字記載歷史、傳承知識的。那些沒有文字的語言基本上都消亡了吧。
在計算機時間里,文字被二進制化存儲在硬盤、光盤等存儲介質里面。通常我們使用電腦時說的“文本”(比如,你正在對的這篇文章)就是計算機記錄的自然語言——文字。
另外,自然語言也可以被計算機記錄為另外一種形式——語音。文本是看的,語音是聽的。不過文字的信息密度要比語音高很多,你可以體會一下微信聊天。別人發給你的消息,文本的話幾秒鐘就看完了,同樣的信息量可能要聽一分鐘的語音才能獲得。這也是好多人聊天時不喜歡對方發語音的緣故。
人類的語言很多,對應的文字也就很多。計算機要存儲這些不同的語言文字就要對各種文字進行編碼。這就是計算機字符編碼。
英文最簡單,26個英文字母就搞定,最多再加上10個阿拉伯數字,和一些標點符號,再區分一下大小寫,所有加起來不超過128個(2的8次方,計算機的二進制對2的n次方渾然天成)。編碼很容易,形成了ascii編碼,占用一個字節,從0開始排到127足夠。
歐洲有些國家的文字就不止是26個英文字母了,還有其它字母,比如法語、俄語等。還好他們還都是字母文字,再往后排就是了。
但是到了亞洲,尤其是中國,中文漢子一下子就多了起來,有幾萬個啦,這下一個字節是裝不下了。開始用更多字節進行編碼。
計算機發展一開始,就只有ascii編碼。后來各個國家為了在計算機上存儲自己國家的文字就自己搞了自己的文字編碼。中國漢字最初是GB-2312,這個國家標準用兩個字節來表示一個漢字,按道理兩個字節最多可以有2的16次方也就是65536個漢字,但是這個標準只編碼進去6000多個漢字。這個標準的直接后果是,早期很多稍微不常用的字在計算機中就無法使用,比如朱镕基的“镕”字就不包含在里面。這也導致公安的計算機系統登記人名時常常用其它字代替的后果。
這樣下去可不行,就有搞了個GBK、GB18030擴展了GB-2312,把更多的漢字(包括繁體字)也包括進去了。從此在計算機上使用漢字的效果基本很好了。
同樣其它亞洲國家,比如日本最初也自己搞了自己日文的編碼。
各國國家自己搞編碼自己用,也無大礙,畢竟國家與國家之間的計算機文本交換很少。當互聯網發展起來時,各自編碼的方式就嚴重阻礙了信息交流。比如早起上網的人經常遇到網頁亂碼的問題。
各自編碼之后,兩個世界組織ISO和unicode.org試圖分別搞個統一的編碼,后來他們合并了,經過幾十年的努力,現在的Unicode幾乎完美了,它囊括了世界上各種語言文字的字符,還包括emoji字符,比如這個笑臉:?
隨著計算機記錄的文字資料越來多,尤其是伴隨著互聯網發展,文字資料與日俱增。如何讓計算機自動處理這些文字資料甚至是理解這些文字呢?計算機專家們為此開始了幾十年的研究。
我根據自己的認識來總結以下自然語言處理這些年都干了些什么,有哪些好的應用。
一、基礎研究
(1)詞、分詞
統一一下文本里面的詞頻,看看哪些詞是提及最多的等等。
英文,詞與詞之間是用空格分開的,統計詞很簡單。最多加上stemming算法,就是同一個詞的不同時態、單復數等處理。
中文,詞與詞之間沒有空隙,最多在句子之間有標點符號。要統計中文詞匯,首先要做個分詞的步驟,業內術語叫做“中文分詞”。做分詞研究是中文自然語言處理的第一步,方法有很多種,無非是詞典和機器學習。
(a)基于詞典的方法
搞一個漢語詞典,以一定的數據結構存儲方便查找。其中一種叫做“Trie Tree”的數據結構很合適。詞典的持續更新很重要,詞典里面沒有的新詞就只能被分成單字。基于詞典的有點就是一個字:快!
字典的持續更新是可以做到的,爬蟲每天爬蟲新聞、微博的內容,用新詞發現算法從中發現新詞更新到詞典中。
新詞發現算法,是一直統計算法,在一堆語料中通過統計計算字與字之間的粘合度、左右鄰居的信息熵就可以把其中的詞找出來,效果很好。
(b)機器學習
早些年的機器學習方法有HMM(隱馬爾可夫模型),CRF(條件隨機場),效果都不錯,在封閉訓練集上等達到百分之九十幾的準確率。這些機器學習的方法能在一定程度上識別新詞,但僅僅是一定程度上。
最近幾年深度學習發展很快,有些研究者把它用到分詞上也達到了很好的效果。不過,總感覺這是殺雞用牛刀。
實際應用中,都是字典加機器學習的方法結合來用的。
(2)詞性標注(POS)
詞性是人類語言文字中的一個規則,而這個規則又比較松散,一個詞有多個詞性,位置不同詞性不同,人類自己識別起來都很費勁。詞性標注,就是讓計算機通過一定的算法把一句話里面的每個詞分成不同的詞性。
詞性標注,一般都是用機器學習的方法來做。通過人工事先標注好的語料來進行機器學習得到一個模型,計算機程序使用這個模型再來對其它文本進行標注。早期的機器學習方法有HMM,CRF等。這些年也可以上深度學習來做。
(3)命名實體識別(NER)
命名實體,就是代表一個實體的詞匯,比如,人名、地名、機構名。這個一般的做法是規則+機器學習的方法。CRF同樣在這里有用武之地。
(4)句法分析
讓計算機來把一句話的主謂賓、定狀補給分析出來。這也是一項挑戰。同樣,它也可以通過CRF來實現。
以上過程,分詞、詞性標注、命名實體識別、依存句法分析都可以用CRF來實現。從原理上,他們有相同的特點,都是最字或詞的一種標注。
CRF分詞是由字組詞的過程,訓練語料把每個字標記成詞的開頭、中間、結尾等標記。訓練過程是學習這些字、標記的上下文關系;分詞過程是根據學習的關系給字打上標記,再根據這些標記組成詞。
CRF詞性標注、命名實體識別、句法分析是同樣的道理,但他們標注的都是詞、詞性等關系。
(5)語音處理
以上談及的都是對文本內容的研究,語言的另一種形式——語音也是多年來計算機研究的一個領域。
這里的語音處理主要是跟自然語言處理相關的,最主要的是語音轉文本,其它還有文本轉語音,喚醒詞識別。
喚醒詞識別,值得特別介紹一下。現在智能設備很多,智能語音助手、智能音響等具有語音交互功能的軟硬件產品,基本上都有一個“語音喚醒功能”。比如你給你的智能音響或機器人起了個名字叫“小白”,你叫它“小白”以后,它就開始和你交互了;如果你叫它“小黑”,它就不搭理你。這個“小白”就是它的喚醒詞,每個人對自己的產品都可以用不同的喚醒詞。喚醒詞識別做的就是如何訓練一個特定詞匯的識別模型,甚至還包括個人音色特征(別人叫它小白也不行)。
以上就是自然語言處理做的基礎研究內容,這些基礎研究有什么應用能讓我們的生活更美好呢?
版權申明:若沒有特殊說明,文章皆是猿人學原創,沒有猿人學授權,請勿以任何形式轉載。
計算 自然語言處理 機器學習
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。