做者:白寧超html
2016年9月23日00:24:12java
摘要:近來天然語言處理行業發展朝氣蓬勃,市場應用普遍。筆者學習以來寫了很多文章,文章深度層次不一,今天由於某種須要,將文章所有看了一遍作個整理,也能夠稱之爲概述。關於這些問題,博客裏面都有詳細的文章去介紹,本文只是對其各個部分高度歸納梳理。(本文原創,轉載註明出處:十分鐘學習天然語言處理概述 )算法
文本挖掘是信息挖掘的一個研究分支,用於基於文本信息的知識發現。文本挖掘的準備工做由文本收集、文本分析和特徵修剪三個步驟組成。目前研究和應用最多的幾種文本挖掘技術有:文檔聚類、文檔分類和摘要抽取。數組
天然語言處理是計算機科學領域與人工智能領域中的一個重要方向。它研究人與計算機之間用天然語言進行有效通訊的理論和方法。融語言學、計算機科學、數學等於一體的科學。
天然語言處理原理:形式化描述-數學模型算法化-程序化-實用化
語音的自動合成與識別、機器翻譯、天然語言理解、人機對話、信息檢索、文本分類、自動文摘等。服務器
中文文本詞與詞之間沒有像英文那樣有空格分隔,所以不少時候中文文本操做都涉及切詞,這裏整理了一些中文分詞工具。
Stanford(直接使用CRF 的方法,特徵窗口爲5。) 網絡
漢語分詞工具(我的推薦)機器學習
哈工大語言云函數
庖丁解牛分詞工具
盤古分詞 ICTCLAS(中科院)漢語詞法分析系統 學習
IKAnalyzer(Luence項目下,基於java的)
FudanNLP(復旦大學)
原理描述:標註一篇文章中的句子,即語句標註,使用標註方法BIO標註。則觀察序列X就是一個語料庫(此處假設一篇文章,x表明文章中的每一句,X是x的集合),標識序列Y是BIO,即對應X序列的識別,從而能夠根據條件機率P(標註|句子),推測出正確的句子標註。
顯然,這裏針對的是序列狀態,即CRF是用來標註或劃分序列結構數據的機率化結構模型,CRF能夠看做無向圖模型或者馬爾科夫隨機場。 用過CRF的都知道,CRF是一個序列標註模型,指的是把一個詞序列的每一個詞打上一個標記。通常經過,在詞的左右開一個小窗口,根據窗口裏面的詞,和待標註詞語來實現特徵模板的提取。最後經過特徵的組合決定須要打的tag是什麼。
1 CRF:在CRF for Chinese NER這個任務中,提取的特徵大可能是該詞是否爲中國人名姓氏用字,該詞是否爲中國人名名字用字之類的,True or false的特徵。因此一個可靠的百家姓的表就十分重要啦~在國內學者作的諸多實驗中,效果最好的人名能夠F1測度達到90%,最差的機構名達到85%。
2 字典法:在NER中就是把每一個字都當開頭的字放到trie-tree中查一遍,查到了就是NE。中文的trie-tree須要進行哈希,由於中文字符太多了,不像英文就26個。
3 對六類不一樣的命名實體採起不同的手段進行處理,例如對於人名,進行字級別的條件機率計算。 中文:哈工大(語言云)上海交大 英文:stanfordNER等
7.1 語料庫知識?
語料庫做爲一個或者多個應用目標而專門收集的,有必定結構的、有表明的、可被計算機程序檢索的、具備必定規模的語料的集合。
語料庫劃分:① 時間劃分② 加工深度劃分:標註語料庫和非標註語料庫③ 結構劃分⑤ 語種劃分⑥ 動態更新程度劃分:參考語料庫和監控語料庫
語料庫構建原則:① 表明性② 結構性③ 平衡性④ 規模性⑤ 元數據:元數據對
語料標註的優缺點
① 優勢: 研究方便。可重用、功能多樣性、分析清晰。
② 缺點: 語料不客觀(手工標註準確率高而一致性差,自動或者半自動標註一致性高而準確率差)、標註不一致、準確率低
7.2 條件隨機場解決標註問題?
條件隨機場用於序列標註,中文分詞、中文人名識別和歧義消解等天然語言處理中,表現出很好的效果。原理是:對給定的觀察序列和標註序列,創建條件機率模型。條件隨機場可用於不一樣預測問題,其學習方法一般是極大似然估計。
我愛中國,進行序列標註案例講解條件隨機場。(規則模型和統計模型問題)
條件隨機場模型也須要解決三個基本問題:特徵的選擇(表示第i個觀察值爲「愛」時,相對yi,yi-1的標記分別是B,I),參數訓練和解碼。
7.3 隱馬爾可夫模型
應用:詞類標註、語音識別、局部句法剖析、語塊分析、命名實體識別、信息抽取等。應用於天然科學、工程技術、生物科技、公用事業、信道編碼等多個領域。
馬爾可夫鏈:在隨機過程當中,每一個語言符號的出現機率不相互獨立,每一個隨機試驗的當前狀態依賴於此前狀態,這種鏈就是馬爾可夫鏈。
多元馬爾科夫鏈:考慮前一個語言符號對後一個語言符號出現機率的影響,這樣得出的語言成分的鏈叫作一重馬爾可夫鏈,也是二元語法。二重馬爾可夫鏈,也是三元語法,三重馬爾可夫鏈,也是四元語法
隱馬爾可夫模型思想的三個問題
問題1(似然度問題):給一個HMM λ=(A,B) 和一個觀察序列O,肯定觀察序列的似然度問題 P(O|λ) 。(向前算法解決)
問題2(解碼問題):給定一個觀察序列O和一個HMM λ=(A,B),找出最好的隱藏狀態序列Q。(維特比算法解決)
問題3(學習問題):給定一個觀察序列O和一個HMM中的狀態集合,自動學習HMM的參數A和B。(向前向後算法解決)
7.4 Viterbi算法解碼
思路:
1 計算時間步1的維特比機率
2 計算時間步2的維特比機率,在(1) 基礎計算
3 計算時間步3的維特比機率,在(2) 基礎計算
4 維特比反向追蹤路徑
維特比算法與向前算法的區別:
(1)維特比算法要在前面路徑的機率中選擇最大值,而向前算法則計算其總和,除此以外,維特比算法和向前算法同樣。
(2)維特比算法有反向指針,尋找隱藏狀態路徑,而向前算法沒有反向指針。
HMM和維特比算法解決隨機詞類標註問題,利用Viterbi算法的中文句法標註
7.5 序列標註方法 參照上面詞性標註
7.6 模型評價方法
模型:方法=模型+策略+算法
模型問題涉及:訓練偏差、測試偏差、過擬合等問題。一般將學習方法對未知數據的預測能力稱爲泛化能力。
模型評價參數:
準確率P=識別正確的數量/所有識別出的數量
錯誤率 =識別錯誤的數量/所有識別出的數量
精度=識別正確正的數量/識別正確的數量
召回率R=識別正確的數量/所有正確的總量(識別出+識別不出的)
F度量=2PR/(P+R)
數據正負均衡適合準確率 數據不均適合召回率,精度,F度量
幾種模型評估的方法:
K-折交叉驗證、隨機二次抽樣評估等 ROC曲線評價兩個模型好壞
完成對2002--2010年17套GET真題的核心單詞抽取。其中包括數據清洗,停用詞處理,分詞,詞頻統計,排序等經常使用方法。真題算是結構化數據,有必定規則,比較容易處理。此過程其實就是數據清洗過程)最後把全部單詞集中彙總,再去除如:a/an/of/on/frist等停用詞(中文文本處理也須要對停用詞處理,諸如:的,地,是等)。處理好的單詞進行去重和詞頻統計,最後再利用網絡工具對英語翻譯。而後根據詞頻排序。
8.1 Apache Tika?
Apache Tika內容抽取工具,其強大之處在於能夠處理各類文件,另外節約您更多的時間用來作重要的事情。
Tika是一個內容分析工具,自帶全面的parser工具類,能解析基本全部常見格式的文件
Tika的功能:•文檔類型檢測 •內容提取 •元數據提取 •語言檢測
8.2 文本詞頻統計?詞頻排序方法?
算法思想:
1 歷年(2002—2010年)GET考試真題,文檔格式不一。網上收集
2 對全部格式不一的文檔進行統計處理成txt文檔,格式化(去除漢字/標點/空格等非英文單詞)和去除停用詞(去除891個停用詞)處理。
3 對清洗後的單詞進行去重和詞頻統計,經過Map統計詞頻,實體存儲:單詞-詞頻。(數組也能夠,只是面對特別大的數據,數組存在越界問題)。排序:根據詞頻或者字母
4 提取核心詞彙,大於5的和小於25次的數據,能夠本身制定閾值。遍歷list<實體>列表時候,經過獲取實體的詞頻屬性控制選取詞彙表尺寸。
5 最後一步,中英文翻譯。
9.1 樸素貝葉斯公式
0:喜悅 1:憤怒 2:厭惡 3:低落
9.2 樸素貝葉斯原理
-->訓練文本預處理,構造分類器。(即對貝葉斯公式實現文本分類參數值的求解,暫時不理解不要緊,下文詳解)
-->構造預測分類函數
-->對測試數據預處理
-->使用分類器分類
對於一個新的訓練文檔d,究竟屬於如上四個類別的哪一個類別?咱們能夠根據貝葉斯公式,只是此刻變化成具體的對象。
> P( Category | Document):測試文檔屬於某類的機率
> P( Category)):從文檔空間中隨機抽取一個文檔d,它屬於類別c的機率。(某類文檔數目/總文檔數目)
> (P ( Document | Category ):文檔d對於給定類c的機率(某類下文檔中單詞數/某類中總的單詞數)
> P(Document):從文檔空間中隨機抽取一個文檔d的機率(對於每一個類別都同樣,能夠忽略不計算。此時爲求最大似然機率)
> C(d)=argmax {P(C_i)*P(d|c_i)}:求出近似的貝葉斯每一個類別的機率,比較獲取最大的機率,此時文檔歸爲最大機率的一類,分類成功。
綜述
1. 事先收集處理數據集(涉及網絡爬蟲和中文切詞,特徵選取)
2. 預處理:(去掉停用詞,移除頻數太小的詞彙【根據具體狀況】)
3. 實驗過程:
數據集分兩部分(3:7):30%做爲測試集,70%做爲訓練集
增長置信度:10-折交叉驗證(整個數據集分爲10等份,9份合併爲訓練集,餘下1份做爲測試集。一共運行10遍,取平均值做爲分類結果)優缺點對比分析
4. 評價標準:
宏評價&微評價
平滑因子
9.3 生產模型與判別模型區別
1)生產式模型:直接對聯合分佈進行建模,如:隱馬爾科夫模型、馬爾科夫隨機場等
2)判別式模型:對條件分佈進行建模,如:條件隨機場、支持向量機、邏輯迴歸等。
生成模型優勢:1)由聯合分佈2)收斂速度比較快。3)可以應付隱變量。 缺點:爲了估算準確,樣本量和計算量大,樣本數目較多時候不建議使用。
判別模型優勢:1)計算和樣本數量少。2)準確率高。缺點:收斂慢,不能針對隱變量。
9.4 ROC曲線
ROC曲線又叫接受者操做特徵曲線,比較學習器模型好壞可視化工具,橫座標參數假正例率,縱座標參數是真正例率。曲線越靠近對角線(隨機猜想線)模型越很差。
好的模型,真正比例比較多,曲線應是陡峭的從0開始上升,後來遇到真正比例愈來愈少,假正比例元組愈來愈多,曲線平緩變的更加水平。徹底正確的模型面積爲1
信息圖形化(餅圖,線形圖等)
集中趨勢度量(平均值 中位數 衆數 方差等)
機率
排列組合
分佈(幾何二項泊松正態卡方)
統計抽樣
樣本估計
假設檢驗
迴歸
句子理解、自動問答系統、機器翻譯、句法分析、標註、情感分析、文本和視覺場景和模型, 以及天然語言處理數字人文社會科學中的應用和計算。
Apache的OpenNLP庫是天然語言文本的處理基於機器學習的工具包。它支持最多見的NLP任務,如斷詞,句子切分,部分詞性標註,命名實體提取,分塊,解析和指代消解。
句子探測器:句子檢測器是用於檢測句子邊界
標記生成器:該OpenNLP斷詞段輸入字符序列爲標記。常是這是由空格分隔的單詞,但也有例外。
名稱搜索:名稱查找器可檢測文本命名實體和數字。
POS標註器:該OpenNLP POS標註器使用的機率模型來預測正確的POS標記出了標籤組。
細節化:文本分塊由除以單詞句法相關部分,如名詞基,動詞基的文字,但沒有指定其內部結構,也沒有其在主句做用。
分析器:嘗試解析器最簡單的方法是在命令行工具。該工具僅用於演示和測試。請從咱們網站上的英文分塊
Lucene是一個基於Java的全文信息檢索工具包,它不是一個完整的搜索應用程序,而是爲你的應用程序提供索引和搜索功能。Lucene 目前是 Apache Jakarta(雅加達) 家族中的一個 開源項目。也是目前最爲流行的基於Java開源全文檢索工具包。
目前已經有不少應用程序的搜索功能是基於 Lucene ,好比Eclipse 幫助系統的搜索功能。Lucene可以爲文本類型的數 據創建索引,因此你只要把你要索引的數據格式轉化的文本格式,Lucene 就能對你的文檔進行索引和搜索。
Solr它是一種開放源碼的、基於 Lucene Java 的搜索服務器。Solr 提供了層面搜索(就是統計)、命中醒目顯示而且支持多種輸出格式。它易於安裝和配置, 並且附帶了一個基於HTTP 的管理界面。可使用 Solr 的表現優異的基本搜索功能,也能夠對它進行擴展從而知足企業的須要。
Solr的特性包括:
•高級的全文搜索功能
•專爲高通量的網絡流量進行的優化
•基於開放接口(XML和HTTP)的標準
•綜合的HTML管理界面
•可伸縮性-可以有效地複製到另一個Solr搜索服務器
•使用XML配置達到靈活性和適配性
•可擴展的插件體系 solr中文分詞
主要特徵選取、隨機森林、主成分分析、線性降維
1 肯定領域本體的專業領域和範疇
2 考慮複用現有的本體
3 列出本體涉及領域中的重要術語
4 定義分類概念和概念分類層次
5 定義概念之間的關係
主要特色:本體更強調共享、重用,能夠爲不一樣系統提供一種統一的語言,所以本體構建的工程性更爲明顯。
方法:目前爲止,本體工程中比較有名的幾種方法包括TOVE 法、Methontology方法、骨架法、IDEF-5法和七步法等。(大可能是手工構建領域本體)
現狀: 因爲本體工程到目前爲止仍處於相對不成熟的階段,領域本體的建設還處於探索期,所以構建過程當中還存在着不少問題。
方法成熟度: 以上經常使用方法的依次爲:七步法、Methontology方法、IDEF-5法、TOVE法、骨架法。