1985-WordNet#
案件摘要#
1985 年起,Princeton 大學的心理語言學家 George Miller 開始建構 WordNet——一部以「同義詞集合」(synset)而非「詞」為單位的機器可讀詞庫。1990 年以《Five Papers on WordNet》首次發表,到 1998 年 3.0 版已收錄 15 萬多詞彙、11 萬多同義詞集。本案的懸案是:紙本詞典對機器毫無用處,該如何讓電腦「懂得」詞與詞之間的關係?破案關鍵:把詞彙組織成語義關係網路,讓上位詞鏈、整體部分關係成為可計算的路徑。
前因 -- 為什麼會有這個案子#
- Miller 1956 年的經典研究指出人類短期記憶容量是 7±2 個組塊(chunk),心理語言學一直追問:詞彙知識在人心智中如何組織?
- 1960s-1980s 的機器可讀詞典嚴重缺乏:紙本詞典的排版格式是給人看的,無法直接供程式使用。
- Miller 主張應用「同義詞集合」組織詞彙:
car、automobile、auto指同一概念,應綁成一個節點而非三個獨立條目。 - 當時 NLP 的詞義消歧(word sense disambiguation)急需機器可用的語義資源。
- 早期的詞庫(thesaurus,如 Roget)只有主題分類,沒有明確的語義關係圖。
線索與推理 -- 數學式、程式、理論#
synset 的組織#
WordNet 的名詞從 25 個起始類別(beginner concepts)出發,如 animal、artifact、food、vehicle 等,向下展開層層的下位詞樹。每個 synset 是概念的節點:
\[ \text{synset} = \{w_1, w_2, \ldots, w_k\} \quad \text{代表一個概念節點} \]
語義關係#
WordNet 定義了多種可計算的語義關係:
- hypernym/hyponym:上位/下位關係(
car的上位是vehicle)。 - meronym/holonym:部分/整體關係(
輪子是汽車的 meronym)。 - antonym:反義關係(
hot與cold)。 - holonym:整體關係(
wheel的 holonym 是car)。
名詞關係主要是 hypernym 樹;動詞則以「事件框架」表示——每個動詞 synset 帶有論元結構(誰做、對誰、用什麼)。
名詞的繼承樹#
vehicle → car → sports car 的上位鏈形成繼承樹:下位節點繼承上位節點的屬性,如同框架理論的 default 繼承。語義相似度可用路徑距離估計:
\[ \text{sim}(c_1, c_2) = \frac{1}{1 + \text{dist}(c_1, c_2)} \]
其中 dist 是兩 synset 在上位樹上的最短路徑邊數。Resnik 1995 年改用資訊內容(information content)加權:
\[ \text{sim}_{\text{Resnik}}(c_1, c_2) = \max_{c \in S(c_1, c_2)} \left( -\log P(c) \right) \]
WordNet 與詞庫的差異#
| 特性 | Roget 詞庫 | WordNet |
|---|---|---|
| 單位 | 詞(主題分組) | synset(概念節點) |
| 關係 | 隱含、不精確 | 明確的語義關係邊 |
| 機器可計算 | 否 | 是(圖上可跑演算法) |
Python 實作 mini WordNet#
# mini WordNet: synset dict + hypernym 鏈查詢 + 路徑相似度
synsets = {
"vehicle.n.01": {"words": ["vehicle"], "hypernym": None},
"car.n.01": {"words": ["car", "auto", "automobile"], "hypernym": "vehicle.n.01"},
"sports_car.n.01": {"words": ["sports_car"], "hypernym": "car.n.01"},
"bus.n.01": {"words": ["bus"], "hypernym": "vehicle.n.01"},
"wheel.n.01": {"words": ["wheel"], "hypernym": None},
"animal.n.01": {"words": ["animal"], "hypernym": None},
"dog.n.01": {"words": ["dog"], "hypernym": "animal.n.01"},
}
meronyms = { # 整體 -> 部分
"car.n.01": ["wheel.n.01"],
}
def hypernym_chain(synset_id, chain=None):
chain = chain or []
entry = synsets.get(synset_id)
if entry is None:
return chain
chain.append(synset_id)
if entry["hypernym"]:
return hypernym_chain(entry["hypernym"], chain)
return chain
def path_distance(s1, s2):
"""在上位樹上的最短路徑邊數"""
c1, c2 = hypernym_chain(s1), hypernym_chain(s2)
if not c1 or not c2 or c1[-1] != c2[-1]:
return None # 不同樹,無路徑
common = set(c1) & set(c2)
lca_len = max(len(hypernym_chain(c)) for c in common) # 最近共同祖先深度
return (len(c1) - lca_len) + (len(c2) - lca_len)
def similarity(s1, s2):
d = path_distance(s1, s2)
return None if d is None else 1 / (1 + d)
def lookup(word):
return [sid for sid, e in synsets.items() if word in e["words"]]
print(lookup("car")) # 同義詞集合查詢
print(hypernym_chain("sports_car.n.01")) # 繼承樹:sports car -> car -> vehicle
print(path_distance("sports_car.n.01", "bus.n.01")) # 路徑距離
print(similarity("sports_car.n.01", "bus.n.01")) # 相似度 1/(1+d)
print(similarity("sports_car.n.01", "dog.n.01")) # None(不同樹)
結案 -- 後果與影響#
- WordNet 成為 NLP 的標準詞庫,支撐詞義消歧(WSD)與語義相似度研究數十年。
- 相似度度量形成一門小產業:path-based(Leacock-Chodorow 1998)與 information content(Resnik 1995、Lin 1998)。
- SentiWordNet 在 WordNet 的 synset 上標註情感極性,成為情感分析的基礎資源。
- SemEval 評測以 WordNet 為金標準之一,詞義標註競賽至今仍以它為參照。
- WordNet 是知識圖譜(knowledge graph)的先聲:以節點(概念)與邊(關係)組織知識,啟發日後的 DBpedia、Wikidata 與 BabelNet。
關鍵人物與文獻#
- George A. Miller (1990). Five Papers on WordNet. International Journal of Lexicography 3(4), 235-312(WordNet 特刊).
- George A. Miller, Richard Beckwith, Christiane Fellbaum, Derek Gross & Katherine Miller (1990). Introduction to WordNet: An On-line Lexical Database. International Journal of Lexicography 3(4), 235-244.
- George A. Miller (1956). The Magical Number Seven, Plus or Minus Two. Psychological Review 63(2), 81-97.
- Philip Resnik (1995). Using Information Content to Evaluate Semantic Similarity in a Taxonomy. IJCAI 1995, 448-450.
- Claudia Leacock & Martin Chodorow (1998). Combining Local Context and WordNet Similarity for Word Sense Identification. In Fellbaum (ed.), WordNet: An Electronic Lexical Database. MIT Press.
- Christiane Fellbaum (ed.) (1998). WordNet: An Electronic Lexical Database. MIT Press.
- Eneko Agirre & Oier Lopez de Lacalle (2009). Supervised Domain Adaptation for WSD. SemEval 2009.