1. 程式人生 > >Python自然語言處理實戰(1):NLP基礎

Python自然語言處理實戰(1):NLP基礎

      從建模的角度看,為了方便計算機處理,自然語言可以被定義為一組規則或符號的集合,我們組合集合中的符號來傳遞各種資訊。自然語言處理研究表示語言能力、語言應用的模型,通過建立計算機框架來實現這樣的語言模型,並且不斷完善這樣的語言模型,還需要根據語言模型來設計各種實用的系統,並且探討這些實用技術的評測技術。從自然語言的角度出發,NLP基本可以分為兩個部分:自然語言處理以及自然語言的生成,演化為理解和生成文字的任務。

      自然語言的理解是個綜合的系統工程,它又包含了很多細分學科,有代表聲音的音系學,代表構詞法的詞態學,代表語句結構的句法學,代表理解的語義句法學和語用學。

  • 音系學:指代語言中發音的系統化組織。
  • 詞態學:研究單詞構成以及相互之間的關係。
  • 句法學:給定文字的哪部分是語法正確的。
  • 語義學:給定文字的含義是什麼?
  • 語用學:文字的目的是什麼?

      自然語言生成恰恰相反,從結構化資料中以讀取的方式自動生成文字。該過程主要包含三個階段:文字規劃(完成結構化資料中的基礎內容規劃)、語句規劃(從結構化資料中組合語句來表達資訊流)、實現(產生語法通順的語句來表達文字)。

1.2、NLP的研究任務

  • 機器翻譯:計算機具備將一種語言翻譯成另一種語言的能力。
  • 情感分析:計算機能夠判斷使用者評論是否積極。
  • 智慧問答:計算機能夠正確回答輸入的問題。
  • 文摘生成:能夠準確歸納、總結併產生文字摘要。
  • 文字分類:能夠採集各種文章,進行主題分析,從而進行自動分類。
  • 輿論分析:能夠判斷目前輿論的導向。
  • 知識圖譜:知識點相互連線而成的語義網路。

1.3、NLP相關知識的構成

  1.  分詞(segment):詞是最小的能夠獨立活動的有意義的語言成分,英文單詞之間是以空格作為自然分界符的,而漢語是以字位基本的書寫單位,詞語之間沒有明顯的區分標記,因此,中文詞語分析是中文分詞的基礎和關鍵。中文分詞常用的手段是基於字典的最長串匹配,據說可以解決85%的問題,但是歧義分詞很難。
  2. 詞性標註(part-of-speech tagging):標註的目的是表徵詞的一種隱藏狀態,隱藏狀態構成的轉移就構成了狀態轉移序列。
  3. 命名實體識別(NER, Named Entity Recognition):從文字中識別具有特定類別的實體(通常是名詞)
  4. 句法分析(syntax parsing):往往是一種基於規則的專家系統。目的是解析句子中各個成分的依賴關係,可以解決傳統詞袋模型不考慮上下文的問題。
  5. 指代消解(anaphora resolution):中文中代詞出現的頻率很高
  6. 情感識別(emotion recognition):本質上是分類問題,通常可以基於詞袋模型+分類器,或者現在流行的詞向量模型+RNN。經過測試發現後者比前者準確率略有提升。
  7. 糾錯(correction):具體做法有很多,可以基於N-Gram進行糾錯,也可以通過字典樹、有限狀態機等方法進行糾錯。
  8. 問答系統(QA system):往往需要語音識別、合成、自然語言理解、知識圖譜等多項技術的配合才會實現得比較好。

    知識結構:NLP是研究人和機器之間用自然語言進行有效通訊的理解和方法。這需要很多跨學科的知識,需要語言學、統計學、最優化理論、機器學習、深度學習以及自然語言處理相關理論模型知識做基礎。

句法語義分析:針對目標句子,進行各種句法分析,如分詞、詞性標記、命名實體識別及連結、句法分析、語義角色識別和多義詞消歧等。

關鍵詞抽取:抽取目標文字中的主要資訊,比如從一條新聞中抽取關機資訊。主要是瞭解是誰、於何時、為何、對誰、做了何事、產生了有什麼結果。涉及實體識別、時間抽取、因果關係抽取等多項關鍵技術。

文字挖掘:主要包含了對文字的聚類、分類、資訊抽取、摘要、情感分析以及對挖掘的資訊和知識的視覺化、互動式的呈現介面。

機器翻譯:將輸入的源語言文字通過自動翻譯轉化為另一種語言的文字。根據輸入資料型別的不同,可細分位文字翻譯、語音翻譯、手語翻譯、圖形翻譯等。機器翻譯從最早的基於規則到二十年前的基於統計的方法,再到今天的基於深度學習(編解碼)的方法,逐漸形成了一套比較嚴謹的方法體系。

資訊檢索:對大規模的文件進行索引。可簡單對文件中的詞彙,賦以不同的權重來建立索引,也可使用演算法模型來建立更加深層的索引。查詢時,首先對輸入比進行分析,然後在索引裡面查詢匹配的候選文件,再根據一個排序機制把候選文件排序,最後輸出排序得分最高的文件。

問答系統:針對某個自然語言表達的問題,由問答系統給出一個精準的答案。需要對自然語言查詢語句進行語義分析,包括實體連結、關係識別,形成邏輯表示式,然後到知識庫中查詢可能的候選答案並通過一個排序機制找出最佳的答案。

對話系統:系統通過多回合對話,跟使用者進行聊天、回答、完成某項任務。主要涉及使用者意圖理解、通用聊天引擎、問答引擎、對話管理等技術。此外,為了體現上下文相關,要具備多輪對話能力。同時,為了體現個性化,對話系統還需要基於使用者畫像做個性化回覆。