提到dependency parser,我們就會(huì)想到自然語(yǔ)言處理,而句法分析是自然語(yǔ)言處理領(lǐng)域的一個(gè)關(guān)鍵問(wèn)題,dependency parser作為句法分析中的一個(gè)文法體系,近年來(lái),成為研究熱點(diǎn),并且逐漸廣泛應(yīng)用于其他自然語(yǔ)言處理任務(wù)中。飛馬網(wǎng)于3月21日晚,邀請(qǐng)到上海交大計(jì)算機(jī)科學(xué)與信息碩士,先后在UBS和螞蟻金服工作過(guò)的胡翔老師,在直播中為我們分享關(guān)于dependency parser的研究進(jìn)展以及它的一些主流方法等相關(guān)內(nèi)容。

以下是本次分享內(nèi)容:
一.自然語(yǔ)言理解的主要解決問(wèn)題
我們首先要了解一下自然語(yǔ)言理解領(lǐng)域想要解決的幾個(gè)問(wèn)題。自然語(yǔ)言處理的領(lǐng)域非常廣,信息檢索、智能問(wèn)答、情感分析、自動(dòng)翻譯等等,都可以說(shuō)是這個(gè)領(lǐng)域非常難且有待解決的問(wèn)題,今天我們主要討論的是語(yǔ)義表達(dá)及知識(shí)表達(dá)。

我們先從一個(gè)簡(jiǎn)單的例子著手,來(lái)了解一下語(yǔ)義表達(dá)。下面這張圖片的兩句話(huà),放到現(xiàn)在的語(yǔ)義自動(dòng)匹配模型里,幾乎相同,但為什么到人類(lèi)理解這里,這兩句話(huà)就是完全不同的意思呢?
從語(yǔ)義角度來(lái)說(shuō),一句話(huà)的含義是有層次和主要元素的,主要元素用學(xué)術(shù)性的話(huà)語(yǔ)說(shuō)就是語(yǔ)義框架,也就是我們所說(shuō)的“主謂賓”。雖然不是所有的句子都會(huì)有主謂賓覆蓋,但我們這里,先拿一個(gè)主謂賓的句子舉個(gè)例子。
主謂賓的句式可以理解為,這個(gè)句子里面有三個(gè)不同類(lèi)型的槽,每個(gè)槽只能填一個(gè)字或詞。一旦我們把兩句話(huà)結(jié)構(gòu)化之后,它們的區(qū)別就十分明顯了。

所以問(wèn)題就來(lái)了,有沒(méi)有一種結(jié)構(gòu)化的表達(dá)方式,可以有效地解決語(yǔ)義表達(dá)這個(gè)問(wèn)題?我們細(xì)想一下,這個(gè)問(wèn)題其實(shí)有幾大難點(diǎn)。首先,如果說(shuō)存在這樣一種結(jié)構(gòu),那么這個(gè)結(jié)構(gòu)一定要具有普適性,其次,更難的問(wèn)題是,如何讓計(jì)算機(jī)實(shí)現(xiàn)把一個(gè)序列化的句子轉(zhuǎn)化成這種結(jié)構(gòu)。
二.自然語(yǔ)言理解的幾種主流理論
接下來(lái)的部分,我們就來(lái)談?wù)勀壳敖鉀Q這兩個(gè)問(wèn)題的方法以及思考。自然語(yǔ)言理解主要有以下三種主流理論。

1.Phrase structure(句法結(jié)構(gòu)):
這套理論是由喬姆斯基提出的,在句法結(jié)構(gòu)中,一個(gè)非終結(jié)符只能生成小于等于兩個(gè)非終結(jié)符,或者生成一個(gè)終結(jié)符。

非終結(jié)符就是這張圖里面,像“S、NP、VP”等這些沒(méi)有實(shí)詞的標(biāo)簽,在我們構(gòu)成樹(shù)狀節(jié)點(diǎn)的結(jié)構(gòu)中,它下面還會(huì)有子節(jié)點(diǎn),有子節(jié)點(diǎn)的節(jié)點(diǎn),我們都稱(chēng)之為非終結(jié)符。
終結(jié)符就是這張圖里面,像“she、bought、car”等這些具體的實(shí)詞,是樹(shù)狀結(jié)構(gòu)中的葉子節(jié)點(diǎn)。
我們從句子層面看,一句話(huà)可以根據(jù)語(yǔ)義的層次性,即它們之間的緊密型,被表達(dá)成一個(gè)二叉樹(shù),如上圖所示。
那這個(gè)句法結(jié)構(gòu)有什么缺陷呢?我們看下圖,首先它是一個(gè)強(qiáng)序列要求的結(jié)構(gòu)。其次,它不是各種語(yǔ)言通用的框架,依賴(lài)于特定語(yǔ)言規(guī)則,普適性很差。最后,它反映的語(yǔ)義信息比較有限。

2.Dependency structure(一層句法):
它通過(guò)用詞與詞之間的有效邊來(lái)表示語(yǔ)法關(guān)系,因此在形式上會(huì)更簡(jiǎn)單、直觀。

在上圖這個(gè)例子里面,我們可以看到一條邊SBJ,也就是指句子的主語(yǔ),OBJ就是指句子的賓語(yǔ),NMOD就是指名詞的修飾詞,它通過(guò)邊的類(lèi)型來(lái)定義詞與詞之間的關(guān)系。而邊的類(lèi)型比較多,目前有三十幾種。
3.Frame semantics(框架語(yǔ)義):
它相比于之前的兩個(gè)理論,更偏重于語(yǔ)義及知識(shí)表達(dá),這套理論認(rèn)為一個(gè)完整的表達(dá)是要結(jié)合背景知識(shí)的。比如“吃”這個(gè)詞,不能獨(dú)立于知識(shí)來(lái)討論這個(gè)詞應(yīng)該怎么用,而要把它放在完整的語(yǔ)義結(jié)構(gòu)中?!稗D(zhuǎn)”這個(gè)詞也是如此。

?
三.Dependency parser的意義
Dependency parser是我們今天的主講內(nèi)容,所以我們就dependency parser來(lái)討論它的主要意義是什么。其實(shí)要討論dependency parser的意義,這可能是個(gè)比較難的話(huà)題,因?yàn)樗亲匀徽Z(yǔ)言處理領(lǐng)域里面一項(xiàng)比較基礎(chǔ)的研究,但它真正在實(shí)際應(yīng)用中的效果,主要有以下幾方面:

我們可以看到,Tree-LSTM較Bi-LSTM并沒(méi)有很明顯的優(yōu)勢(shì),所以“結(jié)構(gòu)化是不是有必要”,仍然是一個(gè)爭(zhēng)議點(diǎn),在胡翔老師看來(lái),他認(rèn)為這個(gè)話(huà)題對(duì)dependency parser的研究相當(dāng)于是對(duì)語(yǔ)言本質(zhì)的一些揭露,它的研究成果對(duì)理解自然語(yǔ)言很有幫助,雖然它不一定在實(shí)際應(yīng)用中起到效果。
四.Dependency parser的結(jié)構(gòu)
在傳統(tǒng)的dependency parser結(jié)構(gòu)中,有以下幾個(gè)限制:

在這些條件下,自然而言最后構(gòu)成的結(jié)果是一棵樹(shù)。存在爭(zhēng)議的一點(diǎn)是,我們構(gòu)成一個(gè)dependency parser結(jié)構(gòu)的時(shí)候,有交叉還是無(wú)交叉,實(shí)際上,支持交叉,句子表達(dá)的語(yǔ)義性更強(qiáng),但相繼引來(lái)的pass難度也會(huì)更高。
依存句法結(jié)構(gòu)的規(guī)范了解完之后,我們來(lái)介紹它的幾種主流pass方法。所謂的parser就是教會(huì)計(jì)算機(jī)把一句話(huà)自動(dòng)地翻譯成所規(guī)范的結(jié)構(gòu),因此我們就要有一些方法,幫助計(jì)算機(jī)能夠結(jié)合上下文或某些操作,來(lái)縮小它的搜索范圍和空間,有效地去構(gòu)成一棵樹(shù)。
1.Transition-based parser:
這是最經(jīng)典的方法,transition-based簡(jiǎn)單來(lái)說(shuō)是它定義的一系列操作,我們只要用這一系列的操作一路做下去,最后就能把它變成一棵樹(shù),這是直觀一點(diǎn)的理解。

這種pass方法主要基于狀態(tài)轉(zhuǎn)移,我們來(lái)看下面這張圖中的例子,來(lái)直觀地了解一下具體過(guò)程:
shift的功能是把當(dāng)前臨時(shí)站I站頂里面的token或一個(gè)結(jié)構(gòu),往左邊的S站里壓一個(gè)。
然后我們看到圖三里的Left-Arc(向左形成一條?。┎僮?,它的具體意義是從I和S里面各取一個(gè)元素彈出來(lái),畫(huà)一條左弧把它們連起來(lái),丟到最右邊的A里面,A的意義是一個(gè)操作歷史。
在“she”和“bought”之間形成一條左弧,左弧的意義是,弧向哪邊指,被指向的那個(gè)token是作為子節(jié)點(diǎn),指別人的token是作為一個(gè)父節(jié)點(diǎn),在這里,“bought”就作為一個(gè)父節(jié)點(diǎn)重新被壓到站里面,之后的操作就是不斷循環(huán)往復(fù),一直做到I站為空,這時(shí)候過(guò)程終止。
A站表示這個(gè)過(guò)程當(dāng)中的操作記錄,我們通過(guò)A站看到形成的弧是哪些,就能形成一棵樹(shù)。

這個(gè)算法的意義主要是,“我永遠(yuǎn)只操作我這句話(huà)最前面的兩個(gè)token”,可以這么理解,transition-based parser是通過(guò)基于局部詞的組合,來(lái)進(jìn)行局部的合并,一直到把整個(gè)東西“吃”完。它在運(yùn)行性能上有優(yōu)勢(shì),包含更多的語(yǔ)義性。
2.Graph-based parser:
相比于上面局部的方法,graph-based parser就是一種全局的方法。

它的核心思想是,不管每個(gè)詞之間的距離,把詞與詞的關(guān)系密切性變成一個(gè)值,然后生成一個(gè)對(duì)角樹(shù),生成這個(gè)樹(shù)的路徑就是dependency parser的路徑。它的優(yōu)勢(shì)是能夠?qū)崿F(xiàn)局部最優(yōu)解,因此它不會(huì)因?yàn)橹暗恼`差,導(dǎo)致全局最后的pass結(jié)果錯(cuò)誤。
五.基于deep learning的parser model介紹
最后我們介紹基于transition-based理論的一些deep learning模型。
1.Transition-based methods:
它的主要思路是先把一個(gè)句子變成句法樹(shù),再變成dependency parser,這個(gè)方法有點(diǎn)舍近求遠(yuǎn),但它的效果不錯(cuò)。它同樣會(huì)定義一些操作,即在一個(gè)序列上不斷做這些操作,直到結(jié)束,就能形成一棵樹(shù)。主要有以下三種操作:

這個(gè)模型就是在序列中,插左括號(hào)或右括號(hào)的非典型性序列打標(biāo)問(wèn)題,deep learning在里面起的作用是,每一個(gè)左括號(hào)和右括號(hào)封閉的token,把它們表達(dá)成一個(gè)更高級(jí)的含義。

2.Graph-based model:
這個(gè)模型是把之前構(gòu)建數(shù)的問(wèn)題變成距離計(jì)算的問(wèn)題。它本質(zhì)做的事情是建立一個(gè)矩陣,行和列都是這個(gè)句子里的token,每?jī)蓚€(gè)行列中的一個(gè)點(diǎn)表示a修飾b的概率或b修飾a的概率的一個(gè)得分,最后要形成樹(shù),我們就是在這個(gè)距離向量中找一棵最小生成樹(shù),生成出來(lái)的就是dependency parser。


所以在deep learning的模型里面,比較重要的就是怎么去計(jì)算這個(gè)距離向量,同樣的,也是因?yàn)橛衱ord embedding的發(fā)現(xiàn),讓我們能夠把一個(gè)句子變成連續(xù)向量。
那么在實(shí)際應(yīng)用中,dependency parser有多少意義呢?我們不能否認(rèn)dependency parser的意義,但它有幾點(diǎn)很大的限制:

那么為什么中文準(zhǔn)確率會(huì)那么低呢?主要有以下兩點(diǎn):

為了解決這個(gè)問(wèn)題,我們?cè)O(shè)計(jì)了一種簡(jiǎn)化標(biāo)注的思路:

怎么簡(jiǎn)化呢?就是讓標(biāo)注人員去標(biāo)這里面的語(yǔ)義結(jié)構(gòu),識(shí)別里面的語(yǔ)義塊,但它仍然有缺陷,我們只能強(qiáng)化學(xué)習(xí)。
以上所有部分就是這次線(xiàn)上直播的主要分享內(nèi)容,相信你一定對(duì)dependency parser有了更深入的認(rèn)識(shí),想了解更多更詳細(xì)內(nèi)容的小伙伴們,可以關(guān)注服務(wù)號(hào):FMI飛馬網(wǎng),點(diǎn)擊菜單欄飛馬直播,即可進(jìn)行學(xué)習(xí)。
