六. 文本處理
一. 文本分析流程與分詞
1. 文本分詞流程
就像其他的領(lǐng)域有自己的經(jīng)典流程一樣孕索,一個(gè)文本分析的項(xiàng)目也有屬于自己的流程。雖然每一個(gè)NLP項(xiàng)目有所不同躏碳,但至于流程來(lái)說(shuō)沒有太多本質(zhì)的區(qū)別搞旭。這里會(huì)涉及到如分詞、停用詞過(guò)濾、文本向量的轉(zhuǎn)化等步驟肄渗。
2. 分詞工具的使用
分詞是所有工作的第一步镇眷,分詞的準(zhǔn)確性直接影響對(duì)后續(xù)任務(wù)的表現(xiàn)。但分詞技術(shù)相對(duì)比較成熟恳啥,也有很多開源的工具可用來(lái)做中文或者對(duì)其他語(yǔ)言的分詞偏灿。在這里丹诀,結(jié)巴分詞算是最經(jīng)典且簡(jiǎn)單的中文分詞工具钝的。下面以結(jié)巴分詞為例來(lái)說(shuō)明如何使用工具來(lái)分詞。
3. 最大匹配算法
是貪心算法铆遭,效率很高硝桩,只能給到局部最優(yōu)解。
前向最大匹配:需要設(shè)置窗口h大小枚荣,需要給定一個(gè)詞庫(kù)碗脊,從前面到后面最大匹配。h取決于詞庫(kù)里的單詞有多長(zhǎng)橄妆,盡量匹配詞庫(kù)里的所有單詞衙伶。
后向最大匹配
雙向最大匹配
匹配算法缺點(diǎn):沒有考慮語(yǔ)義,沒考慮單詞與單詞之間的語(yǔ)義關(guān)系害碾。
算法并不能保證找到的是最好的分詞結(jié)果矢劲。整個(gè)過(guò)程是貪心策略,尋求的是局部最好的選項(xiàng),但從全局來(lái)講未必是最好的。另一方面,由于是貪心策略,所以分詞的效率也很高慌随。
4. 考慮語(yǔ)義的一種分詞方法
前提是給定一個(gè)詞典芬沉,并且給定在語(yǔ)言模型下每個(gè)單詞的概率。概率乘積最大的是最好的分詞阁猜。
看到乘積很多的丸逸,需要將其轉(zhuǎn)化為加法,比如加上log剃袍,因?yàn)槿绻硞€(gè)值小于1黄刚,乘以其他小的數(shù),會(huì)導(dǎo)致計(jì)算機(jī)溢出民效。
維特比算法:看一下維基百科的解釋憔维,維特比算法(Viterbi algorithm)是一種動(dòng)態(tài)規(guī)劃算法。它用于尋找最有可能產(chǎn)生觀測(cè)事件序列的維特比路徑——隱含狀態(tài)序列研铆,特別是在馬爾可夫信息源上下文和隱馬爾可夫模型中埋同。維特比算法就是求所有觀測(cè)序列中的最優(yōu),求所有路徑中最優(yōu)路徑棵红,最容易想到的就是暴力解法凶赁,直接把所有路徑全部計(jì)算出來(lái),然后找出最優(yōu)的。這方法理論上是可行虱肄,但當(dāng)序列很長(zhǎng)時(shí)致板,時(shí)間復(fù)雜夫很高。而且進(jìn)行了大量的重復(fù)計(jì)算咏窿,viterbi算法就是用動(dòng)態(tài)規(guī)劃的方法就減少這些重復(fù)計(jì)算斟或。
viterbi算法是每次記錄到當(dāng)前時(shí)刻,每個(gè)觀察標(biāo)簽的最優(yōu)序列集嵌,假設(shè)在t時(shí)刻已經(jīng)保存了從0到t時(shí)刻的最優(yōu)路徑萝挤,那么t+1時(shí)刻只需要計(jì)算從t到t+1的最優(yōu)就可以了。
二. 停用詞與詞的標(biāo)準(zhǔn)化
1. 詞的過(guò)濾
在文本處理過(guò)程中根欧,對(duì)于有些詞需要做過(guò)濾怜珍。這些被過(guò)濾掉的單詞可認(rèn)為是對(duì)語(yǔ)義理解幫助不大,或者反而影響語(yǔ)義理解的單詞凤粗。同時(shí)酥泛,過(guò)濾單詞有助于減小詞庫(kù)的大小,進(jìn)而提高訓(xùn)練的效率和減少內(nèi)存空間的使用嫌拣。
去掉停用詞和出現(xiàn)頻率低的詞柔袁,一般要根據(jù)應(yīng)用場(chǎng)景來(lái)判斷。
2. 詞的標(biāo)準(zhǔn)化
stemming? 和? lemmazation
porter stemmer是stemming的非常經(jīng)典的算法异逐,是基于規(guī)則的捶索,背后有大量的語(yǔ)言學(xué)家。
三. 拼寫糾錯(cuò)
1. 拼寫糾錯(cuò)與編輯距離
分為單詞拼寫錯(cuò)誤和語(yǔ)法錯(cuò)誤应役。語(yǔ)法錯(cuò)誤涉及語(yǔ)言模型情组,下面主要先說(shuō)單詞拼寫錯(cuò)誤怎么改。
總結(jié)起來(lái)箩祥,關(guān)于拼寫糾錯(cuò)單詞的一種方法是:
第一步:尋找拼寫錯(cuò)誤的單詞
第二步:尋找跟上面單詞“長(zhǎng)得”最像的院崇,可通過(guò)循環(huán)詞庫(kù),并計(jì)算編輯距離來(lái)獲得袍祖。
第三步:從上述候選集里底瓣,根據(jù)上下文進(jìn)一步做篩選和排序,最終尋找最合適的單詞蕉陋。
2. 循環(huán)詞庫(kù)的問題以及改進(jìn)方法
通過(guò)上述方法捐凭,我們便可以靈活生成編輯距離為某一個(gè)值的單詞,這種做法要比直接循環(huán)詞庫(kù)里的每個(gè)單詞簡(jiǎn)單很多凳鬓,高效很多茁肠。但也可以從結(jié)果中看到,包含了大量的非法單詞缩举。所以我們需要在這些單詞中做進(jìn)一步過(guò)濾垦梆。當(dāng)然過(guò)濾的條件可以很簡(jiǎn)單匹颤,就是來(lái)檢查是否出現(xiàn)在了詞庫(kù)中,如果沒有出現(xiàn)則剔除掉托猩。
最大化P(s|c)*P(c):P(s|c)指的是在給定一個(gè)正確字符串c的情況下印蓖,拼成錯(cuò)誤字符串s的概率。P(c)指的是正確字符串c在詞庫(kù)中出現(xiàn)的概率京腥。
對(duì)于拼寫糾錯(cuò)赦肃,我們來(lái)做簡(jiǎn)單的總結(jié):
第一步:找到拼寫錯(cuò)誤的單詞
第二步:生成跟上述單詞類似的其他單詞,當(dāng)作是候選集
第三步:根據(jù)單詞在上下文中的統(tǒng)計(jì)信息來(lái)排序并選出最好的公浪。
至于拼寫糾錯(cuò)的完整實(shí)現(xiàn)他宛,由于跟語(yǔ)言模型相關(guān),我們將放到下一章來(lái)講解完整的代碼因悲。
七. 文本表示
一. 文本表示基礎(chǔ)
1. 單詞的表示
對(duì)于自然語(yǔ)言處理各類應(yīng)用堕汞,最基礎(chǔ)的任務(wù)為文本表示勺爱。因?yàn)槲覀兌贾酪粋€(gè)文本是不能直接作為模型的輸入的晃琳,所以我們必須要先把文本轉(zhuǎn)換成向量的形式之后,再導(dǎo)入到模型中訓(xùn)練琐鲁。所謂文本的表示卫旱,其實(shí)就是研究如何把文本表示成向量或者矩陣的形式。
文本的最小單元為單詞围段,其次為短語(yǔ)顾翼、句子、或者段落奈泪。我們需要懂得如何把這些表示成向量的形式适贸。其中,單詞的表示法是最基礎(chǔ)的涝桅。另外拜姿,對(duì)于句子或者更長(zhǎng)的文本來(lái)說(shuō),它們的表示依賴于單詞的表示法冯遂。 在這里想說(shuō)的一點(diǎn)是蕊肥,單詞的表示法不止一種,比如有獨(dú)熱編碼的表示法蛤肌,詞向量的表示法等等壁却。
2. 句子的表示
知道了如何表示一個(gè)單詞之后,我們很自然地就可以得到如何表示一個(gè)句子了裸准。一個(gè)句子由多個(gè)單詞來(lái)組成展东,那實(shí)際上記錄一下哪些單詞出現(xiàn),哪些單詞沒有出現(xiàn)就可以了炒俱。當(dāng)然盐肃,很多時(shí)候我們也需要記錄一個(gè)單詞所出現(xiàn)的次數(shù)卦停。
3. tf-idf向量
所以,如果只記錄單詞的個(gè)數(shù)也是不夠的恼蓬,我們還需要考慮單詞的權(quán)重惊完,也可以認(rèn)為是質(zhì)量。這有點(diǎn)類似于处硬,一個(gè)人有很多朋友不代表這個(gè)人有多厲害小槐,還需要社交的質(zhì)量,其實(shí)是同一個(gè)道理荷辕。 那如何把這種所謂的“質(zhì)量”引入到表示中呢?答案是tf-idf凿跳。
tf-idf的應(yīng)用非常廣泛,即便放在當(dāng)前疮方,也是表示文本的最核心的技術(shù)之一控嗜。 之前我們講過(guò)什么是基準(zhǔn),那tf-idf是文本表示領(lǐng)域的最有效的基準(zhǔn)骡显。很多時(shí)候疆栏,基于深度學(xué)習(xí)的文本表示也未必要優(yōu)于tf-idf的表示。
二. 文本相似度
1. 計(jì)算歐式距離
如何計(jì)算兩個(gè)文本之間的相似度?這個(gè)問題實(shí)際上可以認(rèn)為是計(jì)算兩個(gè)向量之間的相似度惫谤。因?yàn)橥ㄟ^(guò)上一節(jié)的內(nèi)容已經(jīng)知道了如何把文本轉(zhuǎn)換成向量壁顶。 所以本節(jié)所涉及到的相似度計(jì)算公式適合任何向量化的場(chǎng)景,不僅僅局限于文本之間的相似度溜歪。有兩種常見的相似度計(jì)算方法若专,分別為基于歐式距離的計(jì)算,另外一種方式為基于余弦相似度的計(jì)算蝴猪。
距離越大调衰,相似度越小自阱;距離越小嚎莉,相似度越大。
向量之間的相似度實(shí)際上要考慮到向量的方向,因?yàn)橄蛄孔钪匾奶匦詾樗姆较蛐远馈H绻麅蓚€(gè)向量相似,那也需要它倆的方向也比較相似萝喘。然而,計(jì)算歐式距離的過(guò)程并沒有把方向考慮進(jìn)去,這是歐式距離的最大的問題。
2. 計(jì)算余弦相似度
為了彌補(bǔ)歐式距離所存在的問題琼懊,我們不得不要提出另外一種相似度計(jì)算方法阁簸,這就是最著名的方法-余弦相似度。通過(guò)余弦相似度事實(shí)上我們計(jì)算的是兩個(gè)向量之間的夾角大小哼丈。兩個(gè)向量的方向上越一致就說(shuō)明它倆的相似度就越高启妹。
余弦相似度計(jì)算的直接是相似度,結(jié)果越小醉旦,相似度越腥拿住桨啃;結(jié)果越大,相似度越大檬输。
三. 詞向量基礎(chǔ)
1. 計(jì)算單詞之間的相似度
我們一直在討論如何計(jì)算兩個(gè)文本之間的相似度照瘾,但至今還沒有討論過(guò)如何計(jì)算兩個(gè)單詞之間的相似度。單詞作為文本的最基本的要素丧慈,如何表示單詞的含義以及兩個(gè)單詞之間的相似度也極其重要析命。我們一起來(lái)了解一下在獨(dú)熱編碼的基礎(chǔ)下,如何計(jì)算兩個(gè)單詞之間的相似度逃默。
顯然是鹃愤,通過(guò)歐式距離或者余弦相似度是沒有辦法算出單詞之間的相似度,因?yàn)椴还芪覀冊(cè)趺从?jì)算完域,倆倆之間的結(jié)果都是一樣的软吐。那問題到底處在哪兒呢?答案是,一開始的獨(dú)熱編碼的表示!既然獨(dú)熱編碼表示不支持計(jì)算兩個(gè)單詞之間的相似度吟税,我們需要想另外一種單詞的表示法了凹耙,這就自然引出詞向量的概念。 除了不能計(jì)算相似度乌妙,獨(dú)熱編碼也存在稀疏性的問題使兔。
2. 詞向量基礎(chǔ)
詞向量是分布式表示。詞向量的最終目的是用向量來(lái)表示單詞的含義藤韵。
如果單詞用獨(dú)熱編碼,后續(xù)的句子要用tf-idf或count vector來(lái)表示熊经;如果單詞用了詞向量來(lái)表示泽艘,后續(xù)的句子也要沿用這個(gè)路線,比詞向量訓(xùn)練了300維镐依,句子也要是300維或者200維(匹涮?)。這是兩套不同的編碼方式槐壳。想結(jié)合也可以然低。
我們可以看到在分布式表示方法下,兩個(gè)單詞之間的相似度是可以算出來(lái)的务唐。當(dāng)然雳攘,效果取決于詞向量的質(zhì)量。所以枫笛,接下來(lái)的話題是如何得出這些詞向量?在這一章節(jié)吨灭,我們只做簡(jiǎn)單的介紹,具體詳細(xì)的方法論貫穿之后的很多的章節(jié)中刑巧。
語(yǔ)料庫(kù)-模型-詞向量喧兄。模型是黑盒子(Bert, ELMO, Glove, SkipGram etc.)无畔。
如何評(píng)價(jià)一個(gè)詞向量?簡(jiǎn)單的方法是做詞向量的可視化。
語(yǔ)義上比較相似的單詞聚集在了一起吠冤,這其實(shí)變相地說(shuō)明浑彰,詞向量在某種意義上表達(dá)出了一個(gè)單詞的含義。為了可視化詞向量而使用的降維技術(shù)通常包括?https://scikit-learn.org/stable/modules/generated/sklearn.manifold.TSNE.html?)拯辙,也是一種常用的降維算法闸昨。
3. 句子向量
假如我們手里已經(jīng)有了訓(xùn)練好的詞向量,那如何通過(guò)這些詞向量來(lái)表示一個(gè)完整的文本呢薄风,或者一個(gè)句子呢?有一種最簡(jiǎn)單且常用的方法饵较,就是做平均!
有了文本表示之后,我們就可以開始對(duì)文本做建模了遭赂,比如計(jì)算兩個(gè)文本之間的相似度循诉,或者對(duì)某個(gè)文本做分類。在這里我們來(lái)做個(gè)簡(jiǎn)單的小結(jié):
單詞的獨(dú)熱編碼和分布式表示是兩種完全不一樣的編碼方式
這兩種不同的編碼方式是目前文本表示的兩個(gè)方向撇他,有些時(shí)候傳統(tǒng)的獨(dú)熱編碼的方式可能更適合茄猫,有些時(shí)候分布式表示法更適合,具體還是要通過(guò)測(cè)試來(lái)獲得結(jié)論
獨(dú)熱編碼的最大的問題是不能表示一個(gè)單詞的含義
詞向量的質(zhì)量取決于詞向量訓(xùn)練模型困肩,不同的模型所給出的結(jié)果是不一樣的
九. 詞向量技術(shù)
目標(biāo):掌握SkipGram
一. 詞向量基礎(chǔ)
1. 單詞的表示
2. 從獨(dú)熱編碼到分布式表示
通常情況下,詞庫(kù)里的單詞越多,詞向量的長(zhǎng)度可以長(zhǎng)一些划纽。這有點(diǎn)類似于,當(dāng)我們有很多特征的時(shí)候,可以讓模型包含更多參數(shù)一樣。另外,詞向量的長(zhǎng)度跟效果并沒有正向關(guān)系,很長(zhǎng)的詞向量反而會(huì)導(dǎo)致過(guò)擬合現(xiàn)象锌畸。
理解一下這里的“可以表示含義”:這個(gè)是任何詞向量訓(xùn)練的目標(biāo)勇劣,即這個(gè)詞向量是真正表示這個(gè)單詞的意義的,可視化之后可以明顯看出意思相近的單詞是聚在一堆的潭枣。
3. 詞向量的訓(xùn)練
詞向量是訓(xùn)練出來(lái)的比默。所以,我們可以認(rèn)為盆犁,中間有一個(gè)模型可以幫助我們訓(xùn)練出每個(gè)單詞的向量命咐。這個(gè)模型到底是什么呢?這個(gè)黑盒子就是我們即將要解開的秘密。詞向量技術(shù)也是帶動(dòng)NLP發(fā)展的最有利的催化器谐岁,自從2013年提出word2vec開始醋奠,之后整個(gè)NLP領(lǐng)域有了飛躍式的發(fā)展。如果說(shuō)伊佃,ImageNet是CV領(lǐng)域的催化劑窜司,那么word2vec有著同樣的重要性。
那到底這個(gè)黑盒子里是什么呢?在具體剖析詞向量模型之前锭魔,我們先看一下如何用一些模型來(lái)訓(xùn)練出詞向量例证。也就是給定一個(gè)語(yǔ)料庫(kù),它的輸出長(zhǎng)得是怎樣的迷捧。輸入是一個(gè)很長(zhǎng)的文章txt文件也叫語(yǔ)料庫(kù)织咧,輸出就是每個(gè)單詞的詞向量胀葱,中間是用于訓(xùn)練詞向量的模型,這個(gè)模型很多包括skipgram笙蒙,cbow等抵屿。
到目前為止我們簡(jiǎn)單地了解了詞向量以及它的訓(xùn)練是怎樣的。在這里做個(gè)簡(jiǎn)單的總結(jié):
詞向量可以認(rèn)為在某種程度上代表單詞的含義
詞向量是需要訓(xùn)練出來(lái)的捅位,也就是提前要設(shè)計(jì)好詞向量訓(xùn)練模型
詞向量技術(shù)極大推動(dòng)了NLP領(lǐng)域的發(fā)展
二. SkipGram模型詳解:重點(diǎn)難點(diǎn)
1. 訓(xùn)練詞向量的核心思想
詞向量模型其實(shí)很多轧葛,包括大家所熟悉的BERT等。每一種詞向量艇搀,它的目標(biāo)和作用是不一樣的尿扯,我們?cè)诤罄m(xù)的章節(jié)中會(huì)一一做介紹。但不管怎么樣焰雕,這些模型都享有著共同的核心思想衷笋。等我們深入理解了這個(gè)思想,便可以更容易理解模型為什么會(huì)這么設(shè)計(jì)矩屁,而且甚至將來(lái)也可以提出自己的模型辟宗。
首先說(shuō)明一點(diǎn),詞向量的學(xué)習(xí)通常是無(wú)監(jiān)督學(xué)習(xí)吝秕,也就是不需要標(biāo)注好的文本泊脐。那對(duì)于這樣的無(wú)監(jiān)督學(xué)習(xí),我們應(yīng)該如何合理地設(shè)計(jì)目標(biāo)函數(shù)并學(xué)出詞向量呢?
2. SkipGram的目標(biāo)函數(shù)
具體來(lái)學(xué)習(xí)一下SkipGram模型烁峭。它是一個(gè)非常著名的詞向量訓(xùn)練模型容客。它的核心思想是通過(guò)中心詞來(lái)預(yù)測(cè)它周圍的單詞。也就是說(shuō)则剃,如果我們的詞向量訓(xùn)練比較到位耘柱,則這方面的預(yù)測(cè)能力會(huì)更強(qiáng)。實(shí)際上棍现,這就是我們需要構(gòu)建的目標(biāo)函數(shù)。
仔細(xì)看镜遣!這遍沒看懂己肮??悲关?
3.?SkipGram的負(fù)采樣
得到了SkipGram目標(biāo)函數(shù)之后谎僻,發(fā)現(xiàn)了這個(gè)目標(biāo)函數(shù)其實(shí)不好優(yōu)化。所以需要換一種方式去優(yōu)化寓辱,其中比較流行的方法是使用負(fù)采樣艘绍。從名字中也可以猜到,這個(gè)方法用到了采樣的做法秫筏。接下來(lái)我們從另外一個(gè)角度來(lái)推導(dǎo)SkipGram的目標(biāo)函數(shù)诱鞠。
當(dāng)我們有了目標(biāo)函數(shù)之后挎挖,剩下的過(guò)程無(wú)非就是優(yōu)化并尋找最優(yōu)參數(shù)了。實(shí)際上航夺,通過(guò)優(yōu)化最終得出來(lái)的最優(yōu)參數(shù)就是訓(xùn)練出來(lái)的詞向量蕉朵。優(yōu)化方法可采用梯度下降法或者隨機(jī)梯度下降法。
推導(dǎo)沒看懂阳掐?始衅?
三. 其他詞向量技術(shù)
SkipGram是訓(xùn)練詞向量的其中一種方式,但并不是唯一的方法缭保。實(shí)際上汛闸,從第一次提出word2vec開始,學(xué)者們已經(jīng)提出了各種各樣的訓(xùn)練方式艺骂。每個(gè)方法論的側(cè)重點(diǎn)诸老、目標(biāo)是有所不同的。
1.?矩陣分解法
在推薦領(lǐng)域用的比較好彻亲。
矩陣分解作為全局方法也有它的優(yōu)點(diǎn)和缺點(diǎn)孕锄。一個(gè)最大的缺點(diǎn)是每次分解依賴于整個(gè)矩陣,這就導(dǎo)致假如有些個(gè)別文本改變了苞尝,按理來(lái)講是需要重新訓(xùn)練的畸肆,但優(yōu)點(diǎn)是學(xué)習(xí)過(guò)程包含了全局的信息。相反宙址,對(duì)于SkipGram模型轴脐,由于訓(xùn)練發(fā)生在局部,所以訓(xùn)練起來(lái)效率高抡砂,且能夠很好把握局部的文本特征大咱,但問題是它并不能從全局的視角掌握語(yǔ)料庫(kù)的特點(diǎn)。
所以注益,接下來(lái)的問題是能否把各自的都優(yōu)點(diǎn)發(fā)揮出來(lái)?答案是設(shè)計(jì)一個(gè)融合矩陣分解和SkipGram模型的方法碴巾,這個(gè)答案其實(shí)是Glove模型。
2.?Glove向量
3.?高斯詞嵌入
帶有方差和標(biāo)準(zhǔn)差丑搔,可以看出來(lái)學(xué)出的詞向量的置信度高還是低厦瓢,即是否靠譜。
4.?詞向量總結(jié)
到此為止講完了SkipGram啤月。在最后煮仇,我來(lái)給大家總結(jié)一下:
詞向量技術(shù)的目的是通過(guò)向量來(lái)表示一個(gè)單詞的語(yǔ)義。
SkipGram是流行的一種詞向量學(xué)習(xí)技術(shù)谎仲。
SkipGram通過(guò)中心詞來(lái)預(yù)測(cè)它周圍的單詞浙垫。
SkipGram原始的目標(biāo)函數(shù)很難優(yōu)化,所以采用負(fù)采樣的方式來(lái)解決。
除了SkipGram還有很多不同的學(xué)習(xí)詞向量的方式夹姥。
另外杉武,我們還需要留意一點(diǎn):對(duì)于任意一個(gè)單詞,SkipGram佃声,矩陣分解艺智,Glove等模型均學(xué)出對(duì)應(yīng)的一個(gè)詞向量。那這又有什么問題呢?
由于一個(gè)單詞在不同的上下文中所表達(dá)的含義可能不一樣,所以只學(xué)出對(duì)應(yīng)的一個(gè)向量是不夠的圾亏。
四. 論文解讀
SkipGram不僅僅可以學(xué)習(xí)詞向量十拣,也可以應(yīng)用推薦系統(tǒng)中。
十. 語(yǔ)言模型
一. 語(yǔ)言模型基礎(chǔ)
1. 什么是語(yǔ)言模型?
語(yǔ)言模型最主要的作用是保證文本的語(yǔ)法結(jié)構(gòu)志鹃,得到通順的語(yǔ)句夭问。語(yǔ)言模型是一種概率統(tǒng)計(jì)的方法,已經(jīng)訓(xùn)練好的語(yǔ)言模型可以對(duì)任何一個(gè)文本給出概率曹铃,概率越高說(shuō)明語(yǔ)法上越通順缰趋。通過(guò)比較兩句話在同一個(gè)語(yǔ)言模型上的概率,我們就可以得出哪一句話更通順一些陕见。
2.??計(jì)算語(yǔ)言模型的概率
上述的條件概率是從語(yǔ)料庫(kù)中統(tǒng)計(jì)出來(lái)的,而且語(yǔ)言模型本身是無(wú)監(jiān)督學(xué)習(xí),不需要數(shù)據(jù)標(biāo)簽秘血。
3. 馬爾可夫假設(shè)
當(dāng)條件為較長(zhǎng)的一段話時(shí),一模一樣的語(yǔ)句出現(xiàn)在語(yǔ)料庫(kù)中的概率會(huì)非常小评甜,很多時(shí)候?yàn)?灰粮,造成了稀疏性,就失去了統(tǒng)計(jì)的意義忍坷。那如何解決此問題呢?答案是做一些近似!
二. 語(yǔ)言模型訓(xùn)練
1.?不同的語(yǔ)言模型
根據(jù)不同的馬爾科夫假設(shè)(1階粘舟、2階、3階佩研。柑肴。。)旬薯,我們可以得到不同種類的語(yǔ)言模型晰骑。如,一階馬爾科夫假設(shè)下的語(yǔ)言模型為bi-gram绊序, 二階馬爾科夫假設(shè)下的模型為tri-gram些侍,以此類推。另外政模,假如前后單詞之間不存在任何的依賴關(guān)系,得到的語(yǔ)言模型為unigram蚂会。
2. 語(yǔ)言模型的訓(xùn)練
做一個(gè)簡(jiǎn)單的總結(jié):
語(yǔ)言模型的概率值可基于語(yǔ)料庫(kù)來(lái)統(tǒng)計(jì)淋样。
根據(jù)使用的馬爾科夫假設(shè)的不同,可以把語(yǔ)言模型分為unigram胁住, bigram趁猴, trigram刊咳, ngram。儡司。娱挨。
當(dāng)考慮多個(gè)單詞的時(shí)候,條件概率往往變得稀疏捕犬,導(dǎo)致大部分都變成0跷坝。
3. 語(yǔ)言模型的評(píng)估
假如訓(xùn)練好了語(yǔ)言模型断医,我們應(yīng)該如何判斷語(yǔ)言模型的好壞呢?比如手里有兩個(gè)不同的語(yǔ)言模型敷扫,如何判斷哪個(gè)更好?為了回答此問題买猖,首先需要一個(gè)評(píng)價(jià)標(biāo)準(zhǔn)汰瘫,也就是如何評(píng)估一個(gè)語(yǔ)言模型的好壞垄琐,并且結(jié)果是能夠量化的!
困惑度(Perplexity)越小越好物喷。
四. 語(yǔ)言模型的平滑
1.?不同的平滑方法
平滑對(duì)于語(yǔ)言模型至關(guān)重要慕购,假如沒有平滑操作震桶,很多概率都會(huì)變成0蜡吧。
2.?Add-one Smoothing
Add-one平滑其實(shí)也稱之為L(zhǎng)aplace平滑毫蚓,在樸素貝葉斯等模型中也會(huì)經(jīng)常用到。這種方法簡(jiǎn)單且有效昔善,不需要任何的訓(xùn)練過(guò)程元潘。
3.?Add-K Smoothing
Add-one平滑可看作是add-k平滑的特例,也就是當(dāng)K=1時(shí)就變成了Add-one平滑耀鸦。這里的K可以理解為是超參數(shù)柬批,可以試著去調(diào)節(jié)從而獲得比較好的K值。
4.??Interpolation
以上是比較常見的幾個(gè)平滑的方法袖订。當(dāng)然氮帐,除了這些,還有很多平滑的操作可供使用洛姑,感興趣的朋友們可以在網(wǎng)上搜一下如Good-turning smoothing平滑等上沐。對(duì)于本章做一個(gè)總結(jié):
語(yǔ)言模型可用來(lái)判斷語(yǔ)法的準(zhǔn)確性以及語(yǔ)句的通順與否。
當(dāng)任務(wù)中涉及到文本生成時(shí)楞艾,語(yǔ)言模型扮演著關(guān)鍵的角色参咙。
語(yǔ)言模型中的概率是基于語(yǔ)料庫(kù)統(tǒng)計(jì)出來(lái)的,這個(gè)過(guò)程也可以理解為是訓(xùn)練過(guò)程硫眯。
根據(jù)馬爾科夫假設(shè)的不同蕴侧,語(yǔ)言模型可分為unigram, bigram两入, trigram净宵。。。择葡。
在估算語(yǔ)言模型概率時(shí)紧武,需要用到平滑操作。
Add-one平滑是最簡(jiǎn)單且有效的平滑操作敏储,廣泛用在各類機(jī)器學(xué)習(xí)模型中阻星。