關於自然語言處理(NLP)的閑談(寫在前面)
02-12
- 一直想做一個專欄討論自己在文本挖掘方面的學習心得,首先謝謝知乎給我提供的這個平台。做這件事情一方面是記錄並總結自己的學習歷程,另一方面也可以在業內更好地推廣有價值的知識。本人在上海某西南高校讀屌絲博士一枚,雖然做博士論文很苦悶,但是再忙也覺得應該把做知乎專欄這件事放在一個比較重要的日程上,無論如何,創造知識和分享知識都是作為一個「學者」的職責所在。這個專欄的題目是「深度學習與自然語言處理」,其實最開始只想寫自然語言處理,後來又加了深度學習,一方面為了裝逼,另外也覺得深度學習確實也是當前比較主流的數據分析技術之一,覺得以深度學習作為噱頭可以吸引更多的粉絲!嗯,話說到這份兒上,我也夠坦誠了,這樣真的好么!!… …
- 不管怎樣,我個人是對自然語言處理比較感興趣,喜歡平時學一些前沿的演算法和技術,在這個過程中踩過不少坑,看了一些,也經歷了許多Suffer的歷程,因此,想把這些經歷和大家好好聊聊分享。對於高手們,在下拋磚引玉了,對於菜鳥們(我自己也是),希望能夠讓你們更快地入行入道兒。總之,多多交流,對於學術,是尤為重要的。對於專欄文章的寫作風格,由於是面向普通大眾,我想寫的淺顯易懂一些,不想搞太多數學公式。比較理論晦澀的東西可以直接讀原版Paper,不需要我再抄一遍,另外無論是對於寫文章的還是看文章的,思考數學公式都是一件極其煩人的事情。一般情況下,除了在萌妹紙面前耍帥或忽悠期刊審稿人,搞太多公式並沒太大意義,公式只是學術理論嚴謹表達的一種媒介,相對於表面規整的學術表達,其背後的思想更為重要,這也是我想重點和大家聊的。學會了知識背後的思想,比真正弄懂一兩個公式演算法更有用。
- 接著,回到本欄目標題,深度學習暫且不說,對於自然語言處理,NLP,Natural Language Processing,聽著高大上,實際上就是文本挖掘,或者說對文本類型的數據進行分析的計算機技術。所以有時候我會講自然語是,平時業內小夥伴聊的時候,也會對文本挖掘和數據挖掘分開說,在表述上並不混為一談,要是一種處理文本的數據分析技術,就叫文本挖掘,處理其他類型的數據分析技術,都叫數據挖掘,要強調文本挖掘技術地位的特殊性!為什麼呢?因為文本挖掘技術比一般的數據挖掘技術要難,或者說,文言處理,有時候也會說文本挖掘,我覺得這兩個領域基本上是一回事。相比於文本挖掘,數據挖掘的概念在業界被提到的更多,也被提到的更早,因此也更被大眾所熟悉。實際上,文本挖掘也可以看作是數據挖掘的一個子類,是處理文本型數據的特殊的數據挖掘方法。文本挖掘技術,包含傳統的數據挖掘的技術,一些別的更複雜的技術。因此,在學習的過程中,一般是先學數據挖掘,再學文本挖掘,有一個進階的過程。
- 對於已經熟知傳統數據挖掘技術的同行朋友們,轉到自然語言處理這個領域再容易不過,因為在設計文本挖掘的技術時,並沒有更多稀奇的思路,通常文本分析師大多數的精力都是在考慮如何將文本型(Textual Type)的數據轉換成典型的數值型(Numeric Type)的數據,然後,再開發或者套用傳統的數據挖掘演算法去完成數值型的數據分析任務。因此,在解決自然語言處理問題的時候,主要關注的就是以下三個問題:一是要找一個合適的數學模型,對文本內容進行結構化的表示;二是設計實現這種結構化表示的演算法;第三就是如何基於這種結構化的表示,選擇有效的(或設計)數據挖掘方法,解決最終的實際問題。在解決自然語言處理問題時,這三件事通常要一起整體進行考慮,或者說,應該是倒序進行考慮:先是考慮,要解決什麼問題?然後去想,有哪些數據挖掘方法適合解決這樣的問題?之後想,為了採用這種方法,應該有什麼樣的數據結構?最後是,怎樣從已有的文本數據中提取這樣的數據結構?有了這樣的一個整體的概念,就可以拋開繁瑣的細節,而專註於最關鍵的核心技術。之後的文章,本人將根據自身的一些學習歷程(先後順序),整理並介紹核心的自然語言處理技術!
- 最後再談一下自然語言處理和大數據的關係。當前,大數據很火,但是也很空泛,你學大數據,除了學案例,學故事(好多講爛了的故事,包括什麼谷歌預測流感的…如果不知道可以看本人知乎文章),更重要的是學技術。大數據的技術包括多方面,數據挖掘是基本,但是自然語言處理技術更重要。IBM提出的大數據4V理念:Volumn(數量大),Veracity(準確性),Velocity(實時性),和Variety(多樣性),想必大家都知道,自然語言處理至少佔據了其中Volumn和Variety兩條。當前企業中,大部分的數據都是文本的數據,各網站存儲的數據中文本類型內容比例超過80%,因此,當結構化的數值型數據的價值被挖掘殆盡的時候,數據分析師就開始轉向非結構化的文本數據了,這也為業內朋友們提供了新的機遇與挑戰!
推薦閱讀: