1. 程式人生 > >自然語言處理如何入門

自然語言處理如何入門

意義 更新 枯燥 最大的 處理 計算 關聯分析 教育 詞典

ps:筆者會持續更新~

領域分支概括

俗話說得好:

做research或者學習某個技能最重要的是要對自己的research要非常熟悉(3mins讓別人聽懂你做的這玩意兒是個啥,contribution在哪裏,讓別人覺得你做的東西有意義)

那麽我就整理一下自然語言處理相關領域分支~

自然語言包括許多分支,主要有:

機器翻譯、自動文摘、信息檢索、文檔分類、問答系統、信息過濾、信息抽取、文本挖掘、語音識別等。

其中很多分支都是相互交叉的,大家可以根據自己的興趣專攻某個領域。我的方向則為人工智能->機器學習->自然語言處理(NLP)->文本挖掘

那麽機器學習在文本挖掘中有哪些應用呢?

(1)話題識別

話題識別屬於文本分類,實驗中常見的例子就是把新聞文本分類成“財經、教育、體育、娛樂”等等。我目前常用的方法主要是“word2vector”和“word to bags”。 word2vector即“詞向量”,通過計算文本中詞出現的位置、詞性和頻率等特征,判斷新文本是否來自於此類。比如識別文字是評論性文本還是新聞類文本的一種方案就是評論性語句中出現的情態動詞和感嘆詞比較多且位置不固定。“word to bags”是詞袋,在topic model中應用的比較多。“word to bags”計算每個詞出現在每個類別的概率,然後通過TF-IDF或者信息增益或者概率找到類別信息含量高的詞語,通過判斷這些詞語的共線程度進行文本分類。

(2)情感分類

情感分析就是用戶的態度分析。現在大多數情感分析系統都是對文本進行“正負二項分類的”,即只判斷文本是正向還是負向的,有的系統也能做到三分類(中立)。比如,我要分析用戶對2013年“馬航370事件”的態度,只要找到該事件的話題文本,通過臺大情感詞典等工具判斷情感詞的極性,然後根據一定規則組合情感詞的頻度和程度即可判斷文本的情感。但這種方法無法判斷文本的評價刻面。比如,我現在有一百萬條“小米手機評價”信息,我可以通過上面的方法了解大約有百分之多少的用戶對小米手機是不滿意的,但卻無法知道這些不滿意的用戶是對小米手機的哪一個方面不滿意以及占的比率(比如是外形還是性能)。常用的方法是構建小米手機相關詞的種子詞典,通過詞典找到用戶評論的刻面,再構建句法樹找到評論該刻面的謂語和修飾副詞,通過情感詞典量化出情感極性,最後將量化後的評論刻面、修飾詞、程度副詞帶入SVM進行文本分類。不過在這裏並不適合使用naive bayes,因為在多刻面多分類中,naive bayes很容易出現過擬合。

(3)命名實體識別

所謂的命名實體識別是指讓計算機自動識別出自己不認識的詞。比如:“胡歌唱歌非常好聽!”,計算機如何才能知道“胡歌”是一個詞而不應該是“歌唱”是一個詞呢?“胡歌”這個詞對於絕大多數詞庫而言都不太可能存在,那麽怎麽能讓機器識別出這個詞並且以最大的可能認為這個詞是正確的呢?我認為在所有的方法中,CRF的效果最好,甚至比HMM要好得多。CRF又稱條件隨機場,它能夠記錄訓練數據中每個特征的狀態及其周圍特征的狀態,當多個特征同時出現的時候,找出每個特征在多個特征組合中最有可能出現的狀態。也就是說,CRF以“物以類聚”為基本論點,即大多數詞出現的環境是有規律的,並不是雜亂無章的。選取特征的時候,以“字”為單位明顯要比以“詞”為單位好很多,因為命名實體的詞是以字為單位才能理解的,比如“陳小春”,我們是以“陳/小/春”的意思來理解的,而不是“陳/小春”或者“陳小/春”。

(4)推薦系統

文本挖掘在推薦系統中的價值在於特征詞權重的計算。比如我們給用戶推薦一本新書。我們可以按照下面的方式進行建模:首先找到用戶評論中關於書籍的所有特征詞匯,建立特征詞典;然後通過文本分析和時間序列分析結合用戶評論的內容和時間緊湊度計算特征詞的權重,表示某個用戶關心的某個特征的程度。對建立好的用戶評論特征程度表進行倒排索引,找到每個特征詞的所有評價用戶及其評價的權重,最後根據要推薦的書籍的特征找到可以推薦的用戶列表,找到評論權重高的用戶並把書籍推薦給他。

目前文本挖掘的主要研究領域有:文本結構分析、文本摘要、文本分類、文本聚類、文本關聯分析、分布分析和趨勢預測等。

所需知識儲備

下面來說一說學習人工智能->機器學習->自然語言處理(NLP)->文本挖掘都需要哪些知識儲備:

這裏不僅僅是文本挖掘方向,整個NLP領域內其實都是適用的,只不過某個特殊領域會有細微的技術差別,但整體入門,還無需那麽深入嘞~

  • 統計學習方法

    這個是最重要的,想要在這個領域深入研究,必須摸透統計學習方法,這裏推薦李航教授的《統計學習方法》,一開始大家可能覺得枯燥無味,最好是結合相關的實際應用和代碼來閱讀,效果最好,理解起來也更方便一些。

  • NLP的整體流程

    這個大家一定要熟悉,對於流程中的每個步驟都爛熟於心,並知道什麽時候運用什麽方法解決問題,這是NLP的核心,包含的東西非常多,我未來會在博客中詳細講解

  • 一門語言

    學計算機歸根到底還是需要用代碼實現,光靠想點子也不成,所以大家一定要精通一門語言,最近機器學習最火熱的大家應該都知道,就是python嘞~

自然語言處理如何入門