深度學(xué)習(xí)帶來了AI狂潮,推動(dòng)AI技術(shù)在近幾年獲得了長(zhǎng)足的發(fā)展。但是,目前較為成熟的AI技術(shù)多集中在感知層,如語音和圖像的識(shí)別。這些技術(shù)的發(fā)展為AI贏得了關(guān)注,開辟了早期市場(chǎng)。不過這些技術(shù)無法實(shí)現(xiàn)真正的“智能”。這之間的鴻溝就是對(duì)語言的理解。因此,未來10年,自然語言理解(NLP)技術(shù)將成為最重要,最受人關(guān)注的領(lǐng)域之一。不過,古話有云:“不積跬步,無以至千里。技術(shù)突破難以跨越式的出現(xiàn),有賴于“巨人的肩膀”,因此本篇文章為大家介紹現(xiàn)在主流的NLP技術(shù)。
按照語言習(xí)慣,NLP技術(shù)從下到上可以分為3個(gè)層面:詞法、句法、語義。
1. 詞匯是語言的最小單元,因此詞法技術(shù)可以被視為NLP技術(shù)的底層,也是其余NLP技術(shù)的基礎(chǔ)。詞法技術(shù)的核心任務(wù)是識(shí)別和區(qū)分文本中的單詞,以及對(duì)詞語進(jìn)行一些預(yù)處理。因?yàn)樵~語具有確定的形式,所以通過規(guī)則匹配就可以做到比較準(zhǔn)確的識(shí)別。但是現(xiàn)階段的分詞結(jié)果對(duì)語義的理解支持不夠,如何更好的輔助語義理解,將是分詞技術(shù)關(guān)注的重點(diǎn)。
2. 詞匯組織成語句,句法技術(shù)順理成章的成為NLP的第二個(gè)層面。句法是對(duì)語言進(jìn)行深層次理解的基石,特別對(duì)于機(jī)器翻譯非常重要。句法技術(shù)的主要任務(wù)是識(shí)別出句子所包含的句法成分以及這些成分之間的關(guān)系,一般以句法樹來表示句法分析的結(jié)果。句法分析一直是NLP技術(shù)前進(jìn)的巨大障礙,主要存在兩個(gè)難點(diǎn)。一是歧義,自然語言存在大量的歧義現(xiàn)象。人類自身可以依靠大量的先驗(yàn)知識(shí)有效地消除各種歧義,而機(jī)器由于在知識(shí)表示和獲取方面存在嚴(yán)重不足,很難像人類那樣進(jìn)行句法消歧。二是搜索空間,句法分析是一個(gè)極為復(fù)雜的任務(wù),候選樹個(gè)數(shù)隨句子增多呈指數(shù)級(jí)增長(zhǎng),搜索空間巨大。因此,必須設(shè)計(jì)出合適的解碼器,以確保能夠在可以容忍的時(shí)間內(nèi)搜索到模型定義最優(yōu)解。
3. 不論是英語還是漢語,語言的目的都是為了表達(dá)含義。因此,語義理解是NLP技術(shù)的終極目標(biāo),可以說各種NLP技術(shù)都采用不同的方式為該目的服務(wù)。語義技術(shù)不同于上述兩個(gè)層面,有明確的評(píng)判結(jié)果,只能通過一些具體場(chǎng)景來判斷機(jī)器對(duì)語義的理解是否恰當(dāng)。例如在文本關(guān)鍵詞提取中,就可以通過對(duì)提取結(jié)果的分析比較,來衡量機(jī)器對(duì)淺層語義的理解能力。
接下來會(huì)依次介紹詞法、句法中的關(guān)鍵技術(shù),之后介紹目前較熱的基于機(jī)器學(xué)習(xí)詞向量與深度學(xué)習(xí)中的NLP技術(shù)。
1. 詞法
詞法技術(shù)的核心任務(wù)是識(shí)別和區(qū)分文本中的單詞,其過程就是分詞的過程,因此詞法技術(shù)主要是各種分詞技術(shù)。主要分為兩大類,規(guī)則分詞與統(tǒng)計(jì)分詞。另外,不同語言的分詞技術(shù)也不近相同,因?yàn)槊總€(gè)語言詞法層面區(qū)別較大。比如英文中,通過空格即可區(qū)分詞語。但是漢語中,詞語是連在一起的,所以必須通過一定的技術(shù)才能做到區(qū)分,且區(qū)分精度較之英文稍差。以下主要介紹中文分詞技術(shù)。
2. 規(guī)則分詞
規(guī)則分詞就是通過詞典庫+字符串匹配的方式對(duì)文本進(jìn)行分詞。因?yàn)樵~語具有確定的形式,所以這種分詞方式能達(dá)到比較高的準(zhǔn)確率。據(jù)SunM.S.和 K.T.(1995)的研究表明中文中90.0%左右的句子,正向最大匹配法和逆向最大匹配法完全重合且正確,只有大概9.0%的句子兩種切分方法得到的結(jié)果不一樣,但其中必有一個(gè)是正確的(歧義檢測(cè)成功),只有不到1.0%的句子,使用正向最大匹配法和逆向最大匹配法的切分雖重合卻是錯(cuò)的,或者正向最大匹配法和逆向最大匹配法切分不同但兩個(gè)都不對(duì)(歧義檢測(cè)失敗)。基于上述結(jié)論,這種方法大約能正確切分90%的文本內(nèi)容。同時(shí),因?yàn)樗惴ê?jiǎn)單,這種方式具備較快的速度。
但是這種方式也具有明顯的缺點(diǎn),因?yàn)槠浠谠~典切分,所以無法識(shí)別出詞典中不存在的詞語。除此以外,當(dāng)存在多種切分方式的時(shí)候,無法判斷應(yīng)該使用哪一種切分方法,即歧義檢測(cè)能力較弱。
實(shí)際應(yīng)用中,常用該方法對(duì)文本進(jìn)行初步分詞,某些場(chǎng)景下,該方法甚至可以完全滿足業(yè)務(wù)需要。
3. 統(tǒng)計(jì)分詞(語言模型)
上文提到規(guī)則分詞的兩個(gè)缺陷:1)無法切分詞典中的未登錄詞語,2)無法進(jìn)行歧義檢測(cè)。為了克服這兩個(gè)缺點(diǎn),需要引入統(tǒng)計(jì)學(xué)方法,也就是語言模型。
3.1 何為語言模型?
顧名思義,語言模型是對(duì)語言的建模,其核心目的是找到待評(píng)測(cè)數(shù)據(jù)中,最符合語言習(xí)慣的表達(dá)(概率最大)。該模型廣泛用于NLP領(lǐng)域中的多項(xiàng)技術(shù),包括信息檢索、機(jī)器翻譯、語音識(shí)別。用概率論的專業(yè)術(shù)語描述語言模型就是:為長(zhǎng)度為m的字符串確定其概率分布,采用鏈?zhǔn)椒▌t可以將公式化簡(jiǎn)為,如公式1所示。
公式1: 鏈?zhǔn)椒▌t計(jì)算長(zhǎng)度為m的字符串的概率分布
3.2 n元模型
觀察公式1易知,當(dāng)文本過長(zhǎng)時(shí),公式右部從第三項(xiàng)起的每一項(xiàng)計(jì)算難度都很大。為解決該問題,有人提出n元模型(n-gram model)降低該計(jì)算難度。所謂n元模型就是在估算條件概率時(shí),忽略距離大于等于n的上文詞的影響,因此公式1的計(jì)算可簡(jiǎn)化為公式2。
公式2:n元模型
當(dāng)n=1時(shí)稱為一元模型( model),此時(shí)整個(gè)句子的概率可表示為:P(ω1,ω2,…,ωm)=P(ω1)P(ω2)…P(ωm)觀察可知,在一元語言模型中,整個(gè)句子的概率等于各個(gè)詞語概率的乘積。言下之意就是各個(gè)詞之間都是相互獨(dú)立的,這無疑是完全損失了句中的詞序信息。所以一元模型的效果并不理想。
當(dāng)n=2時(shí)稱為二元模型( model),公式2變?yōu)镻(ωi|ω1,ω2,…,ωi-1)=P(ωi|ωi-1)。當(dāng)n=3時(shí)稱為三元模型( model),公式3變?yōu)镻(ωi|ω1,ω2,…,ωi-1)=P(ωi|ωi-2,ωi-1)。顯然當(dāng)n≥2時(shí),該模型是可以保留一定的詞序信息的,而且n越大,保留的詞序信息越豐富,但計(jì)算成本也呈指數(shù)級(jí)增長(zhǎng)。
一般使用頻率計(jì)數(shù)的比例來計(jì)算n元條件概率,如公式4所示:
公式4: 使用頻率計(jì)數(shù)的比例計(jì)算n元條件概率,count(ωi-(n-1),…,ωi-1)表示詞語ωi-(n-1),…,ωi-1在語料庫中出現(xiàn)的總次數(shù)。
n元模型的思想是把每個(gè)詞看做是由詞的最小單位的各個(gè)字組成的,如果相連的字在不同的文本中出現(xiàn)的次數(shù)越多基于詞聯(lián)接的自然語言處理技術(shù)及其應(yīng)用研究,就證明這相連的字很可能就是一個(gè)詞。因此我們就可以利用字與字相鄰出現(xiàn)的頻率來反應(yīng)成詞的可靠度,統(tǒng)計(jì)語料中相鄰共現(xiàn)的各個(gè)字的組合的頻度,當(dāng)組合頻度高于某一個(gè)臨界值時(shí),我們便可認(rèn)為此字組可能會(huì)構(gòu)成一個(gè)詞語。
除了n元模型以外,比較著名的統(tǒng)計(jì)分詞方法還有隱馬爾可夫模型(HMM)和條件隨機(jī)場(chǎng)(CRF)模型,它們是將分詞作為字在字串中的序列標(biāo)注任務(wù)來實(shí)現(xiàn)的。
通過這種方式,可以一定程度上彌補(bǔ)規(guī)則分詞的缺陷,一是可以對(duì)詞典中未出現(xiàn)的詞進(jìn)行劃分,二是分詞時(shí)考慮了上下文語境。但是這種方法也有明顯的缺陷,即計(jì)算復(fù)雜度高,導(dǎo)致速度慢,并且需要很大的語料庫作為訓(xùn)練數(shù)據(jù)。
3.3 混合分詞
實(shí)際應(yīng)用中,常使用規(guī)則分詞+統(tǒng)計(jì)分詞的方式,即混合分詞的方式進(jìn)行分詞。這種組合既可以快速的對(duì)大部分文本進(jìn)行分詞,又可以對(duì)無法劃分或存在歧義的文本進(jìn)行速度慢但精細(xì)的劃分。
3.4 分詞無處不在
因?yàn)樵~語可以被視為語言表達(dá)的最小單元,因此,nlp各項(xiàng)技術(shù)中,幾乎都會(huì)用到分詞技術(shù)。并且,往往把分詞作為數(shù)據(jù)預(yù)處理的一部分,為后續(xù)的任務(wù)服務(wù)。
4. 詞性標(biāo)注
詞性是詞匯基本的語法屬性,通常也稱為詞類。詞性標(biāo)注是在給定句子中判定每個(gè)詞的語法范疇,確定其詞性并加以標(biāo)注的過程。例如,表示人、地點(diǎn)、事物以及其他抽象概念的名稱即為名詞,表示動(dòng)作或狀態(tài)變化的詞為動(dòng)詞,描述或修飾名詞屬性、狀態(tài)的詞為形容詞。如給定一個(gè)句子:“這兒是個(gè)非常漂亮的公園”,對(duì)其的標(biāo)注結(jié)果應(yīng)如下:“這兒/代詞是/動(dòng)詞個(gè)/量詞非常/副詞漂亮/形容詞的/結(jié)構(gòu)助詞公園/名詞”。
在中文中,一個(gè)詞的詞性很多時(shí)候都不是固定的,一般表現(xiàn)為同音同形的詞在不同場(chǎng)景下,其表示的語法屬性截然不同基于詞聯(lián)接的自然語言處理技術(shù)及其應(yīng)用研究,這就為詞性標(biāo)注帶來很大的困難;但是另外一方面,從整體上看,大多數(shù)詞語,尤其是實(shí)詞,一般只有一到兩個(gè)詞性,且其中一個(gè)詞性的使用頻次遠(yuǎn)遠(yuǎn)大于另一個(gè),即使每次都將高頻詞性作為詞性選擇進(jìn)行標(biāo)注,也能實(shí)現(xiàn)80%以上的準(zhǔn)確率。如此,若我們對(duì)常用詞的詞性能夠進(jìn)行很好地識(shí)別,那么就能夠覆蓋絕大多數(shù)場(chǎng)景,滿足基本的準(zhǔn)確度要求。
目前較為主流的方法是如同分詞一樣,將句子的詞性標(biāo)注作為一個(gè)序列標(biāo)注問題來解決,那么分詞中常用的手段,如隱含馬爾可夫模型、條件隨機(jī)場(chǎng)模型等皆可在詞性標(biāo)注任務(wù)中使用。除此以外,詞性標(biāo)注需要有一定的標(biāo)注規(guī)范,如將詞分為名詞、形容詞、動(dòng)詞,然后用“n”“adj”“v”等來進(jìn)行表示。中文領(lǐng)域中尚無統(tǒng)一的標(biāo)注標(biāo)準(zhǔn),較為主流的主要為北大的詞性標(biāo)注集和賓州詞性標(biāo)注集兩大類。
詞性標(biāo)注沒有獨(dú)立的應(yīng)用場(chǎng)景,主要用于增加語義的精準(zhǔn)表達(dá),比如問答系統(tǒng)中,可以使用詞性標(biāo)注提高問題相似度判斷的準(zhǔn)確性。
5. 命名實(shí)體識(shí)別
與自動(dòng)分詞、詞性標(biāo)注一樣,命名實(shí)體識(shí)別也是自然語言處理的一個(gè)基礎(chǔ)任務(wù),是信息抽取、信息檢索、機(jī)器翻譯、問答系統(tǒng)等多種自然語言處理技術(shù)必不可少的組成部分。其目的是識(shí)別語料中人名、地名、組織機(jī)構(gòu)名等命名實(shí)體。由于這些命名實(shí)體數(shù)量不斷增加,通常不可能在詞典中窮盡列出,且其構(gòu)成方法具有各自的規(guī)律性,因此,通常把對(duì)這些詞的識(shí)別在詞匯形態(tài)處理(如漢語切分)任務(wù)中獨(dú)立處理,稱為命名實(shí)體識(shí)別(Named ,NER)。NER研究的命名實(shí)體一般分為3大類(實(shí)體類、時(shí)間類和數(shù)字類)和7小類(人名、地名、組織機(jī)構(gòu)名、時(shí)間、日期、貨幣和百分比)。由于數(shù)量、時(shí)間、日期、貨幣等實(shí)體識(shí)別通常可以采用模式匹配的方式獲得較好的識(shí)別效果,相比之下人名、地名、機(jī)構(gòu)名較復(fù)雜,因此近年來的研究主要以這幾種實(shí)體為主。
命名實(shí)體識(shí)別當(dāng)前并不是一個(gè)大熱的研究課題,因?yàn)閷W(xué)術(shù)界部分認(rèn)為這是一個(gè)已經(jīng)解決了的問題,但是也有學(xué)者認(rèn)為這個(gè)問題還沒有得到很好地解決,原因主要有:命名實(shí)體識(shí)別只是在有限的文本類型(主要是新聞?wù)Z料)和實(shí)體類別(主要是人名、地名)中取得了效果;與其他信息檢索領(lǐng)域相比,實(shí)體命名評(píng)測(cè)語料較小,容易產(chǎn)生過擬合;命名實(shí)體識(shí)別更側(cè)重高召回率,但在信息檢索領(lǐng)域,高準(zhǔn)確率更重要;通用的識(shí)別多種類型的命名實(shí)體的系統(tǒng)性很差。
同時(shí),中文的命名實(shí)體識(shí)別與英文的相比,挑戰(zhàn)更大,目前未解決的難題更多。命名實(shí)體識(shí)別效果的評(píng)判主要看實(shí)體的邊界是否劃分正確以及實(shí)體的類型是否標(biāo)注正確。在英文中,命名實(shí)體一般具有較為明顯的形式標(biāo)志(如英文實(shí)體中的每個(gè)詞的首字母要大寫),因此其實(shí)體邊界識(shí)別相對(duì)容易很多,主要重點(diǎn)是在對(duì)實(shí)體類型的確定。而在漢語中,相較于實(shí)體類別標(biāo)注子任務(wù),實(shí)體邊界的識(shí)別更加困難。
中文命名實(shí)體識(shí)別主要有以下難點(diǎn):
類似的,命名實(shí)體識(shí)別也有3種方法:基于規(guī)則、基于統(tǒng)計(jì)與混合方法。
命名實(shí)體識(shí)別目前多用于知識(shí)圖譜中,知識(shí)圖譜主要是構(gòu)建實(shí)體之間的關(guān)系,因此非常依賴于命名實(shí)體識(shí)別技術(shù)。
6. 詞語預(yù)處理
詞語預(yù)處理的核心思想是排除文本中對(duì)語義表達(dá)無幫助或造成干擾的成分,常見于英文文本。
7. 句法
在自然語言處理中,機(jī)器翻譯是一個(gè)重要的課題,也是NLP應(yīng)用的主要領(lǐng)域,而句法分析是機(jī)器翻譯的核心數(shù)據(jù)結(jié)構(gòu)。句法分析是自然語言處理的核心技術(shù),是對(duì)語言進(jìn)行深層次理解的基石。句法分析的主要任務(wù)是識(shí)別出句子所包含的句法成分以及這些成分之間的關(guān)系,一般以句法樹來表示句法分析的結(jié)果。從20世紀(jì)50年代初機(jī)器翻譯課題被提出時(shí)算起,自然語言處理研究已經(jīng)有60余年的歷史,句法分析一直是自然語言處理前進(jìn)的巨大障礙。句法分析主要有以下兩個(gè)難點(diǎn):
句法分析()是從單詞串得到句法結(jié)構(gòu)的過程,而實(shí)現(xiàn)該過程的工具或程序被稱為句法分析器()。句法分析的種類很多,這里我們根據(jù)其側(cè)重目標(biāo)將其分為完全句法分析和局部句法分析兩種。兩者的差別在于,完全句法分析以獲取整個(gè)句子的句法結(jié)構(gòu)為目的;而局部句法分析只關(guān)注于局部的一些成分,例如常用的依存句法分析就是一種局部分析方法。
句法分析中所用方法可以簡(jiǎn)單地分為基于規(guī)則的方法和基于統(tǒng)計(jì)的方法兩大類。基于規(guī)則的方法在處理大規(guī)模真實(shí)文本時(shí),會(huì)存在語法規(guī)則覆蓋有限、系統(tǒng)可遷移差等缺陷。隨著大規(guī)模標(biāo)注樹庫的建立,基于統(tǒng)計(jì)學(xué)習(xí)模型的句法分析方法開始興起,句法分析器的性能不斷提高,最典型的就是風(fēng)靡于20世紀(jì)70年代的PCFG( Free ),它在句法分析領(lǐng)域得到了極大的應(yīng)用,也是現(xiàn)在句法分析中常用的方法。統(tǒng)計(jì)句法分析模型本質(zhì)是一套面向候選樹的評(píng)價(jià)方法,其會(huì)給正確的句法樹賦予一個(gè)較高的分值,而給不合理的句法樹賦予一個(gè)較低的分值,這樣就可以借用候選句法樹的分值進(jìn)行消歧。
8. 句法分析語料
統(tǒng)計(jì)學(xué)習(xí)方法多需要語料數(shù)據(jù)的支撐,統(tǒng)計(jì)句法分析也不例外。相較于分詞或詞性標(biāo)注,句法分析的數(shù)據(jù)集要復(fù)雜很多,其是一種樹形的標(biāo)注結(jié)構(gòu),因此又稱樹庫。圖1所示是一個(gè)典型的句法樹。
圖1 句法樹示例
目前使用最多的樹庫來自美國賓夕法尼亞大學(xué)加工的英文賓州樹庫(Penn ,PTB)。PTB的前身為ATIS(Air )和WSJ(Wall )樹庫,具有較高的一致性和標(biāo)注準(zhǔn)確率。
中文樹庫建設(shè)較晚,比較著名的有中文賓州樹庫( ,CTB)、清華樹庫( ,TCT)、臺(tái)灣中研院樹庫。其中CTB是賓夕法尼亞大學(xué)標(biāo)注的漢語句法樹庫,也是目前絕大多數(shù)的中文句法分析研究的基準(zhǔn)語料庫。TCT是清華大學(xué)計(jì)算機(jī)系智能技術(shù)與系統(tǒng)國家重點(diǎn)實(shí)驗(yàn)室人員從漢語平衡語料庫中提取出100萬規(guī)模的漢字語料文本,經(jīng)過自動(dòng)句法分析和人工校對(duì),形成的高質(zhì)量的標(biāo)注有完整句法結(jié)構(gòu)的中文句法樹語料庫。 是中國臺(tái)灣中研院詞庫小組從中研院平衡語料庫中抽取句子,經(jīng)過電腦自動(dòng)分析成句法樹,并加以人工修改、檢驗(yàn)后所得的成果。
不同的樹庫有著不同的標(biāo)記體系,使用時(shí)切忌使用一種樹庫的句法分析器,然后用其他樹庫的標(biāo)記體系來解釋。由于樹庫眾多,這里不再講述具體每一種樹庫的標(biāo)記規(guī)范,感興趣的讀者可網(wǎng)上搜索自行查閱。圖2所示為清華樹庫的部分標(biāo)記集。
圖2 清華樹庫的漢語成分標(biāo)記集(部分)
9. 依存句法分析
依存句法分析是比較常用的句法依存技術(shù),是通過分析語言單位內(nèi)成分之前的依存關(guān)系解釋其句法結(jié)構(gòu),主張句子中核心動(dòng)詞是支配其他成分的重心成分。而它本身卻不受其他任何成分的支配,所有收支配成分都以某種關(guān)系從屬于支配者。直觀來講,依存句法分析識(shí)別句子中的“主謂賓”、“定狀補(bǔ)”這些語法成分,并分析各成分之間的關(guān)系。
圖3 依存句法分析示例
我的理解是句法依存分析可用于語料庫較少時(shí),對(duì)句子進(jìn)行拆分,幫助語義理解。
10. 文本向量化
文本表示是自然語言處理中的基礎(chǔ)工作,文本表示的好壞直接影響到整個(gè)自然語言處理系統(tǒng)的性能。因此,研究者們投入了大量的人力物力來研究文本表示方法,以期提高自然語言處理系統(tǒng)的性能。在自然語言處理研究領(lǐng)域,文本向量化是文本表示的一種重要方式。顧名思義,文本向量化就是將文本表示成一系列能夠表達(dá)文本語義的向量。無論是中文還是英文,詞語都是表達(dá)文本處理的最基本單元。當(dāng)前階段,對(duì)文本向量化大部分的研究都是通過詞向量化實(shí)現(xiàn)的。與此同時(shí),也有相當(dāng)一部分研究者將文章或者句子作為文本處理的基本單元,于是產(chǎn)生了和技術(shù)。
11. 詞袋模型
詞袋(Bag Of Word)模型是最早的以詞語為基本處理單元的文本向量化方法。下面舉例說明該方法的原理。首先給出兩個(gè)簡(jiǎn)單的文本如下:
基于上述兩個(gè)文檔中出現(xiàn)的單詞,構(gòu)建如下詞典():
{"John": 1, "likes": 2, "to": 3, "watch": 4, "movies": 5, "also": 6, "football": 7, "games": 8, "Mary": 9, "too": 10, }
上面詞典中包含10個(gè)單詞,每個(gè)單詞有唯一的索引,那么每個(gè)文本我們可以使用一個(gè)10維的向量來表示。如下所示:
該向量與原來文本中單詞出現(xiàn)的順序沒有關(guān)系,而是詞典中每個(gè)單詞在文本中出現(xiàn)的頻率。該方法雖然簡(jiǎn)單易行,但是存在如下三方面的問題:
12. 詞向量
近年來,隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,互聯(lián)網(wǎng)上的數(shù)據(jù)急劇增加。大量無標(biāo)注的數(shù)據(jù)產(chǎn)生,使得研究者將注意力轉(zhuǎn)移到利用無標(biāo)注數(shù)據(jù)挖掘有價(jià)值的信息上來。詞向量()技術(shù)就是為了利用神經(jīng)網(wǎng)絡(luò)從大量無標(biāo)注的文本中提取有用信息而產(chǎn)生的。
一般來說詞語是表達(dá)語義的基本單元。因?yàn)樵~袋模型只是將詞語符號(hào)化,所以詞袋模型是不包含任何語義信息的。如何使“詞表示”包含語義信息是該領(lǐng)域研究者面臨的問題。分布假說( )的提出為解決上述問題提供了理論基礎(chǔ)。該假說的核心思想是:上下文相似的詞,其語義也相似。隨后有學(xué)者整理了利用上下文分布表示詞義的方法,這類方法就是有名的詞空間模型(word space model)。隨著各類硬件設(shè)備計(jì)算能力的提升和相關(guān)算法的發(fā)展,神經(jīng)網(wǎng)絡(luò)模型逐漸在各個(gè)領(lǐng)域中嶄露頭角,可以靈活地對(duì)上下文進(jìn)行建模是神經(jīng)網(wǎng)絡(luò)構(gòu)造詞表示的最大優(yōu)點(diǎn)。下文將介紹神經(jīng)網(wǎng)絡(luò)構(gòu)建詞向量的方法。
通過語言模型構(gòu)建上下文與目標(biāo)詞之間的關(guān)系是一種常見的方法。神經(jīng)網(wǎng)絡(luò)詞向量模型就是根據(jù)上下文與目標(biāo)詞之間的關(guān)系進(jìn)行建模。在初期,詞向量只是訓(xùn)練神經(jīng)網(wǎng)絡(luò)語言模型過程中產(chǎn)生的副產(chǎn)品,而后神經(jīng)網(wǎng)絡(luò)語言模型對(duì)后期詞向量的發(fā)展方向有著決定性的作用。
13. CBOW模型和Skip-gram模型
CBOW模型和Skip-gram模型是現(xiàn)在比較成熟和常用的詞向量模型。
CBOW模型如圖4所示,由圖易知,該模型使用一段文本的中間詞作為目標(biāo)詞;同時(shí),CBOW模型去掉了隱藏層,這會(huì)大幅提升運(yùn)算速率。并且因?yàn)槠淙コ穗[藏層,所以其輸入層就是語義上下文的表示。
圖4 CBOW模型結(jié)構(gòu)圖
CBOW對(duì)目標(biāo)詞的條件概率計(jì)算如圖5所示:
圖5 CBOW對(duì)目標(biāo)詞的條件概率計(jì)算公式
CBOW的目標(biāo)函數(shù)為∑(ω,c)∈DlogP(ω,c)。
與CBOW模型對(duì)應(yīng)的,還有Skip-gram模型。這兩個(gè)模型實(shí)際上是兩種不同思想的實(shí)現(xiàn):CBOW的目標(biāo)是根據(jù)上下文來預(yù)測(cè)當(dāng)前詞語的概率,且上下文所有的詞對(duì)當(dāng)前詞出現(xiàn)概率的影響的權(quán)重是一樣的,因此叫 bag-of-words模型。如在袋子中取詞,取出數(shù)量足夠的詞就可以了,取出的先后順序則是無關(guān)緊要的。Skip-gram剛好相反,其是根據(jù)當(dāng)前詞語來預(yù)測(cè)上下文概率的。在實(shí)際使用中,算法本身并無高下之分,可根據(jù)最后呈現(xiàn)的效果來進(jìn)行算法選擇。
Skip-gram模型的結(jié)構(gòu)如圖6所示,Skip-gram模型同樣沒有隱藏層。但與CBOW模型輸入上下文詞的平均詞向量不同,Skip-gram模型是從目標(biāo)詞的上下文中選擇一個(gè)詞,將其詞向量組成上下文的表示。
圖6 Skip-gram模型結(jié)構(gòu)圖
對(duì)整個(gè)語料而言,Skip-gram模型的目標(biāo)函數(shù)為圖7所示:
圖7 Skip-gram模型目標(biāo)函數(shù)
14. NLP中的深度學(xué)習(xí)
深度學(xué)習(xí)在NLP的應(yīng)用多是循環(huán)神經(jīng)網(wǎng)絡(luò)( ,RNN),它能夠通過在原有神經(jīng)網(wǎng)絡(luò)基礎(chǔ)上增加記憶單元,處理任意長(zhǎng)度的序列(理論上),在架構(gòu)上比一般神經(jīng)網(wǎng)絡(luò)更加能夠處理序列相關(guān)的問題,因此,這也是為了解決這類問題而設(shè)計(jì)的一種網(wǎng)絡(luò)結(jié)構(gòu)。
RNN背后的思想是利用順序信息。在傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)中,我們假設(shè)所有的輸入(包括輸出)之間是相互獨(dú)立的。對(duì)于很多任務(wù)來說,這是一個(gè)非常糟糕的假設(shè)。如果你想預(yù)測(cè)一個(gè)序列中的下一個(gè)詞,你最好能知道哪些詞在它前面。RNN之所以是循環(huán)的,是因?yàn)樗槍?duì)系列中的每一個(gè)元素都執(zhí)行相同的操作,每一個(gè)操作都依賴于之前的計(jì)算結(jié)果。換一種方式思考,可以認(rèn)為RNN記憶了當(dāng)前為止已經(jīng)計(jì)算過的信息。理論上,RNN可以利用任意長(zhǎng)的序列信息,但實(shí)際中只能回顧之前的幾步。例如,想象你要把一部電影里面每個(gè)時(shí)間點(diǎn)正在發(fā)生的事情進(jìn)行分類:傳統(tǒng)神經(jīng)網(wǎng)絡(luò)并不知道怎樣才能把關(guān)于之前事件的推理運(yùn)用到之后的事件中去;而RNN網(wǎng)絡(luò)可以解決這個(gè)問題,它帶有循環(huán)的網(wǎng)絡(luò),具有保持信息的作用。
15. LSTM
長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(Long Short Term ,LSTM)是一種特殊的RNN,它能夠?qū)W習(xí)長(zhǎng)時(shí)間依賴。它們由&(1997)提出,后來由很多人加以改進(jìn)和推廣。它們?cè)诖罅康膯栴}上都取得了巨大成功,現(xiàn)在已經(jīng)被廣泛應(yīng)用。
LSTM是專門設(shè)計(jì)用來避免長(zhǎng)期依賴問題的。記憶長(zhǎng)期信息是LSTM的默認(rèn)行為,而不是它們努力學(xué)習(xí)的東西!
所有的循環(huán)神經(jīng)網(wǎng)絡(luò)都具有鏈?zhǔn)降闹貜?fù)模塊神經(jīng)網(wǎng)絡(luò)。在標(biāo)準(zhǔn)的RNN中,這種重復(fù)模塊具有非常簡(jiǎn)單的結(jié)構(gòu),比如一個(gè)層,如圖8所示。
圖8 tanh層
LSTM同樣具有鏈?zhǔn)浇Y(jié)構(gòu),但是其重復(fù)模塊卻有著不同的結(jié)構(gòu)。不同于單獨(dú)的神經(jīng)網(wǎng)絡(luò)層,它具有4個(gè)以特殊方式相互影響的神經(jīng)網(wǎng)絡(luò)層,如圖9所示。
圖9 LSTMs結(jié)構(gòu)圖
LSTM的關(guān)鍵在于單元狀態(tài),在圖10中以水平線表示。
單元狀態(tài)就像一個(gè)傳送帶。它順著整個(gè)鏈條從頭到尾運(yùn)行,中間只有少許線性的交互。信息很容易順著它流動(dòng)而保持不變。
圖10 LSTM組成部件
LSTM通過稱為門(gate)的結(jié)構(gòu)來對(duì)單元狀態(tài)增加或者刪除信息。
門是選擇性讓信息通過的方式。它們的輸出有一個(gè)層和逐點(diǎn)乘積操作,如圖11所示。
圖11 門結(jié)構(gòu)
16. 模型
對(duì)于一些NLP任務(wù),比如聊天機(jī)器人、機(jī)器翻譯、自動(dòng)文摘等,傳統(tǒng)的方法都是從候選集中選出答案,這對(duì)候選集的完善程度要求很高。隨著近年來深度學(xué)習(xí)的發(fā)展,國內(nèi)外學(xué)者將深度學(xué)習(xí)技術(shù)應(yīng)用于NLG( ,自然語言生成)和NLU( ,自然語言理解),并取得了一些成果。-是近兩年來在NLG和NLU方面應(yīng)用較多的方法。然而,由于語言本身的復(fù)雜性,目前還沒有一種模型能真正解決NLG和NLU問題。
總結(jié)
本文粗略的介紹了NLP中的常見技術(shù),只是起到拋磚引玉的作用,有興趣的讀者,可以閱讀相關(guān)資料。因?yàn)楸疚膭?chuàng)作時(shí)間有限,很多地方處理的不夠細(xì)膩,希望讀者理解。