天然語言處理又稱計算語言學,其目標是讓計算機處理或"理解"天然語言,以完成有意義的任務。python
天然語言的難度
將天然語言與編程語言對比,直觀的的體會天然語言的複雜程度。算法
- 天然語言詞彙量大
- 天然語言是非結構化的,編程語言是結構化的
- 天然語言含有大量歧義
- 容錯性
- 易變性
- 簡略性-人類常常省略大量背景知識或嘗試說話
天然語言處理的層次
![QQ20200112-0](http://static.javashuo.com/static/loading.gif)
- 天然語言處理的輸入源有3個:語音、圖像和文本。
前二者分別須要經過語音識別和光學字符識別(OCR)轉化爲最後的文本內容。一旦轉化爲文本,就能夠開始NLP任務,對文本的處理纔是NLP的關鍵。
- 詞法分析:一般是後續高級任務的基礎
主要分爲三個任務:中文分詞,詞性標註,命名實體識別
中文分詞:將文本分爲有意義的詞語
詞性標註:肯定每一個詞語的類別和淺層的歧義消除
命名實體識別:識別出一些較長的專有名詞
- 句法分析:側重於分析句子的語法
- 語義分析與篇章分析:側重於分析句子的語義
主要分爲詞義消歧,語義角色標註乃至於語義依存分析。屬於較爲高級的課題
- 信息抽取:詞義分析後對部分結構化的文本抽取想要的關鍵短語乃至句子
- 文本分類和聚類
- 其餘高級任務:
上述的屬於「工具類」任務,比較基礎。自動問答、自動摘要、機器翻譯等就是綜合性的任務
注:通常認爲信息檢索(IR)是區別與天然語言處理的獨立學科。由於IR的目標是查詢信息,NLP的目標是理解語言。編程
天然語言處理的流派
- 基於規則的專家系統:嘗試用編程語言制定一系列的規則來表示人類語言。可是難以拓展。
- 基於統計的學習方法:運用統計模型和語料庫讓計算機本身學習
機器學習
上面的基於統計的學習方法就是以機器學習的方法。機器學習指的是計算機經過某項任務的經驗數據提升了在該項任務的能力。網絡
簡而言之,機器學習就是讓機器學會算法的算法。前面的算法就是想要獲得的用來完成指定任務的算法,後面的算法一般稱爲模型。架構
- 模型由假設函數和一系列參數構成
- 特徵提取和特徵模版
- 神經網絡也就是深度學習,屬於機器學習的一種
- 數據集(在NLP中稱爲語料庫)
- 監督學習:數據集中樣本由標註
- 無監督學習:數據集中樣本無標註。通常用於聚類和降維
- 半監督學習:將多個模型預測相同的無標註樣本做爲新的訓練樣本擴充訓練集
語料庫
語料庫就是NLP中的數據集,根據咱們想要教機器幹什麼,分爲不一樣的語料庫:中文分詞語料庫、詞性標註語料庫等。機器學習
開源工具
HanLP是由一系列模型與算法組成的Java工具包,目標是普及天然
語言處理在生產環境中的應用。HanLP具有功能完善、性能高效、架構
清晰、語料時新、可自定義的特色。
功能:中文分詞 詞性標註 命名實體識別 依存句法分析 關鍵詞提取
新詞發現 短語提取 自動摘要 文本分類 拼音簡繁編程語言
HanLP:函數
pip install pyhanlp
hanlp #第一次運行時會下載HanLP的jar包和數據包
#安裝完成後
hanlp -v #檢查一下
在 python中調用HanLP的經常使用接口:工具
from pyhanlp import *