華為AI全棧成長計劃課程——AI應用篇——第二週筆記
阿新 • • 發佈:2020-12-01
第2章 人工智慧的詩與遠方:NLP案例
2.1 NLP介紹
自然語言處理
- 自然語言處理(NLP, Natural Language Processing),作為AI領域中最重要的分支之一,與語言文字這一承載人類文明的重要載體緊密相連,研究語言能力和語言應用的模型,建立計算機(演算法)框架來實現這樣的語言模型,並完善、評測、最終用於設計各種實用系統。
- 自然語言處理領域常見任務,並按照任務型別分成五大類:
- 詞法分析:對自然語言進行詞彙層面的分析,是NLP基礎性工作。
- 句子分析:對自然語言進行句子層面的分析,包括句法分析和其他句子級別的分析任務。
- 語義分析:對給定文字進行分析和理解,形成能夠表達語義的形式化表示或分散式表示。
- 資訊抽取:從無結構文字中抽取結構化的資訊。
- 頂層任務:直接面向普通使用者,提供自然語言處理產品服務的系統級任務,會用到多個層面的自然語言處理技術。
神經網路語言模型發展
- 語言模型:語言模型就是用來計算一個句子的概率的模型,也就是判斷一句話是否是人說出來的自然句子的概率。語言模型包括文法語言模型和統計語言模型。
- 詞向量(word embedding):詞向量是為了解決自然語言處理領域的文字資訊表示問題。在自然語言處理領域,將每個詞對映成一個向量編碼,作為神經網路的輸入。詞向量的核心問題是上下文與目標詞之間的關係建模。
- ELMO:Word Embedding無法解決多義詞問題,Word Embedding本質是一個靜態的方式,不會根據上下文的改變而變化。所以引出ELMO(Embedding from Language Models)。
- GPT(Generative Pre-Training):其含義是指的生成式的預訓練。GPT 的預訓練雖然仍然是以語言模型作為目標任務,但是採用的是單向的語言模型,單向的含義是指:只使用單詞的上文來進行預測,而拋開了下文。
- NNLM(神經網路語言模型):通過為每個單詞學習一個分散式表徵來實現在連續空間上的建模。
- Transformer:Transformer 是個疊加的自注意力機制(Self Attention)構成的深度網路,是目前NLP裡最強的特徵提取器。
語料
- 在自然語言處理領域,資料就是語料,語料的集合被稱為語料庫(Corpus)。語料的獲取方式有以下幾種:
- 業務提供的已有語料
- 國內外標準開放資料集
- 通過爬蟲抓取網路資料(合法情況下)
在獲取語料的基礎上,另一個重要的步驟是語料的預處理。語料的質量直接影響模型的訓練效能,噪聲很大、與任務無關的語料需要進過一系列預處理工作才可以被使用。在一個完整的中文自然語言處理工程應用中,語料預處理大概會佔到50%-70%的工作量。常用的語料預處理方式包括:去除不規則符號及格式,人工去重、對齊、刪除和標註等,或者規則提取內容、正則表示式匹配、根據詞性和命名實體提取、編寫指令碼或者程式碼批處理等。
jieba中文分片語件
- 近年來,隨著 NLP 技術的日益成熟,開源的分詞工具越來越多,如Ansj、盤古分詞等。在本部分中,我們選取了優秀的 Python 中文分片語件——jieba。
1 分詞
- 分詞任務是中文自然語言處理的基礎性工作。漢語是以字位單位,不像西方語言,詞與詞之間沒有空格之類的標誌指示詞的邊界。詞是最小的能夠獨立活動的有意義的語言成分,因此分詞的好壞直接對後續文字處理任務起到關鍵作用。
- 中文分詞示例:
北京 / 故宮 / 是 / 中國 / 明清 / 兩代 / 的 / 皇家 / 宮殿 / , / 舊稱 / 紫禁城,位於 / 北京 / 中軸線 / 的 / 中心 / , / 是 / 中國 / 古代 / 宮廷 / 建築 / 之 / 精華 / 。 / 北京 / 故宮 / 佔地 / 面積 / 72 / 萬 / 平方米 / , / 建築 / 面積 / 約 / 15 / 萬 / 平方米 / 。
- 中文分詞方法
- 基於字典、詞庫匹配的分詞方法(基於規則):基於字串匹配分詞,機械分詞演算法。將待分的字串與一個充分大的機器詞典中的詞條進行匹配。分為正向匹配和逆向匹配;最大長度匹配和最小長度匹配;單純分詞和分詞與標註過程相結合的一體化方法。所以常用的有:正向最大匹配,逆向最大匹配,最少切分法。
- 基於詞頻度統計的分詞方法(基於統計):相鄰的字同時出現的次數越多,越有可能構成一個詞語,對語料中的字組頻度進行統計,基於詞的頻度統計的分詞方法是一種全切分方法。
- 基於知識理解的分詞方法:該方法主要基於句法、語法分析,並結合語義分析,通過對上下文內容所提供資訊的分析對詞進行定界。由於漢語語言知識的籠統、複雜性,難以將各種語言資訊組織成機器可直接讀取的形式。因此目前基於知識的分詞系統還處在試驗階段。
- jieba 分詞結合了基於規則和基於統計這兩類方法。
首先基於字首詞典進行詞圖掃描,字首詞典是指詞典中的詞按照字首包含的順序排列,例如詞典中出現了“廣”,之後以“廣”開頭的詞都會出現在這一部分,例如“廣東”,進而會出現“廣東省”,從而形成一種層級包含結構。
如果將詞看作節點,詞和詞之間的分詞符看作邊,那麼一種分詞方案則對應著從第一個字到最後一個字的一條分詞路徑。
因此,基於字首詞典可以快速構建包含全部可能分詞結果的有向無環圖,這個圖中包含多條分詞路徑,有向是指全部的路徑都始於第一個字、止於最後一個字,無環是指節點之間不構成閉環。
基於標註語料,使用動態規劃的方法可以找出最大概率路徑,並將其作為最終的分詞結果。對於未登入詞,jieba使用了基於漢字成詞的 HMM(隱馬爾可夫模型)模型,採用了 Viterbi(維特比)演算法進行推導。 - jieba 分詞支援三種分詞模式:
- 全模式:把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義;
- 精確模式:試圖將句子最精確地切開,適合文字分析;
- 搜尋引擎模式:在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜尋引擎分詞。
2 關鍵詞提取
- 關鍵詞提取就是從文本里面把跟這篇文章意義最相關的一些詞語抽取出來,在文獻檢索、自動文摘、文字分類等方面有著重要的應用。
目前比較常用的關鍵詞提取演算法都是基於無監督演算法,如:TF-IDF 演算法,TextRank 演算法和主題模型演算法(包括LSA,LSI,LDA等)。
jieba 提供了兩種關鍵詞提取方法,分別基於 TF-IDF 演算法和 TextRank 演算法。 - TF-IDF 演算法
TF-IDF(Term Frequency-Inverse Document Frequency, 詞頻-逆檔案頻率)是一種統計方法,用以評估一個詞語對於一個檔案集或一個語料庫中的一份檔案的重要程度,其原理為:一個詞語在一篇文章中出現次數越多,同時在所有文件中出現次數越少,越能夠代表該文章。 - TextRank 演算法
TextRank是另一種關鍵詞提取演算法,其基本思想來源於PageRank演算法,通過把文字分割成若干組成單元(單詞、句子)並建立圖模型,利用投票機制對文字中的重要成分進行排序,僅利用單篇文件本身的資訊即可實現關鍵詞提取、文摘。
3 詞性標註
- 詞性標註(POS tagging,Part-Of-Speech tagging)也被稱為語法標註,是自然語言處理中一項非常重要的基礎性工作。
詞性標註是各類基於文字的機器學習任務,例如語義分析和指代消解的預處理步驟。
詞性是詞彙基本的語法範疇,通常也稱為詞類,主要用來描述一個詞在上下文的作用。例如,描述一個概念的詞就是名詞,在下文引用這個名詞的詞就是代詞。有的詞性經常會出現一些新的詞,例如名詞,這樣的詞性叫做開放式詞性。另外一些詞性中的詞比較固定,例如代詞,這樣的詞性叫做封閉式詞性。因為存在一個詞對應多個詞性的現象,所以給詞準確地標註詞性並不是很容易。例如,“改革”在“中國開始對計劃經濟體制進行改革”這句話中是一個動詞,但是在“醫藥衛生改革中的經濟問題”這個句子中是一個名詞。把這個問題抽象出來,就是已知單詞序列,給每個單詞標註詞性。
目前採用的詞性標註方法主要有基於統計模型的標註方法、基於規則的標註方法、統計方法與規則方法相結合的方法、基於有限狀態轉換機的標註方法和基於神經網路的詞性標註方法。
jieba 中提供了詞性標註功能,可以標註標註句子分詞後每個詞的詞性,詞性標註集採用北大計算所詞性標註集,屬於採用基於統計模型的標註方法。
2.2 華為雲對話機器人服務介紹
省略
2.3 華為雲對話機器人服務使用指導
省略
2.4 BERT模型完成中文命名實體識別
自然語言處理(NLP)——中文命名實體識別(NER)
- 分類任務:分詞,詞性標註,拼寫矯正
- 詞法分析:文字分類,情感計算
- 命名實體識別:術語抽取,關係抽取
- 頂層任務:機器翻譯,問答系統,閱讀理解
- 命名實體:三大類(實體類、時間類和數字類),七小類(人名、地名、機構名、時間、日期、貨幣和百分比)
BERT——Bidirectional Encoder Representations from Transformers
- 使用龐大的開源語料庫在64塊TPU上訓練4天
- TPU的速度約是GPU Tesla V100的8倍
完整PPT<參考資料來自華為雲學院,僅供學習資料參考,侵刪,感謝各位!>