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