《自然语言处理简明教程》读书笔记:第二章 词汇自动处理
目錄
第二章 詞匯自動處理
第一節 詞匯是語言的建筑材料
第二節 正則表達式
雙斜線“//”
雙引號“[ ]”
連字符“-”
脫字符“^”
問號“?”
“Kleene”
“Kleene +”
通配符“.”
錨號“^”和“$”
詞界號“\b”和“\B”
析取符“|”
第三節 最小編輯距離算法
第四節 詞匯語義學
1.同形關系
2.同義關系
3.上下位關系
4.整體—部分關系
5.集合—元素關系
第五節 英語中的詞匯歧義現象
1.名詞中的歧義
2.代詞中的歧義
3.動詞中的歧義
4.形容詞中的歧義
5.連接詞中的歧義
6.介詞中的歧義
第六節 幾種重要的詞義排歧方法
1.選擇最常見涵義的方法
2.基于規則的詞義排歧的方法
3.自立的詞義排歧方法
4.基于機器學習的詞義排歧方法
5.基于詞典的詞義排歧方法
第二章 詞匯自動處理
第一節 詞匯是語言的建筑材料
近些年來,語料庫證據支持的詞匯學研究蓬勃發展,越來越多的實證研究表明,詞匯和語法在實現意義時是交織一起的,必須整合描述。詞匯是話語實現的主要載體,語法則起到管理意義、組合成份和構筑詞項的作用。
根據還原主義者的觀點,近百年來自然科學發展的歷史可以看成是探索如何使用較小“基原”的行為結合起來解釋較大“結構”的行為的歷史。在生物學中,遺傳的性質用基因的行為來解釋,而基因的性質用脫氧核糖核酸(DNA)的行為來解釋。在物理學中,物質被還原為原子,而原子又被還原為比原子更小的粒子。
在語言學中,也逃不出這種還原主義思想的影響。語言學家可以使用語法范疇構成諸如這樣的語法規則,把S看成是由NP和VP組成的,或者把S還原為NP和VP,再把NP和VP還原成具體的單詞。
所有這些都可以把客觀事物想象成是由某些特征關聯而成的復雜特征的集合。在這些特征中的信息用約束來表示,所以這一類的模型通常叫作“基于約束的形式化方法”。
從詞匯語義組成的角度,弗雷格提出了“組成性原則”。弗雷格指出,句子的意義是由組成它的各個成分的意義組合而成的,組成成分的意義決定了整個句子的意義,組成成分的意義是句子的意義的函數。
不論從還原主義的角度看,還是從組成性原則的角度看,詞匯都是組成句子的基本成分,詞匯是語言的建筑材料,是話語實現的主要載體,而語法的作用則是把詞匯加以組合,構筑更大的組合成分。
單詞本身的語義信息是很重要的,根據“還原主義”,句子的句法成分可以還原成單詞;根據“組成性原則”,句子的語義是由構成該句子的單詞的語義以及這些單詞之間的語義關系組成的。因此,詞匯的分析和描述對于自然語言處理是至關重要的,我們應該重視詞匯的研究,善于從詞匯中發現語言現象后面隱藏著的內在規律。
第二節 正則表達式
正則表達式是一種用于描述文本搜索符號串的語言。用來搜索諸如grep和Emac這樣的UNIX工具。在Perl,Python,Ruby和Java等程序語言總,以及在Microsoft Word中,文本的正則表達式幾乎是完全一樣的,在不同的Web搜索引擎中,存在著具有不同特征的正則表達式。除了這些實際的用處之外,正則表達式還是計算機科學和語言學的一種最重要的理論工具。
正則表達式是1956年首先由克林提出來的。一個正則表達式是專用語言中用于描述符號串的簡單類別的一個公式。符號串是符號的序列;對于大多數的基于文本的檢索技術來說,符號串就是字母數字字符(字母、數字、空白、表、標點符號)的任意序列。在基于文本的檢索技術中心,一個空白相當于一個字符,它與其他字符是同樣看待的,我們用符號來表示空白。
從形式上說,正則表達式是用來刻畫符號串集合的一個代數表述。因此,它可以用于描述符號串的搜索,也可以用于以形式的方法定義一種語言。
正則表達式的搜索要求有一個我們試圖搜索的模式和一個被搜索的文本語料庫。正則表達式的搜索函數將對整個的語料庫進行搜索,并返回包含該模式的所有文本。在諸如搜索引擎這樣的信息檢索系統中,文本就是整個的文檔或Web的網頁。在一個詞處理系統中,文本可以是獨立的單詞,或者是文檔行。因此,如果給出一個搜索模式,那么,搜索引擎返回的就是文檔行。對于一個正則表達式來說,搜索可以返回所有的匹配,也可以只返回第一個匹配。
雙斜線“//”
最簡單的正則表達式是由簡單字符構成的一個序列。例如,要搜索Buttercup我們就鍵入/Buttercup/這個正則表達式進行搜索。這樣,正則表達式/Buttercup/就與語料庫中包含子字符串Buttercup的任何字符串相匹配。
雙引號“[ ]”
正則表達式是區分大小寫的;小寫/s/區別于大寫/S/;/s/與小寫字母s匹配,/S/與大寫字母/S/匹配。我們使用方括號“[”和“]”來解決這個問題。
?連字符“-”
用連字符“-”來表示在某一范圍內的任何字符。
脫字符“^”
如果開方括號之后有脫字符“^”,那么,相應的模式就是否定的。
問號“?”
我們使用問號“?”來表示前面一個字符或者“無”。
“Kleene”
有時我們需要正則表達式能夠表示重復的事物。有一種基于星號或“*”的算符可以容許我們表達“若干個a”,這種算符叫作“Kleene”。Kleene星號的意思是“其直接前面的字符或正則表達式為零或連續出現若干次”。
/a*/表示“由零或若干個a構成的符號串”,它可以與a或aaaaaa相匹配,并且它也可以與Off Minor相匹配,因為Off Minor只包含零個a。
所以,與包含一個或多個a的符號串相匹配的a的符號串相匹配的正則表達式是/aa*/,它表示一個a后面跟著零個或多個a。
更復雜的模式也可以重復。
所以,/[ab]*/表示“零個或多個a或b”(不是表示“零個或多個右方括號”)。這個正則表達式可以與aaaa或ababab或bbbb符號串相匹配。
“Kleene +”
有時,把數字的正則表達式寫兩次會令人感到膩味,因此,提出了一種表示數字“最少有一個”的加單方法。這種方法就是“Kleene +”,Kleene加號的含義是“前面一個或多個字符”。因此,正則表達式/[0 - 9] + /是“數字序列”的規范表達式。羊叫聲的語言有兩種表示方法:/baaa*!/和/baa + !/。
通配符“.”
這個通配符表示任何與單個字符(回車符除外)相匹配的字符。
通配符經常與Kleene星號結合起來使用,其意思是“任何的字符串”。例如,如果我們想找到文本中的某一行,其中aardvark這個詞出現兩次。我們可以用正則表達式表示為:/aardvark.*aardvard/。
錨號“^”和“$”
錨號是一種把正則表達式錨在符號串中某一個特定位置的特殊字符。最普通的錨號是脫字符“^”和美元字符“$”。脫字符與行的開始相匹配。正則表達式/^The/表示單詞The只出現在一行的開始。
這樣一來,脫字符“^”可有三種用法:表示一行的開始;在方括號內表示否定;只表示脫字符本身。
美元符號$表示一行的結尾。所以模式“_$”是一個有用的模式,它表示一行的結尾是一個空白。這則表達式/^The dog\.$/表示僅包含短語The dog的一個行。(這里必須使用反斜杠“\”,因為我們想讓“.”表示點號,而不表示通配符)。
詞界號“\b”和“\B”
此外還有兩個其他的錨號:\b表示詞界,而\B表示非詞界。表示單詞the,而不是表示單詞other。從技術上說,Perl語言把詞定義為數字、下劃線或字母的任何序列。例如,表示在“There are 99 bottles of beer on the wall”中的符號串99。因為99跟在一個空白的后面。但是這個正則表達式不表示在“There are 299 bottles of beer on the wall”的符號串99,因為99跟在一個數字的后面。然而,這個正則表達式表示$99中的99(因為99跟在美元符號$的后面,$不是數字、下劃線或字母)。
析取符“|”
正則表達式/cat | dog/表示或者是符號串cat,或者是符號串dog。
為了使析取算符只能應用于特定的模式,我們需要使用圓括號算符“(”和“)”,把一個模式括在圓括號中,使得它就像一個單獨的字符來使用,而且在其中可以使用析取符“|”和Kleene*等算符。因此,表達式/gupp(y|ies)/表示析取符僅僅應用于后綴y和ies。
與算符“|”不同,Kleene*算符只能用來表示單個的字符,不能用來表示整個的序列。如果我們想匹配某一符號串的重復出現,我們有一行符號包含標記Column1 1 Column2 Column3。表達式/Column_[0 - 9] + _*/不能與任何的列相匹配,但是可以與一個后面有任意數目的空白的列相匹配。星號“*”在這里僅僅用于表示它前面的空白符號“_”,而不表示整個的序列。我們可以用圓括號寫出正則表達式/(Column_[0 - 9] + _*/,這個表達式與單詞Column后面跟著一個數字和任意數目的空白組成的符號串相匹配,整個模式可以重復任意次數。
可見,一個算符可能優先與其他的算符,因此,我們有必要使用括號來表示這種優先關系,在正則表達式中,這種優先關系是通過算符優先層級來形式地描述的。正則表達式算符優先性按從高到低的順序排列:
?由于計數符比序列具有更高的優先性,所以/the*/與theeeee相匹配,而不與thethe相匹配。由于序列比析取符具有更高的優先性,所以/the|any/與the或者any相匹配,而不與theny相匹配。
例子略。
我們剛才所分析的例子的錯誤可以歸納為兩種類型:一類是正面錯誤,例如,我們搜索the的時候,錯誤地匹配other或there這樣的符號串,一類是負面錯誤,例如,我們搜索the的時候,錯誤地遺漏The這樣的符號串。在研制自然語言處理系統的時候,這兩種類型的錯誤總是一而再、再而三地反復出現。為了減少應用系統的錯誤率,我們要做兩方面的努力,而這兩方面的努力是彼此對立的:
增加準確率:把正面錯誤減少到最低限度。
增加覆蓋率:把負面錯誤減少到最低錯誤。
還有一些有用的正則表達式高級算符。下圖列出了一些有用的通用字符的替換名,使用這些替換名,可以節省打字的工作量。除了Kleene*和Kleene + 之外,我們還可以使用花括號括起來的數字作為計數符。
?數字的范圍也可以用類似的辦法來表示。
最后,還可以用基于右斜杠(\)的記法來引用某些特殊字符。
?正則表達式的一個重要用途是替換。
數字字符也可以使用其他的數字。如果我們要匹配圓括號中的不同的符號串,那么,我們可以用數字2來表示圓括號中另一個符號串。這樣的數字存儲器叫作寄存器。這樣的存儲特性不是每一種正則表達式語言都具備的,但這常常是正則表達式的“擴充”特性。
ELIZA進行一連串的正則表達式的替換,每個正則表達式與輸入行中的某個部分相匹配,然后替換并改變它們。由于在ELIZA系統中大量使用正則表達式,使得這個系統看起來似乎能夠理解自然語言,實際上,它的原理并不復雜。由此可以看出,在自然語言處理中,正則表達式確實是一種簡單而有用的工具。
第三節 最小編輯距離算法
在詞匯自動處理中,判斷兩個單詞中的哪一個在拼寫上更接近于第三個單詞,是字符串距離這個一般問題的一種特殊情況。兩個符號串之間的距離用這兩個符號串彼此相似的程度來度量。
兩個符號串之間的最小編輯距離就是指把一個符號串轉換為另一個符號串時,所需要的最小編輯操作的次數。
給定兩個序列,這兩個序列的子符號串之間的對應情況就是對齊。在對齊的符號串下邊的標記說明從上面的符號串轉換為下面的符號串要做的操作,符號的一個序列就表示一個操作表。其中,d表示刪除,s表示替代,i表示插入。
我們也可以給每一個操作一個代價值或權值。兩個序列之間的列文斯坦距離是最簡單的加權因子。
最小編輯距離使用動態規劃來計算。動態規劃把各個子問題的求解結合起來,從而求解整個問題。這一類算法包括了自然語言處理中的大多數通用算法。
從直覺上來說,動態規劃問題就是首先把一個大的問題化解為不同的子問題,再把這些子問題的解適當地結合起來,從而實現對大的問題的求解。
用于序列比較的動態規劃算法工作時,要建立一個距離矩陣,目標矩陣的每一個符號記錄在矩陣的行上,源序列的每一個符號記錄在矩陣的列上,也就是說,目標序列的字母沿著底線排列,源序列的字母沿著側線排列。對于最小編輯距離來說,這個矩陣就是編輯距離矩陣。每一個編輯距離單元[i,j]表示目標序列頭i個字符和源序列的頭j個字符之間的距離。每個單元可以作為周圍單元的簡單函數來計算。
計算每個單元中的值的時候,我們取到達該單元時插入、替代、刪除三個可能的路徑中的最小路徑為其值,計算公式如下:
?最小編輯距離對于發現諸如潛在的拼寫錯誤更正算法等工作是很有用的。只要做一些輕微的改動,最小編輯距離算法就可以用來做兩個符號串之間的最小代價對其。在語音識別中,可以使用最小編輯距離對齊來計算單詞的錯誤率。在機器翻譯中,對齊也起著很大的作用,因為雙語并行語料庫中的句子需要彼此匹配。
為了擴充最小編輯距離算法使得它能夠進行對齊,我們可以把對齊看成是通過編輯距離矩陣的一條路徑。
第四節 詞匯語義學
單詞本身的語義信息是很重要的,根據“組成性原則”,句子的語義是由構成該句子的單詞的語義以及這些單詞之間的語義關系組成的。因此,我們在自然語言處理中,應該重視詞匯語義的研究。
語言中的詞匯具有高度系統化的結構,正是這種結構決定了單詞的意義和用法。這種結構包括單詞和它的意義之間的關系以及個別單詞的內部結構。對這種系統化的、與意義相關的結構的詞匯研究叫作“詞匯語義學”。
我們使用“詞位”這個術語來替代“詞”這個術語,詞位表示詞典中一個單獨的條目,是一個特定的正字法形式和音素形式與一些符號的意義表示形式的組合。詞典是有限個詞位的列表,從詞匯語義學的觀點來看,詞典還是無限的意義的生成機制。一個詞位的意義部分叫作“涵義”。
詞位和它的涵義之間存在著復雜的關系。這些關系可以用同形關系、同義關系、上下位關系、整體—部分關系、集合—元素關系來描述。
?1.同形關系
形式相同而意義上沒有聯系的詞位之間的關系叫作同形關系。具有同形關系的詞位叫作同形詞。
同形詞可以分為兩種:
同音異義詞:發音相同但是拼寫法不同的詞位。
同形異義詞:正詞法形式相同但是發音不同的詞位。
在自然語言處理中,我們應該重視同形關系的研究。在拼寫校正時,同音異義詞可能會導致單詞的拼寫錯誤;在語音識別時,同音異義詞會引起識別的困難;在文本—語音轉換系統中,同形異義詞由于發音不同,會引起轉換的錯誤。
一個單獨的詞位具有若干個彼此關聯的涵義的現象,叫作多義關系現象,具有多義關系的詞位叫作多義詞,這意味著,在一個多義詞中的各個涵義是彼此相關的,而同形詞的各個涵義是不相關的。
在語言學中,區分同形詞和多義詞是很重要的。不過,在自然語言處理中,由于同形詞和多義詞實際上都是一個詞具有一個以上的涵義的現象,它們都屬于詞義的歧義問題,我們一般沒有必要區分同形詞和多義詞,我們把它們都作為詞義排歧的問題來處理。
2.同義關系
在傳統語言學中,如果兩個詞位具有相同的意義,那么,就說它們之間具有同義關系。
在機器翻譯研究中,我們可以根據可替換性來定義同義關系:在一個句子中,如果兩個詞位可以互相替換而不改變句子的意思或者不改變句子的可接受性,那么,我們就說這兩個詞位具有同義關系。
不過,如果我們堅持這種可替換性一定要在一切的環境中都具有,那么,英語中的同義詞的數量就很少了。因此,我們對于可替換性的要求不能太過于嚴格,只要求在某些環境下可替換就可以了,也就是說,我們寧愿給同義關系一個比較弱的定義,這樣做比較現實。
可替換性與下面4個因素有聯系:
1.多義關系中的某些含義的有無
2.微妙的意義色彩的差別
3.搭配約束的不同
下面a欄和b欄的搭配是不一樣的:
4.使用域的不同
使用域是指語言使用中的禮貌因素、社會地位因素以及其他社會因素對于詞語使用的影響。使用域的差別也會影響到同義詞的選擇。
使用域是語言使用中由于語言環境的改變而引起的語言變異。語言環境的場景、交際者、方式三個組成部分,都可以產生新的使用域。
由于場景的不同,可產生科技英語、非科技英語等使用域。這些使用域之間的差異,主要表現在詞匯、及物性關系和語言各結構等級上的邏輯關系不同。
由于交際者的不同,可產生正式英語、非正式英語以及介于這兩者之間的、具有不同程度的正式或非正式英語等使用域,還可以產生廣告英語、幽默英語、應酬英語等使用域。這些使用域之間的差異,主要表現在語氣、情態以及單詞中所表達的說話者的態度的不同。
由于方式的不同,可產生口頭英語和書面英語等使用域。這些使用域之間的差異,主要表現在句題結構(主題、述題)、信息結構(新信息、舊信息)和連貫情況(如參照、替代、省略、連接等)的不同。
在機器翻譯中,同義詞的意義色彩差別、搭配約束和使用域對于譯文的質量有明顯的影響,我們應該考慮到這些因素,正確地選擇恰當的同義詞。
3.上下位關系
如果兩個詞位中,一個詞位是另一個詞位的此類,那么就說它們之間存在上下位關系。上下位關系是不對稱的,我們把特定性較強的詞位稱為概括性較強的詞位的下位詞,把概括性較強的詞位稱為特定性較強的詞位的上位詞。
上下位關系構成龐大的等級體系。越在下面的詞就越專指,也即外延就越小。
?4.整體—部分關系
如果兩個詞位中,一個詞位是另一個詞位的部分,那么,它們之間就存在整體—部分關系。
整體—部分關系不僅僅存在于物體和空間中,也可以存在于時間、過程中。有時它們也與上下位一樣構成較深的等級?!罢w—部分關系”是一種特殊的“上下位關系”,它們之間的區別在于,在“整體部分關系”中,“部分詞”往往不繼承“整體詞”的屬性,而在“上下文關系”中,“下位詞”往往繼承了“上位詞”的某些屬性。
5.集合—元素關系
如果兩個詞位中,一個詞位是另一個詞位所包含的元素,那么,它們之間就存在集合—元素關系。有的“集合—元素關系”與“整體—部分關系”比較接近,但是,“集合—元素關系”一般不如“整體—部分關系”緊密?!凹稀仃P系”也可以看成是“上下位關系”的一種特殊情況。
第五節 英語中的詞匯歧義現象
一詞多義是自然語言中存在的普遍現象,在機器翻譯中,如果詞義翻譯錯誤,譯文不能正確地表示原文的意思,也就沒有任何價值了,所以,詞義排歧是任何機器翻譯系統必須解決的大問題。此外,詞義排歧還直接關系到信息檢索、文本分類、語音識別的效率。
英語中的名詞、代詞、動詞、形容詞、連接詞、介詞都存在歧義。
1.名詞中的歧義
多義詞:具有多個涵義的詞位叫作多義詞,多義詞中的各個涵義是有聯系的。
例子略。
同形異義詞:詞形相同而意思不同的詞叫同形異義詞,同形異義詞中的各個涵義之間沒有聯系。
例子略。
從計算機處理語言的角度來看,多義詞和同形異義詞在實質上沒有區別,因此,在機器翻譯中,我們沒有必要區分它們,把它們一律作為詞匯歧義來處理。
名詞的單數形式和復數形式相同而造成的歧義。
例子略。
2.代詞中的歧義
例子略。
3.動詞中的歧義
例子略。
4.形容詞中的歧義
例子略。
5.連接詞中的歧義
例子略。
6.介詞中的歧義
例子略。
由以上的分析可以看出,英語中的詞匯歧義現象分布很廣,涉及到各主要的詞類,而且,不同的歧義都有很強的特異性,很不容易發現一般性的規律。
當然,對于人來說,要判定詞匯歧義并不困難,人們可以根據語言環境或上下文,在多義詞的多個涵義中選擇最恰當的涵義。但是,對于計算機來說,要從多個涵義中進行正確的選擇,確實非常困難的事情。
第六節 幾種重要的詞義排歧方法
由于多義詞是任何語言中都普遍存在的現象,而多義詞中諸多的詞義分布很不容易找到一般的規律,多義詞的自動排歧涉及到上下文因素、語義因素、語境因素,還涉及到甚至日常生活中的常識。而這些因素的處理,恰恰是計算機最感棘手的問題。所以,詞義排歧是自然語言計算機處理研究中的一個特別困難的問題。
下面,我們介紹幾種重要的詞義排歧的方法:
1.選擇最常見涵義的方法
詞義排歧的最簡單的統計技術是找出有歧義的單詞在語料庫中具有最高頻度的涵義,并把這個涵義選擇為缺省值,也就是把最常見的涵義選擇為有歧義單詞的當前涵義。這樣的方法叫作“選擇最常見涵義的方法”。這種方法需要首先對語料庫進行語義標注,然后從這個具有語義標注的語料庫中,選擇有關單詞的最常見的涵義作為排歧結果。
在標注了語義的大規模語料庫中,我們可以統計出多義詞最常見涵義,并把這個最常見的涵義作為該多義詞的“缺省值”。
2.基于規則的詞義排歧的方法
基于規則的詞義排歧的方法主要有:利用詞類進行詞義排歧的方法、利用選擇限制進行詞義排歧的方法、利用優選關系進行詞義排歧的方法。
利用詞類進行詞義排歧的方法
有些多義詞的詞義與它們所屬的詞類有關,不同的詞義往往屬于不同的詞類。因此,如果我們能夠確定這些多義詞的詞類,詞義排歧的問題也就迎刃而解了。
例子略。
如果我們設計一個高效率的詞性標注系統,可以正確地決定兼類的多義詞的詞類,那么,我們就可以利用標注正確的詞類,來決定多義詞的詞義,從而達到詞義排歧的目的。
可是,當同一個詞類的多義詞還存在多個不同的詞義的時候,這種“以詞類決定詞義”的方法就顯得無能為力了,因為在判定了詞類之后,還需要對不同的詞義進行選擇。
這時,我們還需要根據上下文的選擇限制來排歧。
利用選擇限制進行詞義排歧的方法
選擇限制和語義類型的分類是詞義排歧的主要的知識源。在語義分析中,它們被用來刪除不恰當的語義從而減少歧義的數量。
使用選擇限制實際上是一種“觀其伴而知其意”(You shall know a word by the company it keeps)方法。
使用選擇限制時,我們一般要確定多義詞的上位概念,然后根據上位概念與句子的中心謂詞的搭配關系來選擇這個多義詞的恰當涵義。
使用語義框架圖中的信息,可以幫助我們判定在多義詞的兩個或多個涵義中,哪一個涵義是最符合句子在語義上的要去,從而達到詞義排歧的目的。句子中多義詞優選的涵義是與該多義詞相結合的單詞含義在語義距離上最接近的距離。
我們要在語義框架圖中表示謂詞的每一個邊上給一個權值,然后使用標準的最短路徑算法來計算語義距離,取與相應問題有關的結點之間的最小權值的語義距離作為優選的結果。
基于選擇限制的詞義排歧要求在語義分析中使用兩方面的知識:
論元的語義類型分類;
論元對于謂詞的選擇限制。
這兩方面的知識都可以從詞網中獲取。語義類型分類的信息可以從有關詞的上下位關系獲得,選擇限制的信息通過把有關詞的SYNSET與謂詞的論元相聯系的方法獲得。如果我們從詞網上獲得了這兩方面的知識,我們就可以利用選擇限制來進行詞義排歧。
選擇限制是有局限性的,主要表現在:
當選擇限制的一般性太強的時候,很難決定有關詞的選擇限制的范圍;
當在否定句子中的時候,否定關系明顯地違反了選擇限制,但是,句子的語義卻是合法的;
當句子描述的事件是不尋常的事件時,盡管違反了選擇限制,句子仍然是完全合法的;
?當句子中出現比喻或借喻的時候,這樣的比喻或借喻是對選擇限制的極大挑戰。
利用優選關系進行詞義排歧的方法
?威爾克斯認為,在詞義排歧的過程中,涵義的取舍不要看成是完全的接受或完全的拒絕,而應該看成是在各種可能的涵義中進行優選。當單詞彼此結合的時候,優選程度最高的那些涵義被確定為可接受的涵義,而優選程度低的涵義則被拒絕。
威爾克斯把詞義排歧的過程看成是一個語義的優選過程,顯然更加符合實際情況。當句子中出現比喻或借喻的時候,如果使用語義優選的方法,可能取得比較理想的詞義排歧結果。
雷斯尼克提出“選擇關聯度”的概念。選擇關聯度是在謂詞與該謂詞所支配論元的類別之間的關聯強度的一種概率測度。雷斯尼克把詞網WordNet中上下位關系與標注語料庫中的謂詞—論元關系結合起來,從而推算選擇關聯的強度,算法選擇在謂詞與其論元的上位詞之間具有最高選擇關聯度的論元作為該論元的正確含義。
雷斯尼克這種選擇關聯度方法的缺陷是,它只能用于謂詞沒有歧義而僅僅論元有歧義的場合。
雷斯尼克的這種選擇關聯度方法,需要有一個高效的句法剖析器來自動獲取句法關系的知識,句法剖析的錯誤往往會導致詞義排歧的錯誤,而目前句法剖析器的效果還不理想,因而也就使得這種方法的效率不高。
此外,我們還可以使用語義層級關系,放松對于語義選擇的限制來解決比喻和借喻的問題。
3.自立的詞義排歧方法
前面的方法都要制定“規則”,是所謂“規則對規則”的方法,另外,還有自立的方法。自立的方法不需要制定規則,是一種魯棒的詞義排歧方法。
這種魯棒的自立的詞義排歧方法主要依靠詞類標注來工作,力求把對于信息的要求減低到最低限度,從做到“自立”,也就是讓機器自己學習而獲得信息。
這種機器學習的方法,要求對系統進行訓練,使得系統能夠自行進行詞義排歧,而不必依靠事先設定的規則。
要進行詞義排歧的詞叫作目標詞,目標詞所嵌入的文本,叫作上下文。輸入按下面方式進行初始化的處理:
輸入文本一般應該是經過詞類標注的;
上下文可以看成是圍繞目標詞的長短不一的語言片段;
上下文中的單詞,應該是經過詞法分析的,應該把變形詞還原成原形詞;
文本最好經過局部句法分析或者依存關系分析,能夠反映出題元角色關系或者其他語法關系。
經過這樣的初始化處理,輸入文本要進一步提煉為包含相關信息的特征的集合。主要步驟是:
選擇相關的語言學特征;
根據學習算法的要求對這些特征進行形式化描述(或者編碼)。大多數的學習系統使用簡單的特征向量,這些特征向量采用數字或者詞類標記來編碼。
用來訓練詞義排歧系統的語言學特征可以粗略地分為兩類:
搭配特征;
共現特征。
搭配特征對目標詞左右的上下文進行編碼,要去指出特定的、能反應這些單詞的語法性質的位置特征。典型的特征是單詞、詞根形式、詞類等。這樣的特征往往能把目標詞特定的含義孤立起來以便處理。
共現特征不考慮相鄰單詞的精確的位置信息,單詞本身就可以作為特征。特征的值就是單詞在圍繞目標詞的環境中出現的次數。目標詞的環境一般定義為以目標詞位中心的一個固定窗口,要計算出在這個窗口中實詞的出現頻度,根據共現詞的出現頻度,判定目標詞的含義。
在魯棒的詞義排歧系統中,一般都把共現特征與搭配特征結合起來使用,根據反映共現特征的共現詞在反映搭配特征的窗口中出現的頻度來排歧。
4.基于機器學習的詞義排歧方法
有指導的學習方法(即監督學習)
這種方法依據詞義標注的數據來訓練分類器,并獲得相關參數,進而對測試語料中的詞語進行排歧。目前在有指導的學習方法排歧中,主要的方法有樸素貝葉斯分類法和決策表分類法兩種。
使用樸素貝葉斯分類法時,不是去尋找某個特定的特征,而是在綜合考慮多個特征的基礎上進行詞義排歧。這種方法實際上是在給定的上下文環境下,計算一個多義詞的各個義項中概率最大的義項。
決策表分類法根據共現詞的等價類的不同制定決策表,然后利用這個決策表輸入向量,確定最佳的詞義。決策表中項目的排列可以根據訓練語料的特征來決定。
半指導的學習方法(即半監督學習)
有指導的學習方法的問題是需要訓練大量的標注語料。半指導的學習方法不需要訓練大量的語料,而只需要依靠數量相對少的實例,每一個詞目的每一個義項都依靠少量的標記好的實例來判別。
以這些實例作為種子,采用有指導的學習方法來訓練語料從而得到初始的分類。然后,利用這些初始的分類,從未訓練的語料中抽取出大量的訓練語料,反復進行這個過程一直到得到較滿意的精確度和覆蓋率為止。
這個方法的關鍵是從較小的種子集合出發,創造出大量的訓練語料,然后再利用這些得出的大量的訓練語料來創造出新的、更加精確的分類。每重復一次這樣的過程,所得到的訓練語料越來越大。而未標注的語料越來越少。所以這是一種半指導的學習方法。
無指導的學習方法(即無監督學習)
無指導的學習方法避免使用通過訓練得出義項標注的語料,只使用無標記的語料作為輸入,這些語料根據它們的相似度進行類聚。這樣的類聚可以作為成分的特征向量的代表。根據相似度得出的類聚再經過人工的詞義標注后,就可以用來給沒有特征編碼的實例進行分類,這是一種向量聚類的方法。
經常采用的方法是凝聚法。N個訓練實例中的每一個實例都被指派給一個類聚,然后用自底向上的方式陸續地把兩個最相似的類聚結合成一個新的類聚,直到達到預期的指標為止。
由于無指導的學習方法不使用人工標注的數據,它存在如下的不足:
在訓練語料中,無法知道什么是正確的義項;
所得到的類聚往往與訓練實例的義項在性質上差別很大,各不相謀;
類聚的數量幾乎總是與需要消解歧義的目標詞的義項的數量不一致。
5.基于詞典的詞義排歧方法
機器可讀詞典中詞典條目的定義實際上就是一種既存的知識源,當判斷兩個單詞A和B之間的親和程度時,可以比較這兩個單詞A和B在機器可讀詞典的定義中同時出現的詞語的情況,如果在A和B兩個單詞的定義中都出現共同的詞語,便可推斷它們之間的親和程度較大,從而據此來進行優選。
例子略。
這種方法的主要困難是詞典中的定義往往太短,不足以為詞義排歧提供足夠的上下文材料。
40多年來,自然語言處理各個領域的研究在詞義排歧方面雖然取得了很大的成績,但是,學者們的各種方法似乎都很難判定“the box was in the pen”中pen的詞義應該是“游戲的圍欄”。可見,詞義排歧確實是非常困難的問題。要真正解決詞義排歧問題,還需要我們做出不懈的努力。
過去的成果使我們看到了解決這個問題的一線曙光,盡管這一線曙光還很微弱,但它畢竟是黎明前的曙光,還是很鼓舞人心的,因為它預示了自然語言處理事業光輝的未來。
總結
以上是生活随笔為你收集整理的《自然语言处理简明教程》读书笔记:第二章 词汇自动处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WordPress获取当前分类ID的四种
- 下一篇: vbs获取程序窗体句柄_PyQt5 GU