【莫烦Python】机器要说话 NLP 自然语言处理教程 W2V Transformer BERT Seq2Seq GPT 笔记
【莫煩Python】機器要說話 NLP 自然語言處理教程 W2V Transformer BERT Seq2Seq GPT 筆記
- 教程與代碼地址
- P1 NLP行業大佬采訪
- P2 NLP簡介
- P3 1.1 課程目標
- P4 2.1 搜索引擎簡介
- P5 2.2 搜索引擎算法(TF-IDF 檢索)
- P6 2.3 Sklearn 搜索的擴展
- P7 3.1 詞向量可以這樣理解
- P8 3.2 訓練詞向量 W2V CBOW算法
- P9 3.3 詞向量Skip Gram 算法
- P10 4.1 理解句子 句向量
- P11 4.2 Seq2Seq 語言生成模型
- P12 4.3 CNN也能理解語言
- P13 5.1 注意力 語言模型
- P14 5.2 Attention 注意力算法
- P15 5.3 請注意 注意力
- P16 5.4 Transformer 自注意語言模型
- P17 6.1 大規模預訓練模型
- P18 6.2 一詞多義 ELMo
- P19 6.3 GPT 單向語言模型
- P20 6.4 BERT 雙向語言模型
- P21 7.1 語言模型的應用
教程與代碼地址
筆記中,圖片和代碼基本源自up主的視頻和代碼
視頻地址: 【莫煩Python】機器要說話 NLP 自然語言處理教程 W2V Transformer BERT Seq2Seq GPT
代碼地址: https://github.com/MorvanZhou/NLP-Tutorials
講義地址:https://mofanpy.com/tutorials/machine-learning/nlp/
如果想要爬蟲視頻網站一樣的csdn目錄,可以去這里下載代碼:https://github.com/JeffreyLeal/MyUtils/tree/%E7%88%AC%E8%99%AB%E5%B7%A5%E5%85%B71
P1 NLP行業大佬采訪
動手敲代碼,復現代碼,做項目最重要
P2 NLP簡介
將文本轉化成一串數字(encode),然后讓機器去理解,再生成一串數字,再轉化成文本(decode)。
P3 1.1 課程目標
P4 2.1 搜索引擎簡介
在一篇文章可以被搜索之前,搜索引擎安排小蜘蛛spider爬取網頁重點部分,分別對待,比如重點關注標題、時間、正文。將這些信息給予不同的權重后,存儲在便于快速檢索的數據庫中。
傳統的構建索引方法:索引圖片視頻等是基于它周圍的文字信息,如標題等。
深度學習的構建索引方法:在用戶用文字搜索時,將搜索的文字內容轉換成深度學習能識別的數字內容,然后再和之前存儲的圖片、視頻數字信息進行匹配,對比兩種數字之間的關聯性,然后找到最相近的內容。這種搜索,我們有一個專業名詞叫作"多模態"搜索。
批量召回,粗排數據量都非常大,精排的數據量小,適合用深度學習
假設你開了家咨詢公司,手上有100篇材料。這時有人來找你咨詢NLP的問題,你會怎么在這100篇材料中找到合適的內容呢?
正排索引:我們一篇一篇地閱讀,找到所有包含NLP內容的材料,然后返回給提問者。
缺點:這種方法需要我們在每次搜索的時候,都對所有材料進行一次閱讀,然后在材料中找到關鍵詞,并篩選出材料,效率其實非常差。
倒排索引:我們在第一次拿到所有材料時,把它們通讀一遍,然后構建關鍵詞和文章的對應關系。當用戶在搜索特定詞的時候,比如“紅”,就會直接返回“紅”這個【關鍵詞索引】下的文章列表。
優點:能夠將這種索引,放在后續的搜索中復用,搜索也就變成了一種詞語匹配加返回索引材料的過程。
問題:但當處理的是海量數據的時候,通過倒排索引找到的文章可能依然是海量。
解決:對這些文章進行排序操作,再選取排名靠前的文章列表也能幫我們節省大量的時間。處理匹配排序,最有名的算法之一叫做TF-IDF。
TF-IDF用于粗排
TF是詞頻,計算詞在當前文章中出現的頻率,頻率越高,越能代表文章
但像“我”、“是”這種詞也很高頻,這時候就需要IDF了。
IDF是逆文本頻率指數,計算詞在這么多篇文章中出現的頻率的倒數,在多篇文章都出現,頻率就越高,頻率的倒數就越小,表示這個詞在多篇文章中沒有區分度;只在少數的文章中出現,甚至只在一篇文章中出現,頻率就越低,頻率的倒數就越大,表示這個詞在多篇文章中有很高的區分度,能代表這篇文章。
結合TF和IDF就是TF-IDF了
P5 2.2 搜索引擎算法(TF-IDF 檢索)
代碼見tf_idf.py,這個是up自己寫的
寫路徑的時候,字符串最好使用原始字符串,即
str = r‘./image/xxx.jpg’P6 2.3 Sklearn 搜索的擴展
代碼見tf_idf_sklearn.py,可以使用sklearn現成的方法去寫
全局指的事數據庫的全局,不是互聯網的全局
Query -> 搜索詞標準化 -> 搜索算法 -> 搜索結果
P7 3.1 詞向量可以這樣理解
P8 3.2 訓練詞向量 W2V CBOW算法
代碼見CBOW.py
詞僅在詞向量空間進行相加,而沒有在前后文空間進行相加,相比之下,Skip Gram更好。
P9 3.3 詞向量Skip Gram 算法
代碼見skip-gram.py
CBOW和Skip Gram都沒有辦法處理一詞多義的問題。
P10 4.1 理解句子 句向量
簡而言之,Encoder負責理解上文,Decoder負責將思考怎么樣在理解的句子的基礎上做任務。這一套方法就是在自然語言處理中風靡一時的Seq2Seq框架。
P11 4.2 Seq2Seq 語言生成模型
代碼見seq2seq.py
decoder預測
在使用GreedyEmbeddingSampler()作為decode的方法是有局限性的,有時候會因為忽略了前期的低分數而錯過了后期的整體高分策略, 類似于前面芝麻最好,所以撿了芝麻,但后面卻錯過了撿西瓜的機會。而這種因局部信息不全而導致的策略不優,可以靠Beam search的篩選策略彌補。 如果使用 beam search, 我們不僅僅關注當前最優策略, 而且每預測一個詞時,還保持關注當時刻所有候選詞的N個最優策略,結束預測時,就有很大概率能夠找到全局比較優的路徑。 舉個例子,如果我們用beam search size = 2, 意味著每次預測都記錄最優的兩個預測,然后沿著這兩個預測繼續預測, 每次后續的預測都只挑選下一步最好的兩個預測。 這樣加大了搜索范圍,使我們有機會接觸到全局較優路徑。
P12 4.3 CNN也能理解語言
代碼見cnn-lm.py
CNN做句向量encoding的時候有一個局限性,它要求有個句子最長的限制,句子如果超過這個長度,那么就最好截斷它。 因為就像在給圖像做卷積,圖像也是要定長定寬的,不然卷積和池化會有尺度上的問題。這是一個相比RNN的硬傷。之后我們在介紹Transformer類型的語言模型時, 也會介紹到這個硬傷。
P13 5.1 注意力 語言模型
P14 5.2 Attention 注意力算法
P15 5.3 請注意 注意力
Transformer模型:多層注意力的疊加,它使用的是一個個注意力矩陣來表示在不同位置的注意力強度。通過控制強度來控制信息通道的閥門大小。
P16 5.4 Transformer 自注意語言模型
代碼見transformer.py
P17 6.1 大規模預訓練模型
P18 6.2 一詞多義 ELMo
代碼見ELMo.py
ELMo對你來說,只是另一種雙向RNN架構。ELMo里有兩個RNN(LSTM), 一個從前往后看句子,一個從后往前看句子,每一個詞的向量表達,就是下面這幾個信息的累積:
P19 6.3 GPT 單向語言模型
代碼見GPT.py
GPT 單向語言模型
P20 6.4 BERT 雙向語言模型
P21 7.1 語言模型的應用
總結
以上是生活随笔為你收集整理的【莫烦Python】机器要说话 NLP 自然语言处理教程 W2V Transformer BERT Seq2Seq GPT 笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机科学与技术专业学点啥
- 下一篇: MyEclipse8.5开发环境配置,S