【GNN】圖神經網絡學習小結 and 筆記匯總
1003
2025-04-01
前言:
AI正在改變我們的生活,正在改變我們身邊的各行各業,但是這條通往智能世界的路并不平坦,其中一個巨大鴻溝就是AI人才的稀缺。在中國龐大的IT從業群體,AI開發者缺口達百萬級。
AI將成為全民普及性的技能,所以今天華為云EI為大家帶來《2020華為云AI實戰營》免費課程,大幅降低AI學習門檻,幫助龐大的軟件開發者群體快速掌握AI技能,把AI用起來。
課程主要內容包括圖像分類、物體檢測、圖像分割、人臉識別、OCR、視頻分析、自然語言處理和語音識別這八大熱門AI領域的基礎知識、經典數據集和經典算法的介紹,每章課程都是實戰案例,模型訓練、測試、評估全流程覆蓋,配合代碼講解和課后作業,幫助您掌握八大熱門AI領域的模型開發能力。
2020年華為云AI實戰營??第七章 NLP
自然語言處理領域常見任務
神經網絡語言模型發展
語料
jieba中文分詞組件:1.分詞??2.關鍵詞提取 ?3.詞性標注
概述:
自然語言處理,顧名思義即自然語言處理的技術,通常用縮寫NLP指代。各類產品經理日常的工作中,會遇到大量自然語言處理的應用場景。
動手實踐
點擊鼠標右鍵,在新標簽頁中打開此鏈接https:/nbviewer.jupyter.orgl,打開新的網頁再依次右鍵復制下面的實踐案例地址、粘貼到新打開網頁的搜索框中,按回車進行訪問
自然語言處理介紹實踐案例地址:
https://github.com/huaweicloud/ModelArts-Lab/blob/master/notebook/DL_nlp_introduction/nlp_introduction.ipynb
1.1 自然語言處理
自然語言處理(NLP, Natural Language Processing),作為 AI 領域中最重要的分支之一,與語言文字這一承載人類文明的重要載體緊密相連,研究語言能力和語言應用的模型,建立計算機(算法)框架來實現這樣的語言模型,并完善、評測、最終用于設計各種實用系統。
下面列出一些自然語言處理領域常見任務,并按照任務類型分成五大類:
詞法分析:對自然語言進行詞匯層面的分析,是NLP基礎性工作
分詞:對沒有明顯邊界的文本進行切分,得到詞序列
詞性標注:確定文本中每個詞的詞性。詞性包括動詞、名詞、代詞等
新詞發現:找出文本中具有新形勢、新意義或是新用法的詞
形態分析:分析單詞的形態組成,包括詞干、詞根、詞綴等
拼寫校正:找出拼寫錯誤的詞并進行糾正
句子分析:對自然語言進行句子層面的分析,包括句法分析和其他句子級別的分析任務
組塊分析:標出句子中的短語塊,例如名詞短語,動詞短語等
成分句法分析:分析句子的成分,給出一棵樹由終結符和非終結符構成的句法樹
依存句法分析:分析句子中詞與詞之間的依存關系,給一棵由詞語依存關系構成的依存句法樹
語種識別:給定一段文本,確定該文本屬于哪個語種
句子邊界檢測:給沒有明顯句子邊界的文本加邊界
語義分析:對給定文本進行分析和理解,形成能夠表達語義的形式化表示或分布式表示
詞義消歧:對有歧義的詞,確定其準確的詞義
語義角色標注:標注句子中的語義角色類標,語義角色,語義角色包括施事、受事、影響等
框架語義分析:根據框架語義學的觀點,對句子進行語義分析
詞匯/句子/段落的向量化表示:研究詞匯、句子、段落的向量化方法,向量的性質和應用
信息抽取:從無結構文本中抽取結構化的信息
命名實體識別:從文本中識別出命名實體
實體消歧:確定實體指代對象
術語抽取:從文本中確定術語
關系抽取:確定文本中兩個實體之間的關系類型
事件抽取:從無結構的文本中抽取結構化事件
情感分析:對文本的主觀性情緒進行提取
意圖識別:對用戶給定的對話內容進行分析,識別用戶意圖
頂層任務:直接面向普通用戶,提供自然語言處理產品服務的系統級任務,會用到多個層面的自然語言處理技術
機器翻譯:通過計算機自動化的把一種語言翻譯成另外一種語言
文本摘要:對較長文本進行內容梗概的提取
問答系統:針對用戶提出的問題,系統給出相應的答案
對話系統:能夠與用戶進行聊天對話,從對話中捕獲用戶的意圖,并分析執行
閱讀理解:機器閱讀完一篇文章后,給定一些文章相關問題,機器能夠回答
自動文章分類:給定一篇文章,對文章的質量進行打分或分類
神經網絡語言模型發展
語言模型
NLP里面做預訓練一般的選擇是用語言模型任務來做。
語言模型就是用來計算一個句子的概率的模型,也就是判斷一句話是否是人說出來的自然句子的概率。
語言模型包括文法語言模型和統計語言模型,我們一般使用統計語言模型。常見的統計語言模型有N元文法模型(N-gram Model)。
語言模型可以捕捉到詞的上下文信息。
詞向量(word embedding)
詞向量是為了解決自然語言處理領域的文字信息表示問題。在圖像領域,使用圖片的像素構成的矩陣展平成 vector 作為神經網絡的輸入;在語音領域,用音頻頻譜序列向量構成的矩陣作為神經網絡的輸入;在自然語言處理領域,將每個詞映射成一個向量編碼,作為神經網絡的輸入。
詞向量的核心問題是上下文與目標詞之間的關系建模。比較熱門的使用語言模型做 Word Embedding 的工具有 Word2Vec 和 Glove。
ELMO
由于Word Embedding無法解決多義詞問題,Word Embedding本質是一個靜態的方式,不會根據上下文的改變而變化。所以引出ELMO(Embedding from Language Models),ELMO提供了一種簡潔優雅的解決方案。
ELMO的本質思想是:事先用語言模型學好一個單詞的 Word Embedding,此時多義詞無法區分,在實際使用 Word Embedding 的時候,單詞已經具備了特定的上下文,這個時候可以根據上下文單詞的語義去調整單詞的 Word Embedding 表示,這樣經過調整后的 Word Embedding 更能表達在這個上下文中的具體含義。所以 ELMO 本身是個根據當前上下文對 Word Embedding 動態調整的思路。
ELMO 采用了典型的兩階段過程,第一個階段是利用語言模型進行預訓練;第二個階段是在做下游任務時,從預訓練網絡中提取對應單詞的網絡各層的 Word Embedding 作為新特征補充到下游任務中。
GPT
GPT(Generative Pre-Training),其含義是指的生成式的預訓練。
與 ELMO 類似,GPT也采用兩階段過程,第一個階段是利用語言模型進行預訓練,第二階段通過 Fine-tuning 的模式解決下游任務。
GPT 的預訓練雖然仍然是以語言模型作為目標任務,但是采用的是單向的語言模型,單向的含義是指:只使用單詞的上文來進行預測,而拋開了下文。因此也限制了其在更多應用場景的效果,比如閱讀理解這種任務,在做任務的時候是可以允許同時看到上文和下文一起做決策的。
NNLM
NNLM(神經網絡語言模型),通過為每個單詞學習一個分布式表征來實現在連續空間上的建模。
第一個 NNLM——前饋神經網絡語言模型(FFNNLM)由 Bengio 等人于 2003 年提出,其性能要優于 N 元語言模型。隨后,Mikolov 等人于 2010 年提出了 RNN 語言模型(RNNLM)。從那時起,NNLM 逐漸成為了主流的語言模型,并得到了迅速發展。
2012 年,Sundermeyer 等人提出了長短期記憶循環神經網絡語言模型(LSTM-RNNLM)用于解決學習長期依賴的問題。為了降低訓練、評估以及 PPL 的開銷,人們提出了各種各樣的改進方案,例如分層的 Softmax、緩存模型等。近年來,為了改進 NNLM,人們引入了注意力機制(Attention),取得了顯著的性能提升。
Transformer
Transformer 是個疊加的自注意力機制(Self Attention)構成的深度網絡,是目前NLP里最強的特征提取器。Transformer 的結構由 encoder(編碼)和 decoder(解碼)組成。Transformer 詳見論文《Attention is all you need》。
語料
人工智能的核心在于數據支持。對AI有一些接觸之后,我們可以知道,無論模型性能再高,都離不開大量數據作為基礎。
業務提供的已有語料
國內外標準開放數據集
通過爬蟲抓取網絡數據(合法情況下)
在獲取語料的基礎上,另一個重要的步驟是語料的預處理。語料的質量直接影響模型的訓練性能,噪聲很大、與任務無關的語料需要進過一系列預處理工作才可以被使用。在一個完整的中文自然語言處理工程應用中,語料預處理大概會占到50%-70%的工作量。
常用的語料預處理方式包括:去除不規則符號及格式,人工去重、對齊、刪除和標注等,或者規則提取內容、正則表達式匹配、根據詞性和命名實體提取、編寫腳本或者代碼批處理等。
語料的預處理,即數據清洗,是一項工作量大且重復性高的工作,在本教學任務中不進行展開說明。
分詞
分詞任務是中文自然語言處理的基礎性工作。漢語是以字位單位,不像西方語言,詞與詞之間沒有空格之類的標志指示詞的邊界。詞是最小的能夠獨立活動的有意義的語言成分,因此分詞的好壞直接對后續文本處理任務起到關鍵作用。
中文分詞方法:
基于字典、詞庫匹配的分詞方法(基于規則)
基于字符串匹配分詞,機械分詞算法。將待分的字符串與一個充分大的機器詞典中的詞條進行匹配。分為正向匹配和逆向匹配;最大長度匹配和最小長度匹配;單純分詞和分詞與標注過程相結合的一體化方法。所以常用的有:正向最大匹配,逆向最大匹配,最少切分法。
基于詞頻度統計的分詞方法(基于統計)
相鄰的字同時出現的次數越多,越有可能構成一個詞語,對語料中的字組頻度進行統計,基于詞的頻度統計的分詞方法是一種全切分方法。
基于知識理解的分詞方法
該方法主要基于句法、語法分析,并結合語義分析,通過對上下文內容所提供信息的分析對詞進行定界。由于漢語語言知識的籠統、復雜性,難以將各種語言信息組織成機器可直接讀取的形式。因此目前基于知識的分詞系統還處在試驗階段。
jieba 分詞結合了基于規則和基于統計這兩類方法。
首先基于前綴詞典進行詞圖掃描,前綴詞典是指詞典中的詞按照前綴包含的順序排列,例如詞典中出現了“廣”,之后以“廣”開頭的詞都會出現在這一部分,例如“廣東”,進而會出現“廣東省”,從而形成一種層級包含結構。
如果將詞看作節點,詞和詞之間的分詞符看作邊,那么一種分詞方案則對應著從第一個字到最后一個字的一條分詞路徑。
因此,基于前綴詞典可以快速構建包含全部可能分詞結果的有向無環圖,這個圖中包含多條分詞路徑,有向是指全部的路徑都始于第一個字、止于最后一個字,無環是指節點之間不構成閉環。
基于標注語料,使用動態規劃的方法可以找出最大概率路徑,并將其作為最終的分詞結果。對于未登錄詞,jieba 使用了基于漢字成詞的 HMM(隱馬爾可夫模型)模型,采用了 Viterbi(維特比)算法進行推導。
jieba 分詞支持三種分詞模式:
全模式:把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義;
精確模式:試圖將句子最精確地切開,適合文本分析;
搜索引擎模式:在精確模式的基礎上,對長詞再次切分,提高召回率,適合用于搜索引擎分詞。
TF-IDF(Term Frequency-Inverse Document Frequency, 詞頻-逆文件頻率)是一種統計方法,用以評估一個詞語對于一個文件集或一個語料庫中的一份文件的重要程度,其原理為:一個詞語在一篇文章中出現次數越多,同時在所有文檔中出現次數越少,越能夠代表該文章。
計算公式為:TF-IDF = TF·IDF
其中:
TF(term frequency):詞頻,某一個給定的詞語在該文件中出現的次數,計算公式:
IDF(inverse document frequency):逆文件頻率,如果包含詞條的文件越少,則說明詞條具有很好的類別區分能力,計算公式:
通過?jieba.analyse.extract_tags?方法可以基于 TF-IDF 算法進行關鍵詞提取,
其中topK為返回幾個 TF/IDF 權重最大的關鍵詞,默認值為 20 ;withWeight為是否需要返回關鍵詞權重值。
TextRank是另一種關鍵詞提取算法,其基本思想來源于PageRank算法,通過把文本分割成若干組成單元(單詞、句子)并建立圖模型,利用投票機制對文本中的重要成分進行排序,僅利用單篇文檔本身的信息即可實現關鍵詞提取、文摘。
TextRank原理詳細內容參見論文《TextRank: Bringing Order into Texts》
通過jieba.analyse.textrank方法可以使用基于TextRank算法的關鍵詞提取
1.2 BERT模型完成中文命名實體識別
命名實體識別(Named Entity Recognition,簡稱NER)是信息提取、問答系統、句法分析、機器翻譯等應用領域的重要基礎工具,在自然語言處理技術走向實用化的過程中占有重要地位。一般來說,命名實體識別的任務就是識別出待處理文本中三大類(實體類、時間類和數字類)、七小類(人名、機構名、地名、時間、日期、貨幣和百分比)命名實體。
NER本質上包含兩個子任務:邊界檢測和類型識別,一般認為一個實體識別正確,需要該實體的邊界與類型都正確。
自然語言處理實戰——命名實體識別
BERT模型(Bidirectional Encoder Representations from Transformers)是2018年10月谷歌推出的,它在機器閱讀理解頂級水平測試SQuAD1.1中表現出驚人的成績:全部兩個衡量指標上全面超越人類,并且還在11種不同NLP測試中創出最佳成績,包括將GLUE基準推至80.4%(絕對改進率7.6%),MultiNLI準確度達到86.7%(絕對改進率5.6%)等。BERT模型被認為是NLP新時代的開始,自此NLP領域終于找到了一種方法,可以像計算機視覺那樣進行遷移學習,任何需要構建語言處理模型的人都可以將這個強大的預訓練模型作為現成的組件使用,從而節省了從頭開始訓練模型所需的時間、精力、知識和資源。具體地來說,BERT可以用于以下自然語言處理任務中:
問答系統
命名實體識別
文檔聚類
郵件過濾和分類
情感分析
BERT模型被認為是NLP領域的極大突破,刷新了11個NLP任務的當前最優結果。其使用龐大的開源語料庫在64塊TPU上訓練4天,TPU的速度約是GPU Tesla V100的8倍(Tesla V100,32G,單價8萬)。其對GPT語言模型做了進一步的改進,通過左、右兩側上下文來預測當前詞和通過當前句子預測下一個句子,預訓練的BERT表征可以僅用一個額外的輸出層進行微調,在不對任務特定架構做出大量修改條件下,就可以為很多任務創建當前最優模型。
token embeddings:詞向量,將各個詞轉換成固定維度的向量。在BERT中為768維。輸入文本要先進行tokenization處理。中文為字向量。position embeddings:位置向量,表示位置信息,代表詞順序的重要特征。segment embeddings:文本向量,用來區別兩種句子,只有兩種向量表示。position embeddings:位置向量,表示位置信息,代表詞順序的重要特征。segment embeddings:文本向量,用來區別兩種句子,只有兩種向量表示。
由于BERT強大的普適性,對于不同的下游任務,BERT都可以通過改造輸入輸出來處理。
數據集:《人民日報1998年中文標注語料庫》
以1998年人民日報語料為對象,由北京大學計算語言學研究所和富士通研究開發中心有限公司共同制作的標注語料庫。該語料庫對600多萬字節的中文文章進行了分詞及詞性標注,其被作為原始數據應用于大量的研究和論文中。
數據集格式如上圖,每行的第一個是字,第二個是它的標簽,字與標簽之間使用空格分隔,兩句話之間空一行。
動手實踐
點擊鼠標右鍵,在新標簽頁中打開此鏈接https://nbviewer.jupyter.orgl,打開新的網頁再依次右鍵復制下面的實踐案例地址、粘貼到新打開網頁的搜索框中,按回車進行訪問。
BERT模型完成中文命名實體識別實踐案例地址:
https://github.com/huaweicloud/ModelArts-Lab/blob/master/notebook/DL_nlp_bert_ner/nlp_ner.ipynb
注:本文整理自華為云社區內容共創活動之
華為云AI實戰營:NLP
查看活動詳情:https://bbs.huaweicloud.com/blogs/308924
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。