趙文文
(北京航空航天大學,北京 100191)
語言中存在大量的歧義現(xiàn)象,以往對歧義的研究基本局限在永久歧義句,而對暫時歧義句注意得不夠。由短暫歧義形成的花園幽徑句(garden path sentence)是語言處理過程中一種特殊的局部歧義現(xiàn)象,具有很大的研究價值。目前國內(nèi)花園幽徑句的研究重點主要分為兩方面:一方面是基于心理語言的分析,研究如何解讀花園幽徑句,焦點是消除歧義的機制和手段,即所謂析句策略 (parsing strategies)(蔣祖康2000;馮志偉2003a);另一方面是基于句法的分析,主要探討該花園幽徑句臨時歧義的形成原因,一般是從語言結(jié)構(gòu)本身進行探索,提出了“θ—掛靠原則”(θ-Attachment)等理論 (劉國輝,石錫書2005)。上述兩類研究都取得了一定的成就,前者對于機器翻譯、人工智能很有裨益,后者也在相當程度上揭示了花園幽徑句的句法特征及其對歧義形成過程的影響。在當今社會高度智能高度信息化的大背景下,用計算機實現(xiàn)語言的自動分析顯得尤為重要。本文將從自動分析算法入手,以實例分析評析花園幽徑句的自動分析算法。
1970年,T.G.Bever在《語言結(jié)構(gòu)的認知基礎》(The Cognitive Basis for Linguistic Structures)一文中提出了英語中的一種特別的句子,即Garden Path Sentence。很典型的一個例子是“The horse raced past the barn fell”(跑過糧倉的馬倒下了)。當讀者讀到“The horse raced past the barn”時,很自然的認為句子已經(jīng)完整,raced一詞是主要動詞,在該句中做謂語,但是,當讀者再往下讀到fell的時候,才會恍然大悟,raced一詞在句中并不做謂語,而是作為定語修飾horse,句中真正的謂語是出現(xiàn)在句末的fell。在理解此類句子時,讀到句尾才會發(fā)現(xiàn)先前的理解是錯誤的,于是不得不返回句首對句子進行重新解讀。馮志偉(2003a)將此類特別的句子形象的翻譯為“花園幽徑句”,將其定義為因語言的輸入順序?qū)е戮渥咏M成成分之間的語法關系不確定而暫時引起歧義的一種特殊語言現(xiàn)象,并有一段很形象的描述,“我們在理解這個句子的時候,正如我們走進一個風景如畫的花園,要尋找這個花園的出口,大多數(shù)人都認為出口一定應該在花園的主要路徑的末端,因此可以信步沿著主要路徑自然而然地、悠然自得地走向花園的出口,正當我們沿著花園中的主要路徑欣賞花園中的美景而心曠神怡的時候,突然發(fā)現(xiàn)這條主要路徑是錯的,它并不通向花園的出口,而能夠通向花園出口的正確的路徑,卻是在主要路徑旁邊的另一條被幾乎游人遺忘的毫不起眼的荒僻的幽徑?!碑斎?,花園幽徑句不只存在于英語當中,而是廣泛存在于各種語言當中。如在漢語中,“他一讀書就掉了”,在讀到“讀書”時,讀者會很自然的將“讀”作為動詞,“讀書”結(jié)合在一起來理解全句,但后來發(fā)現(xiàn)其實正確的理解應該是將“讀”和“書”分開,“書”是后面的動詞“掉”的主語(曲濤,王準寧2005)。
花園幽徑句有三個句法語義特征:1)花園幽徑句是臨時的歧義句,句子的前段有歧義,但是整個句子沒有歧義;2)人們在理解花園幽徑句的前面的歧義段的過程中,不同的歧義結(jié)果之間有優(yōu)先性,有的歧義解釋是人們所樂于接受的,有的歧義解釋是人們不太愿意接受的;3)人們不愿意接受的解釋其實這個句子正確的分析結(jié)果(馮志偉2000)。
工程主義取向的計算語言學家認為從研究程序上講,計算語言學研究一般分為三個階段:1)數(shù)學建模。計算機無法像人類一樣認知自然語言,因此在對自然語言進行處理的時候需要把自然語言形式化,使之能以一定的數(shù)學形式嚴密而規(guī)整的標示出來,即為有關的語言問題建立數(shù)學模型,因此需要選擇恰當?shù)男问秸Z法(formal grammar)使得自然語言中的句子結(jié)構(gòu)用某種數(shù)學形式明確而清晰地表達出來;2)算法設計。為了能讓計算機根據(jù)語法規(guī)則自動分析自然語言,必須要為自然語言設計相應的算法。此階段要將嚴密而規(guī)整的數(shù)學形式以算法的形式表達出來,所以需要研究句子分析的嚴格的手續(xù)(procedures)并抽象成機械而明確的步驟,一步步逼近分析結(jié)果;3)程序?qū)崿F(xiàn)。根據(jù)算法用程序語言編寫計算機程序,使之在計算機上得以實現(xiàn)(computer implementation)(袁毓林 2001)。
計算語言學分析自然語言的方法主要有兩種:一種是基于規(guī)則的方法,一種是基于統(tǒng)計的方法。實踐證明,這兩種方法各有千秋。盡管基于統(tǒng)計的方法對于大規(guī)模真實文本的處理比較適合,但基于規(guī)則的方法的作用也不容小覷,而基于短語結(jié)構(gòu)語法的自動句法分析方法,就是基于規(guī)則的方法的一個重要方面 (馮志偉2003b)。
喬姆斯基的形式語法G是一個四元組
其中,Vn是非終極(non-terminal)詞匯集,Vt是終極(terminal)詞匯集,S 表示初始符號(starting point),P 表示重寫規(guī)則 (rewrite rules)。P所表示的重寫規(guī)則是上下文無關的,該種語法是一種上下文無關語法(context-free grammar,CFG)也叫做上下文無關的短語結(jié)構(gòu)語法(context-free phrase structure grammar),或者叫做短語結(jié)構(gòu)語法(phrase structure grammar,簡稱PSG)。
馮志偉(2000)介紹了5種主要的基于短語結(jié)構(gòu)語法的自動句法分析方法,即自頂向下分析法、自底向上分析法、富田算法、左腳分析法以及CYK算法。我們通過自頂向下分析法以及自底向上分析法對花園幽徑句進行分析,以Pritchett(1988)中的典型花園幽徑句為例:
自頂向下分析法是指在分析句子時,根據(jù)重寫規(guī)則,從初始符號開始,自頂向下的進行搜索,構(gòu)造推導樹,一直分析到句子結(jié)尾為止。在搜索過程中,搜索目標首先是初始符號S,從S開始,計算機選擇文法中使用的規(guī)則來替換搜索目標,并用文法規(guī)則右邊部分同句子中的單詞相匹配,如果匹配成功,則抹去這個單詞,在搜索目標中記錄有關規(guī)則,然后繼續(xù)對輸入句子中的遺留部分進行搜索,如果分析到句子的結(jié)尾,搜索目標為空,則分析成功。如果再搜索過程中,搜索目標為空但句子中仍有部分遺留,就會發(fā)生回溯(backtracking),在有遺留部分的步驟中改用規(guī)則,從而使搜索得以成功。
對于例(1),我們提出以下文法:
根據(jù)以上文法,例(1)的分析過程如下(向下的箭頭“↓”旁邊注明規(guī)則的號碼):
如果根據(jù)規(guī)則(9)抹去river,句子中還有遺留部分sank,而這時搜索目標已經(jīng)變空,分析無法繼續(xù)進行下去,因而發(fā)生回溯,回溯到第(2)步,看一看是否還能利用別的規(guī)則進行分析:
在第一次分析過程中,由于使用了規(guī)則(2),使得后面的分析無法繼續(xù),所以發(fā)生了回溯(backtracking),在第(2)步不再使用規(guī)則(2)而改為使用規(guī)則(3),從而使搜索得以成功。
根據(jù)這樣的搜索過程,我們可以把例(1)兩次分析的推導樹表示如圖1中的(a)(b)所示:
圖1 自頂向下分析法推導樹
自底向上分析法是指從輸入句子的句首開始順次取詞向前移進(shift)并根據(jù)文法的重寫逐級向上歸約(reduce),直到構(gòu)造出表示句子結(jié)構(gòu)的整個推導樹為止。它實際上是一種 “移進一歸約算法”(shift-reduce algorithm),它對句子中的單詞取詞是順次“移進”,而在利用文法中的重寫規(guī)則時是按條件“歸約”。
這種算法利用一個棧來存放分析過程中的有關已經(jīng)走過的過程的信息,并且根據(jù)這種信息和當前正在處理的符號串來決定究竟是移進還是歸約。所謂“移進”,就是把一個尚未處理過的符號移入棧頂,并等待更多的信息到來之后再做決定;所謂“歸約”。就是把棧頂部分的一些符號,由文法的某個重寫規(guī)則的左邊的符號來替代。這時,這個重寫規(guī)則的右邊部分必須與棧頂?shù)哪切┓栂嗥ヅ?。用這樣的辦法對棧中的符號以及輸入符號串進行移進和歸約兩種操作,直到輸入的符號串處理完畢并且棧中僅剩下初始符號S的時候,就認為輸入符號串被接受。如果在當前狀態(tài),既無法進行移進,也無法進行歸約,并且棧并非只有唯一的初始符號S,或者輸入符號串中還有符號未處理完畢,那么,輸入符號串就被拒絕。在分析過程中,有時既可以進行移進操作,又可以進行歸約操作,這種情況,稱之為“移進一歸約沖突”,簡稱“移歸沖突”;有時會有多個規(guī)則都能滿足歸約條件,這種情況稱之為“歸約一歸約沖突”,簡稱“歸歸沖突”。什么時候進行移進操作,什么時候進行歸約操作,怎樣定義歸約的條件,這些問題是移進—歸約算法的中心問題(馮志偉,2000)。
以例(1)以及上文中提出的文法為例,自底向上分析法的分析過程如下:
這時,文法中不再有合適的規(guī)則,分析無法繼續(xù)進行,于是返回到第(17)步,先不采用規(guī)則(4)規(guī)約,而是移進下一個單詞sank,然后采用規(guī)則(11)進行規(guī)約,分析如下:
這時,棧中最終只剩下初始符號S,因此該句被接受,分析成功,分析推導樹如圖2所示。
根據(jù)以上算法分析可以看出,常用的自頂向下分析法以及自底向上分析法在分析花園幽徑句是都需要回溯。回溯會影響分析算法的效率。為了避免回溯,提高自動分析算法的效率,馮志偉(2003b)指出,由美國計算機學者J.Earley提出的Earley算法可以有效的避免回溯,而該種算法,是用來分析花園幽徑句最優(yōu)最高效的算法。
圖2 自底向上分析法推導樹
依爾利算法的核心是線圖(chart)。在表示語言信息方面,線圖比樹形圖更為優(yōu)越。在線圖中,對于輸入句子中每一個詞,都可以用一個狀態(tài)表來表示分析進程對于這個詞所達到的位置。在句子分析結(jié)束時,線圖可以把所有可能的分析結(jié)果都精練地表示出來。線圖中的狀態(tài)包括三方面的信息:關于與語法中的某一規(guī)則相對應的子樹(sub-tree)的信息;關于在這個子樹的分析進程中已經(jīng)完成了的分析結(jié)果的信息;關于這個子樹當前所處位置與輸入句子中相應的位置的信息。這些信息采用點規(guī)則(dotted rule)來表示。所謂點規(guī)則,就是加了點的上下文無關文法的規(guī)則,它與一般的上下文無關文法規(guī)則的不同之處就在于規(guī)則中加了點,用這個點來表示這個上下文無關規(guī)則在分析進程中所處的狀態(tài)。除了在上下文無關文法的規(guī)則中加點之外,在點規(guī)則中,還用兩個數(shù)字來表示相應狀態(tài)開始的位置和這個點在當前所處的位置。線圖是一個非成圈的有向圖(Directed Acyclic Graph,簡稱 DAG)。 Earley 算法有三種不同的基本操作,包括 Predictor(預示),Scanner(掃描),Completer(完成)。文章篇幅有限,本文在此不對Earley算法及其線圖表示做詳細介紹,只對花園幽徑句的線圖做一介紹。
對于例(1),我們提出如下文法:
根據(jù)Earley算法對其進行分析,分析結(jié)構(gòu)可用線圖表示,如圖3所示。
在上述分析過程中,在(0,3)之間和(0,6)之間,曾經(jīng)兩次規(guī)約為句子S,但是,由于花園幽徑句的長度為7,兩次規(guī)約都以失敗告終,只有在(0,7)之間時,分析成功。在(0,6)這一段,弧上的規(guī)則有歧義,而當分析完(0,7)時,弧上的規(guī)則只有一個,即SNP VP.,整個句子的結(jié)構(gòu)并不存在歧義,而花園幽徑句正式這樣,屬于潛在歧義句,整個句子在讀到末尾時并無歧義,這種算法符合花園幽徑句的特點。如上我們可以看出,Earley算法的整個分析步驟清晰而緊湊,并未產(chǎn)生回溯,可以大大提高自然語言的分析效率,因此,馮志偉(2003b)建議采用Earley算法來分析花園幽徑句。
圖3 Earley算法分析結(jié)果的DAG表示
花園幽徑現(xiàn)象具有層級存在性、理解折返性、認識順序性和糾錯控制性(杜家利,于屏方2011),而這體現(xiàn)在機器處理當中,便是自動分析算法中的回溯現(xiàn)象。在自然語言中,有短暫歧義形成的花園幽徑句是一種很有研究價值的歧義現(xiàn)象,因為它涉及句法,語義和語用多個方面。計算機語言涉及到自然語言的形式化,在該種上下文無關語法當中,花園幽徑句的自動分析也很值得研究,因為很多算法對它的分析都涉及到回溯,無法進行高效的分析。但Earley算法作為一種無回溯的自動分析算法,是自動分析花園幽徑句的最優(yōu)算法。本文只討論了語言自動分析算法中常用的兩種算法,自頂向下分析法以及自底向上分析法對英語中花園幽徑句的解析,同時也用馮志偉(2003)指出的花園幽徑句的最優(yōu)算法——Earley算法對其進行了解析,但并未涉及漢語花園幽徑句的算法分析,還需進一步深入自動分析算法在漢語花園幽徑句中的運用。
Bever T.G.(1970).The Cognitive basis for linguistic structures[A].In J.R.Hayes,Cognition and Development of Language.New York:Wiley.
Pritchett,B.L.(1988).Garden Path Phenomena and the Grammatical Basis of Language Processing[J].Language(64).Linguistic Society of America.
杜家利,于屏方 (2011).花園幽徑現(xiàn)象認知解讀的程序化特性分析 [J].計算機工程與應用47(21)。
馮志偉 (2000).基于短語結(jié)構(gòu)語法的自動句法分析方法 [J].當代語言學 (2)。
馮志偉 (2003a).花園幽徑句的自動分析算法 [J].當代語言學 (4)。
馮志偉 (2003b).一種無回溯的自然語言分析算法 [J].語言文字應用 (1)。
蔣祖康 (2000).“花園路徑現(xiàn)象”研究綜述 [J].外語教學與研究 (4)。
劉國輝,石錫書 (2005).花園幽徑句的特殊思維激活圖式淺析[J].外語學刊 (5)。
曲濤,王準寧 (2006).淺談花園幽徑現(xiàn)象 [J].吉林教育學院學報 (8)。
袁毓林 (2001).計算語言學的理論方法和研究取向 [J].中國社會科學(4)。