語義網絡

**語義網絡**（；）係知識庫嘅一種做法，用一幅有向圖或者無向圖表示一拃概念之間嘅關係。一個基本嘅語義網絡會有若干個
#節點，每個節點代表一個概念，
#節點之間會有一啲**連繫**，兩個概念之間嘅連繫表達佢哋之間嘅關係。
舉例說明，想像附圖入面嗰個語義網絡，圖入面有哺乳類動物、貓同埋毛皮等嘅節點，每個節點都代表咗個概念，幅圖仲有一條條嘅連繫（啲箭咀）喺節點之間，每條連繫表示咗一段關係－由貓指去哺乳類條箭咀表示「貓**係一種**哺乳類」，而由貓指去毛皮條箭咀表示「貓**有**毛皮」... 等等；成個網絡「表示」緊有關「呢拃概念之間係咩關係」嘅知識。進階嘅語義網絡模型會有更加複雜嘅結構。

語義網絡源自 1950 年代，喺打後幾十年內就廣泛噉俾認知科學採用：認知心理學發覺將人腦想像成語義網絡嘅話，能夠解釋到唔少有關「人腦點處理文字資訊」相關嘅現象，例如促發效應噉；而喺人工智能上，語義網絡仲可以攞嚟教電腦處理日常語言。
## 定義

响嚴格定義上，語義網絡係一種抽象化嘅圖，有向（啲連繫有特定方向）又得無向（啲連繫冇特定方向）又得，最基本組成部份包括咗兩樣嘢：
#節點，當中每個節點代表一個概念；概念係指對一拃嘢嘅抽象化，例如一個人睇咗 100 樖樹之後，發覺嗰 100 嚿物件都有「有葉」同「有樹幹」等嘅特徵－於是佢個腦裏面就組成咗「樹」嘅概念，「動物」同「貓」等嘅概念道理一樣；
#節點之間會有一啲**連繫**；精確啲講，每條連繫表達嘅係語義關係－即係話條連繫在意嘅係啲字背後嘅意思；最基本嘅連繫有
#*「係... 嘅一種」（睇埋子集）－例如「貓係動物嘅一種」同「樹**唔**係動物嘅一種」；
#*「擁有...」（睇語言學上講嘅擁有）－例如「貓有毛皮」同「樹有葉」；
#*「蘊含...」（睇邏輯學上講嘅結論）... 呀噉；
好似下圖噉嘅語義網絡表示咗一啲有關動物嘅知識：啲節點係哺乳類、貓、毛皮、動物、魚、鯨魚同水等好多個同動物有關嘅概念，而啲連繫表示咗概念之間嘅關係－
*由貓指去哺乳類條箭咀表示「貓**係一種**哺乳類」；
*由貓指去毛皮條箭咀表示「貓**有**毛皮」；
*由魚指去水條箭咀表示「魚**住喺**水**入邊**」... 等等。

喺認知心理學上，語義網絡俾人指可以攞嚟解釋促發效應等嘅多種認知現象：認知心理學家作出噉嘅想像；想像喺是但一個時間點，人腦嘅語義網絡每個節點都有個值代表佢嘅**啟動程度**，一個節點啟動就會引起擴散啟動－
*引致佢掕住嗰啲節點跟住啟動；
*同佢連繫愈強嘅節點就會掕住啟動得愈勁；
－用日常用語講，人一講起一樣嘢嗰陣，就傾向會諗起啲同嗰樣嘢相關嘅嘢。實驗仲試過噉做：實驗者叫人類受試者喺聽到個**[[狼]]**字嗰陣有咁快得咁快撳一個掣，而喺聽**狼**打前聽到例如個**[[狗]]**字嘅受試者對**狼**嘅反應會變快，彷彿好似人腦入面**狗**嘅節點一啟動，**狼**（一個同**狗**關係緊密嘅概念）嘅節點就會跟住一齊啟動，令到個腦能夠更快噉作出對**狼**節點要有嘅反應，促發效應就係泛指好似上述嘅過程噉「見到一款刺激會令個人對另一款刺激嘅反應有所變化」嘅現象。基於呢樣發現，有唔少 AI 研究者都主張用語義網絡教電腦做推理，覺得呢種做法能夠達致更加似人嘅人造智能。

## 製作

### 編寫網絡

要建立語義網絡，最簡單直接嘅方法係用邏輯編程語言寫：邏輯編程語言係程式語言嘅一種，建基於形式邏輯；例如 Prolog 就係一隻廿一世紀初常用嘅邏輯編程語言，成日俾人攞嚟整語義網絡；呢隻語言做法係喺個程式開頭講低拃事實，包含一拃概念同啲概念之間嘅關係；呢啲事實會組成個系統嘅知識庫，而知識庫整好咗，用家就有得向佢提問，每吓提問有句嘢做 `[[input]]`，部電腦曉按照拃碼嚟判斷嗰句嘢係咪「合符知識庫入面其中一句嘢」 `[[邏輯或|OR]]` 「可以由知識庫度推理出嚟」，如果係嘅話就俾**正確**做 `[[output]]`，否則就俾**錯誤**做 `output` 。

Prolog 碼表達起事實上嚟嘅基本格式係 `relation(entity1, entity2, ....k'th entity).`（當中 `relation` 係關係，`entityn` 係第 `n` 嚿物件）。例如好似以下噉嘅簡單 Prolog 碼噉（每行 `%` 後面嘅係注釋，解釋嗰行碼係做乜嘅）：

```prolog
friends(simon, alan). % simon 同 alan 呢兩嚿物件之間係 friend（朋友）嘅關係。 
singer(helena). % helena 係 singer（歌手）。
odd_number(5). % 5 係 odd_number（單數）。
```

用 Prolog 寫咗上面段碼之後，部電腦就知咗「`simon` 同 `alan` 係朋友」等嘅三件事實（組成咗知識庫）；有咗個知識庫，用家就可以作出提問（`Query` = 提問）：

```prolog
Query 1 : ?- singer(helena). % 呢句嘢喺 Prolog 入面意思係「helena 係咪 singer？」噉解。
Output : Yes.
```

－因為段碼組成嘅知識庫入面有句嘢同 `Query` 吻合，所以部電腦就俾出**正確**做 `output`。又睇吓：

```prolog
Query 2 : ?- odd_number(7). % 呢句嘢喺 Prolog 入面意思係「7 係咪 odd_number？」噉解。
Output : No.
```

－喺現實，7 的確係個單數，但因為知識庫入面冇講明 `odd_number(7).`（Prolog 碼 **7 係 odd_number** 噉解）；部電腦搵唔到任何同 `odd_number(7).` 吻合嘅事實，於是就俾咗**錯誤**做 `output`。除咗 Prolog 之外，Lisp 亦都成日俾人攞嚟整語義網絡，例如以下呢段 Lisp 碼，表明咗金絲雀（`canary`）同企鵝（`penguin`）係一種（`is-a`）雀鳥（`bird`）：

```lisp
(setq *database*
'((canary  (is-a bird)
           (color yellow)
           (size small))
  (penguin (is-a bird)
           (movement swim))
  (bird    (is-a vertebrate)
           (has-part wings)
           (reproduction egg-laying))))
```

有咗好似 Prolog 同 Lisp 噉嘅程式語言，就可以教電腦表達一拃概念同埋啲概念之間嘅關係，設計者可以攞住呢啲語言人手噉整語義網絡。
### WordNet

喺廿一世紀初，唔少認知科學同資訊科技領域嘅工作者都有興趣整語義網絡，當中最出名嘅要數 WordNet：WordNet 係一個建基於英文嘅數據庫，收錄嗮英文入面有嘅字，並且按啲字嘅意思將啲字分做一組組（每組係一組同義環），仲會講明每對同義環之間係咩語義關係，例如－





*部位詞同群體詞：如果話 A 係 B 嘅部位詞，係指 A 係 B 嘅一部份，而 B 就係 A 嘅群體詞，例如**[[手指]]**係**[[手掌]]**嘅部位詞，同時**手掌**係**手指**嘅群體詞；又或者**[[指甲]]**係**手指**嘅部位詞，同時**手指**係**指甲**嘅群體詞；
*上位詞同下位詞：如果話 A 係 B 嘅上位詞，係指 B 係 A 嘅一種，而 B 就係 A 嘅下位詞，例如**[[顏色]]**係**[[紅色]]**嘅上位詞，同時**紅色**係**顏色**嘅下位詞；又或者**[[昆蟲]]**係**[[蝴蝶]]**同**[[蜜蜂]]**嘅上位詞，同時**蝴蝶**同**蜜蜂**係**昆蟲**嘅下位詞；
*同義詞：如果話 A 同 B 係同義詞，即係指兩隻字意思一樣；喺廿一世紀初嘅語言學上，同義詞呢個概念有些少爭議性－因為語言演變等嘅現象，好難話兩隻字意思會完全一樣，所以好似 Wordnet 噉嘅語義網絡好多時淨係會話「A 同 B 意思上好相似，大致上係同義詞」，而唔會真係話兩隻字係同義詞；
*反義詞：
**分級反義詞：通常淨係適用於形容詞，如果話 A 同 B 係分級反義詞，意思係話兩隻字形容緊某個連續變數嘅兩極，例如溫度係個連續變數，**熱**同**凍**呢兩隻字形容緊溫度嘅兩極，所以係分級反義詞；又例如重量係個連續變數，**輕**同**重**呢兩隻字形容緊重量嘅兩極，所以係分級反義詞；又例如長度係個連續變數，**長**同**短**呢兩隻字形容緊長度嘅兩極，所以係分級反義詞。
**關係反義詞：如果話 A 同 B 係關係反義詞，意思係話兩隻字形容緊一段關係嘅雙方，例如**[[父母]]**同**[[仔女]]**，或者**[[老師]]**同**[[學生]]**，或者**[[醫生]]**同**[[病人]]**... 呀噉。
*方式詞：淨係適用於動詞，如果話 A 係 B 嘅方式詞，意思係話 A 表示做 B 嘅其中一種方式，例如**狼吞虎咽**係**[[食嘢]]**嘅一個方式詞；
... 呀噉。Wordnet 基本上就係個語義網絡－Wordnet 啲資料可以人手摷嚟睇，但特登整到可以由電腦自動化噉查閱嘅－一個設計者可以輕易寫個曉自己開網頁嚟睇嘅程式（可以睇吓網頁刮料等嘅技術），個程式一喺 Wordnet 攞隻字睇，即刻可以知邊隻字同呢隻字有關同埋「成咩關係」，跟手再自動噉畫幅語義網絡圖出嚟。

## 應用

語義網絡有唔少用途，尤其係喺自然語言處理（NLP；教 AI 處理自然語言嘅技術）等嘅 AI 工作上零舍有用：
*知識表示（KR）：KR 涉及教電腦做出好似「有知識」噉嘅行為，係 AI 嘅重要一環；語義網絡可以攞嚟教 AI 做判斷，而且個 AI 淨係需要簡單噉摷個語義網絡搵想要嘅資訊；舉個簡單例子，想像而家有人問條問題「貓有冇脊椎？」（一條知識性質嘅問題），部電腦內部有個語義網絡，攞**貓**個節點，然後摷 → 所有嘅貓都係哺乳類 → 哺乳類冚唪唥都係脊椎動物 → 脊椎動物冚唪唥都有脊椎 → 貓有脊椎，最後俾出**有**做答案－部電腦展現出好似有知識噉嘅行為。
*詞義消歧：自然語言啲字入面有陣時會有歧義嘅問題，即係一隻字有多個可能意思，而 WSD 就係指教電腦撞到歧義情況嗰陣，同每隻有歧義嘅字搵出佢嘅意思；例如係以下嘅思路噉－
**想像語義距離嘅概念，最基本上係指兩隻字之間喺表示嘅意思上爭幾遠；例如用簡化嘅例子講，**[[狼]]**同**[[狗]]**呢兩隻字嘅語義距離就好接近（兩隻字都係分別表示緊一種動物，而且兩隻字表示嘅動物好相似），而**狼**同**[[雲]]**呢兩隻字嘅語義距離就相對遠（兩隻字表示嘅事物冇乜啦掕）；語義距離有好多方法計，最簡單嘅方法係計吓「兩隻字喺個語義網絡入面最短要通過幾多條邊，先可以將佢哋連埋一齊」－要過嘅邊數量愈少，兩隻字嘅語義距離就算愈短，進階啲嘅做法仲會將啲字按上位詞同下位詞嘅關係畫做分幾層嘅網絡，並且將「個意思喺個網絡邊層」等嘅因素納入埋考慮範圍之內；
**攞有歧義嗰隻字嚟睇，同每個可能意思，計吓嗰個可能意思同周圍啲字（睇埋語境）之間嘅語義距離有幾遠；
**揀同周圍啲字語義距離最短嗰個意思。
*抄襲檢測：抄襲檢測係攞一份文件做 input，output 俾出「呢份文件有冇抄襲嘅成份」；最基本上，抄襲檢測做嘅嘢係攞住份文件，同每份嗰份文件有可能抄嘅文件，計吓份文件同 input 嗰份有幾相似，而如果相似度（`similarity score`）有返咁上下高，就有可能係抄襲，相似度可以用好多方法計－
**最簡單原始嗰種計法係「就噉比較兩份文件啲字似唔似」，不過噉做應付唔到「改吓字眼，意思冇變」嘅抄襲手法；
**潛在語義分析（LSA）：技術化噉講，LSA 會計個矩陣出嚟，矩陣每條橫行表示字詞，每條直行表示其中一份文件，每一格反映嗰隻字詞喺嗰份文件入面嘅 tf-idf（呢個值會反映嗰隻詞喺份文件入面有幾重要）；跟住段演算法就會做降維－攞住個矩陣，嘗試搵個新矩陣出嚟，而個新矩陣橫行數量少咗，同時維持住直行之間嘅相似度分佈，打後得出嗰個（維數少嘅）矩陣就最代表到啲文件嘅意思，最後段演算法就用維數少嗰個矩陣比較啲文件喺意思上嘅相似度（途中可以用到語義網絡嚟睇啲字詞之間嘅意思相似度）。
... 呀噉。

## 睇埋

*圖論
*推理
*分塊
*記憶（語義）
*知識（陳述）
*數據庫
*維基數據
*語義網
*本體工程
*Word2vec
*信念網絡
*人工神經網絡
*處理等級模型
*概念混成理論
*詞庫決定作業

## 文獻
英文文獻：

*Allen, J. and A. Frisch (1982). "What's in a Semantic Network". In: *Proceedings of the 20th. annual meeting of ACL*, Toronto, pp. 19-27.
*Berger, H., Dittenbach, M., & Merkl, D. (2003, September). Activation on the move: Querying tourism information via spreading activation. In *International Conference on Database and Expert Systems Applications* (pp. 474-483). Springer, Berlin, Heidelberg.
*Rajangam, E., & Annamalai, C. (2016). Graph models for knowledge representation and reasoning for contemporary and emerging needs - a survey (PDF). *International Journal of Information Technology and Computer Science (IJITCS)*, 8(2), 14-22.
*John F. Sowa, Alexander Borgida (1991). *[https://books.google.com.au/books?id=lTKnCQAAQBAJ&printsec=frontcover&redir_esc=y#v=onepage&q&f=false Principles of Semantic Networks: Explorations in the Representation of Knowledge]*.
*Vales, C., & Fisher, A. V. (2019). When Stronger Knowledge Slows You Down: Semantic Relatedness Predicts Children's Co‐Activation of Related Items in a Visual Search Paradigm (PDF). *Cognitive Science*, 43(6), e12746.

## 引咗
註釋：

篇文用咗嘅行話，英文名如下：

篇文引用咗以下呢啲文獻同網頁：

## 拎

* 語義網絡
* 講語義網絡嘅碌士，PDF 快勞