動詞從語法結構上來說,往往是句子的核心,絕大多數句子都是含有動詞的,形成謂語。並且,在複雜句中,謂語動詞的多少直接意味著從句或者分句的多少。
因此,在人工智慧的自然語言處理領域,對於動詞的處理也是重中之重。如果對一句話的動詞分析不準確,往往會導致計算機對整個句子的分析出現偏差。很遺憾的是,目前對於動詞的處理,在自然語言處理領域也並非完美,甚至可以說是還有相當大的問題。
以英語為例(也包括很多拉丁語系的其他語種以及一些非拉丁語系的語種),我們知道,動詞相較於名詞或其他詞性的詞的最大不同就是存在很多變體,大多數是時態上的,也有單複數等情況帶來的變形。並且,同一種情況不同的單詞還可能存在不同,會有特殊的變化。
另外,英語中還存在很多特殊的動詞,它們出現的頻次遠遠高於一般的普通動詞,例如「be」、「do」、「have/has」等,而且這些動詞往往是與其他動詞搭配使用,表示特殊的含義。
既然動詞是句子的核心,對於動詞這些千奇百怪的情況如果處理不好,顯然會影響計算機對整個句子的語法乃至於語義理解的準確程度。但是如同我們前面所說的,目前的自然處理領域對於動詞的處理還是不太完美的,讓我們來看看目前存在的一些問題。
我們來看看下面這句句子:
He is playing the ball.
這是非常簡單的一個現在進行時的句子,我們先來看看著名的史丹福大學開放的自然語言處理系統分析的結果:
最後一欄「Tagging」即是該系統對這句話的詞性標註,其中He是代詞(PRP),the是限定詞(DT),ball是名詞(NN),這幾個都沒有問題。對於is,該系統識別為「VBZ」,其中,VB代表「verb」即動詞的意思,Z是附加的一個後綴字母,表示是現在時的第三人稱單數形式;而對於playing,該系統認為是「VBG」,G表示是現在進行時(從現在進行時後綴「-ing」而來)。
目前主要的自然語言處理引擎中,動詞一般按其幾種變形分別標記為:
VB——表示動詞原形
VBP——表示動詞的一般現在時
VBZ——表示動詞一般現在時的第三人稱單數
VBG——表示動詞的現在分詞(也就是現在進行時)
VBD——表示動詞的過去式(源自後綴「-ed」)
VBN——表示動詞的過去分詞
而谷歌(Google)公司的分析引擎有的是按照這個約定來做的,有的則稍有不同。
如上圖所示,可以看到,谷歌的分析引擎將動詞全部標記為VERB,然後通過時態(tense)這個附加屬性來表示動詞的變形。
從上面的例子可以看出,目前主流的自然語言處理系統對動詞的分析存在的主要問題之一就是:對一些特殊動詞沒有區分開來,做特殊的處理。類似be動詞,還有do、have等動詞在英語中實在是太特殊了,很多時態、語氣、疑問、強調等語法現象都與這些動詞緊密相關,因此只有處理好了這些動詞,才有助於詞性識別後進一步的處理。
在《小仙英語伴讀》系統提供的改進動詞詞性標註體系中,將動詞類的詞性做了細化,將普通動詞全部改為「VV」開頭的標記,即:VV表示普通動詞原形,VVG表示普通動詞的現在分詞、VVD表示普通動詞的過去式等等。而規定將be動詞全部以「VB」開頭,規定do動詞全部以「VD」開頭,have動詞全部以「VH」開頭。舉例來說,VBG將代表be動詞的現在進行時「being」,VDD將代表do動詞的過去式「did」等等。
那麼對於上面例子中的英語句子,我們分析結果將是:
可以看到,「is」被識別為「VBZ」,即be動詞的第三人稱單數(第三行是動詞原形,在這裡分析出is的原型是be),而「playing」則被識別為「VVG」,也就是普通動詞的現在分詞。
基於這樣精細化的識別結果,再進行下一步的處理會方便很多,例如進行句子成分劃分時,我們可以依據「VBZ + VVG = 謂語」這個規則劃分出這句話的句子結構:
如上圖這樣,我們就可以把is playing理所當然地看作是兩個動詞合成的複合謂語,然後整個句子也能被判斷出是主謂賓結構的第三類句型。而如果按一般分析引擎分析成兩個無差別的動詞,則要實現這一步不能說完全不行,但會麻煩很多。
進一步地,我們還可以依據「VBZ + VVG = 現在進行時」的規則來對句子的時態進行準確判斷。
自然語言處理中,對於動詞的處理如果做得好,能夠相對比較輕鬆地駕馭哪怕是很複雜的句子。例如,根據動詞是句子的語法核心這一基本原理,我們可以劃分出複雜句中的從句或分句,下面就是一個例子。
The ant climbed onto it and floated in safety to the bank.
對於這句複合句看看我們能做到什麼地步吧。
首先,我們識別出了這句話是由兩個分句組成的;然後又識別出了這是個並列複合句而不是有從屬關係(即有主句和從句)的複合句;之後清晰地劃分出了各個從句和從句中的句子成分(主語、謂語、狀語等);甚至我們還能補充出第二個分句中被省略掉的主語(the ant);最後,我們神奇地提取出了句子中的核心部分,即去掉了句子中從語法上來說非必要的內容(例如修飾性的狀語等),給出了這條複雜句子最精簡但又從語法上「不傷筋骨」的部分,這對於後續的語義處理具有非常重要的意義。
動詞在自然語言處理中的重要性,相信到現在大家已經有了一些了解了,但其實還不僅於此,我們以後將繼續給大家介紹人工智慧領域中自然語言處理方面的內容。