斯坦福大學-自然語言處理入門 筆記 第十九課 單詞含義與相似性
阿新 • • 發佈:2018-11-06
一、單詞含義與單詞關係
- 回顧:詞目(lemma)與單詞形式(wordform)
- 詞目:表示相同的詞根、詞性以及大致的語義
- 單詞形式:表示在文件中出現的具體單詞形式
- 一個詞目可能會含有很多含義(sense)。含義(sense)表示單詞意思的一個方面的表現。比如說bank就有兩個含義。
- …a bank can hold the investments in a custodial account…
- “…as agriculture burgeons on the east bank the river will shrink even more”
- 同音異義詞(homonymy):有同一個形式但是有獨立不同的含義的單詞,形如bank,bat
- bank1: financial institution, bank2: sloping land
- bat1: club for hitting a ball, bat2: nocturnal flying mammal
- 同音異義詞分為兩種: 同形異義(Homographs )(bank/bank, bat/bat);同音異義(Homophones):Write/right或者Piece/peace
- 同音異義詞可能會引起NLP應用的很多問題:資訊檢索(“bat care”),機器翻譯(bat: murciélago (animal) or bate (for baseball)),文件發音(bass (stringed instrument) vs. bass (fish))
- 一詞多義(polysemy):多義詞會有相關聯的含義。一詞多義可以分為兩種:轉喻(metonymy)以及系統性的(systematic)。大部分的一詞多義都是系統性的,比如school,hospital等等都可以既指組織又指建築。
- 我們怎麼知道單詞有一種以上的含義?zeugma測試。
- 利用連詞把兩個句子連起來,然後看一下句子是否奇怪,如果奇怪的話就說明有兩種含義。
- 句子1:Which flights serve breakfast?
- 句子2:Does Lufthansa serve Philadelphia?
- 連起來:?Does Lufthansa serve breakfast and San Jose?
- 利用連詞把兩個句子連起來,然後看一下句子是否奇怪,如果奇怪的話就說明有兩種含義。
- 同義(synonyms):在某些語境下單詞有相同的含義
- couch / sofa big / large automobile / car Water / H20
- 如果他們能在所有語境中互相替代,我們就認為他們有相同的命題含義(propositional meaning)
- 但是基本有沒有完全同義的兩個單詞,即使在某些情況寫是完全一致的,但是在正式用語,俗語等等各種方面還是會有所不同的。因此,同義是一種針對含義(sense)的關係,而不是針對單詞的關係。比如下面的big和large的例子,前者是同義,後者則不是。
- 反義(Antonyms):在某一種含義上有相反的含義。可以是對立的兩個方面,或者是反向關係。比如:
- 下義(hyponymy)與上義(hypernymy):如果一種含義是另一種的子集的話,我們認為前者是後者的下義,後者是前者的上義。比如car是vehicle的下義,vehicle是car的上義。下義一般是具有傳遞性的,如果A是B的下義,B是C的下義,那麼A也是C的下義。我們也可以稱下義為IS-A等級(IS-A hierarchy)
二、Wordnet與其他線上分類詞典(thesauri)
- 分類詞典在很多的領域都有廣泛的應用:資訊抽取,資訊檢索,問答系統,生物和藥物資訊學,機器翻譯等等
1、WordNet
- 其中一個典型的線上分類詞典就是Wordnet,它是一個按照層次組織的詞彙資料庫,是一個線上的分類詞典,同時也包含一些除了英語以外的其他語言。
- 一個具體單詞的展示:下面的一個S就代表一個含義(sense)
- 對於同義關係的表達,我們會用對同一個同義註釋集的單詞的含義進行標註。比如chump1, fool2, gull1, mark9, patsy1, fall guy1, sucker1, soft touch1, mug2,這個九個單詞的對應序號的含義是同義的,就都對這些含義打上標註(gloss)“a person who is gullible and easy to take advantage of”。
- 上義關係的展示
- WordNet的名詞關係
- WordNet3.0 :http://wordnetweb.princeton.edu/perl/webwn
- Libraries
- Python: WordNet from NLTK http://www.nltk.org/Home
- Java:JWNL, extJWNL on sourceforge
- Libraries
- 一個具體單詞的展示:下面的一個S就代表一個含義(sense)
2、MeSH: Medical Subject Headings thesaurus from the National Library of Medicine
- 這個是專門針對醫學領域的分類詞典,包含177000款目詞(entry term)以及26142主題詞(heading)
- MeSH的層次展現
- MeSH的用途:提供同義詞(即款目詞);提供上義關係(層次);MEDLINE/PubMED資料庫的索引
三、單詞相似度:分類詞典法
1、單詞相似度
- 同義(synonymy):是一個二分類問題,兩個單詞要麼同義要麼不同義
- 相似度(similarity):是一個更寬鬆的度量,如果兩個單詞在意思更接近,就更相似
- 相似度是一個和含義(sense)相關的關係,而不是和單詞相關的關係,因此我們在衡量的時候是以某個單詞的某個含義來進行衡量的,比如Bank¹相似於fund³。但是我們會同時在單詞和含義的基礎上計算相似度。
- 計算相似度的應用領域:資訊檢索,問答系統,機器翻譯,自然語言生成,語言模型,自動論文打分,抄襲檢測,文件聚類
- 單詞相似度(similarity) 和單詞相關度(relatedness)是不一樣的:相似的單詞是度量單詞的同義程度;單詞可以以各種可能進行關聯,比如car和bicycle關聯,car和gasoline關聯。
- 計算單詞相似度有兩種方法:
- 基於分類詞典的方法:判斷單詞在上義等級中是否接近?單詞是否有相似的標註(gloss)
- 分佈演算法:判斷單詞是否有相似的上下文分佈
2、基於分類詞典的相似度計算方法
- 基於路徑的相似度
- 如果兩個含義(sense)在分類詞典的層次中越接近,就認為他們越相似。這種接近程度以路徑長度為度量
- 路徑長度:pathlen(c1,c2)=1+ c1和c2之間在上義關係圖中最短路徑的邊數
- 相似路徑:simpath(c1,c2)=1/pathlen(c1,c2)
- 單詞相似度:wordsim,對兩個單詞的含義組合配對計算相似度,然後取最大的那個
- 計算例子
- 基於這種方法存在的問題
- 這種方法假設每個層次關係都有一樣的距離,但是我們在上面的例子中可以看到nickel和money以定會比nickel和standard的更接近,因為在層次中比較高的節點含義會更抽象,但是基於路徑的相似度結果計算出來卻是一樣的。
- 所以我們想要中的度量需要滿足下面兩個條件:1,獨立代表每個邊的代價;2、只通過抽象節點連線的單詞相似程度更低
- 資訊內容(content)相似度量
- 定義P(c)表示在語料庫中隨便取的一個單詞是概念c的一個例項(instance)的概率。所以,這是一個在層次中所有概念都有的隨機變數。對於一個給定的概念,每個觀測到的名詞要麼是概念中的成員,概率是P(c),要麼不是成員,概率是1-P(c)
- 所有的單詞都是根節點(entity)的成員,所以P(root)=1
- 在層次中一個節點越低,它的概率就越低
- 我們可以通過在語料庫中計數來進行訓練:每個hill的例項都計入natural elevation, geological formation, entity等的頻率。計算公式如下,其中words©表示c及其所有的子節點
- 資訊內容:IC©=-log§
- 最富資訊類(subsumer)/最低公共類(subsumer),即LCS(c1,c2)也就是c1和c2的最低公共子節點
- Resnik相似度計算方法:兩個單詞之間的相似度和他們的公共資訊有關係;兩個單詞的公共資訊越多,他們就越相似。所以計算的相似度就是最低公共類的資訊內容,公式如下:
- dekang lin方法:這種方法認為相似度計算不僅和公共資訊成正比,而且和兩者之間的不同成反比。對應的計算公式和計算例子為:
- 拓展的Lesk演算法:這種演算法把分類詞典中的註釋(gloss)放入了相似度計算。如果兩個概念的註釋有相似的單詞那麼我們認為這兩個概念相似。對於在註釋中公共存在的n個單片語成的片語,我們計分為n²。把所有的公共片語,包括上義詞和下義詞的公共片語的得分都相加,就可以得到一個分數。下面是一個簡單的例子:
- 四種方法的公式總結
3、相似度評估
- 內在評估:演算法和人工相似度得分進行比較
- 外在(基於任務的,頭尾連線)評估:利用一些需要單詞相似度的任務來進行評估,比如拼寫錯誤糾察,WSD,論文評分,以及TOEFL多選詞彙題。
四、單詞相似度:基於分佈的模型
1、基於分類詞典的相似模型的問題
- 不是每一種語言我們都有一個分類詞典(thesaurus)
- 即使我們有該語言的分類詞典,但是應用分類詞典的演算法會有recall的問題
- 很多單詞都沒有收錄
- 大部分的片語也沒有收錄
- 有一些含義(sense)之間的關聯也沒有收錄
- 分類詞典在動詞和形容詞上做得不好,因為形容詞和動詞的結構化的上義關係很少
2、意思的分佈模型(distributional models of meaning)
- 我們也可以稱之為意思的向量空間模型(space-vector model of meaning)
- 這種模型會比前一種模型的recall更高,但是precision會有所下降
- 這種模型的基本想法是:如果兩個單詞的上下文相似的話,這兩個單詞很有可能就是相似的。舉例而言,看下面的四句話,我們很容易就看出加粗部分的單詞是一種酒。
3、項上下文矩陣(term-context matrix)
- 這種模型的第一步是構建項上下文矩陣。這個矩陣基本構建思想是和項文件矩陣一致的。項文件矩陣的每一行表示的是每一個單詞,每一列表示的是文件,每一格表示的是該行單詞在對應文件中的計數。而項上下文矩陣每一列表示的是下文中出現的單詞,每一格表示的是該行單詞的上下文中出現該列單詞的數量。
- 所謂的上下文,我們一般指段落,或者是10個單詞的視窗。
- 如果兩個單詞在他們對應的行向量上是相似的話,就意味著他們的含義相似。
4、PPMI(Positive Pointwise Mutual Information)
- 在項上下文矩陣中,我們不是直接使用純計數,而是使用PPMI(Positive Pointwise Mutual Information)來替代。PMI的計算公式如下,PPMI的區別就是當PMI為負的時候就直接喲個0替代。
- 一個計算的例子:W表示行,C表示列
- 除了這個以外,我們還可以在加入拉普拉斯平滑
- 一個計算的例子:W表示行,C表示列
5、基於句法的上下文
- 在構建項上下文矩陣的時候,上下文矩陣和每一列是單詞和對應的單詞依存關係,比如主語、介詞等等
6、基於PPMI的相似度計算
- 我們利用cosine來進行相似度估計,公式如下:其中v和w分別表示兩個相似單詞的對應在項上下文矩陣中的行向量
- 一個計算的例子
- 一個計算的例子
- 其他相似度的計算
7、相似度評估
- 與上一節基於分類詞典的相似度評估一致。