自然語言處理

（）係人工智能同語言學嘅一個綜合領域，包含咗一系列用嚟教電腦處理同運算語言同文字嘅技術。NLP 工作者仲用呢啲技術開發出有用嘅電腦系統。

NLP 做嘅嘢大致如下：
*喺人類當中自然噉發展出嚟、平時講嘢會用嘅語言就係所謂嘅自然語言－好似英文、粵語同日本話等都係自然語言（相對於例如程式語言等嘅形式語言）；
*NLP 嘅數據來源可以分做聲同字詞兩大類－前者指事先錄低嘅人講嘢嘅聲，而後者就係以文字形式呈現嘅語言，來源可以係網頁同各種嘅文件，例如好多 NLP 程式開始嗰陣都會有陳述式教部電腦由邊個邊個網頁嘅 HTML 碼度攞要處理嗰段字；
*攞到要處理嘅數據做 <code>input</code> 之後，個 NLP 程式要有啲特定嘅演算法嚟處理段字，最後得出某啲 <code>output</code>；`output` 係乜就視用途而定－有啲程式目的係要翻譯段字，所以 `input` 係一段字，而 `output` 係一段用目標語言寫、意思等同 `input` 嗰段字嘅字。
喺廿一世紀初，NLP 俾人工智能研究者視為人工智能其中一個最重要嘅領域，例如好出名嘅 Google 翻譯就用咗 NLP 技術嚟做翻譯，而且 NLP 方面嘅技術仲可以攞嚟做傾偈機械人等嘅休閒用途。因為 NLP 咁有用，Python 程式語言仲有埋 NLTK 呢套函式庫專做 NLP 相關嘅工作。
## 定位

自然語言處理係一種人工智能（AI）技術，專門教電腦處理自然語言。喺語言學上，自然語言係指一啲响人類當中自然噉發展出嚟、人類日常講嘢寫嘢會用嘅語言－好似粵語、客家話同英文等等都係自然語言，呢啲語言有異於
*形式語言－形式語言係指啲由人特登整出嚟、隻隻符號都有**固定**意思嘅語言，好似係程式語言或者數學語言呀噉；相比之下，自然語言有好多不確定性喺入面（睇下面）；
*人造語言－人造語言可以似日常講嘢用嘅語言，但係由人特登創造出嚟嘅，例如係奇幻作家為自己想像中嘅世界作出嚟嘅語言；相比之下，自然語言係源於人類喺日常生活當中講嘢同互動嘅；
自然語言有好多重要嘅特徵：
*歧義：自然語言同電腦處理開嘅形式語言好唔同；喺程式語言同數學語言裏面，隻隻符號都有固定明確嘅意思，而相比之下，自然語言就成日都出現「一隻字有幾個唔同嘅可能意思」嘅情況（例子可以睇一字多意嘅問題），甚至隻字根本冇明確意思；
*反話：自然語言入面可以有反話呢樣嘢；想像一個人聽佢朋友彈結他，聽完佢就話「嘩，你彈得好好喎」－呢句嘢嘅真實意思受制於講嗰個人嘅表情同第啲身體語言影響，例如如果個人講嗰陣個表情係完全唔興奮嘅話，佢好有可能係講緊反話；由呢啲噉嘅例子可以睇得出，判斷一句自然語言句子嘅意思嗰時唔可以齋靠字面解；
*語言演變：一隻自然語言嘅語義同文法等特性會隨時間演變，例子可以睇潮流用語（啲人作新嘅字或者詞）嘅現象；噉亦表示，自然語言梗會有不確定性喺入面，而要模擬自然語言，就要用到涉及機率嘅做法，會用到類似以下噉嘅符號－
*:\Pr(S = \text{man zi})；日常用語講，呢串嘢意思係「串字（S）係 `man zi` 嘅機率」。
... 呀噉。自然語言嘅呢啲特徵會對「應該用咩方法應付佢哋」有具體嘅影響：廿世紀電腦要求用家俾嘅命令極度精確，唔可以有歧義或者含糊，喺一大串 `0` 同 `1` 裏面多咗或者少噉咗個 `0` 都會搞到部機做嘅運算錯嗮甚至輕機，更加唔好話會識得考慮對方講嘢嗰陣啲身體語言（理解反話嗰時必要諗嘅嘢）或者語言演變。NLP 就係喺廿世紀後半橛至廿一世紀初興起嘅 AI 技術，專門諗點樣用特製嘅演算法嚟教電腦處理自然語言。

## 符號 NLP

符號 NLP 係最原始嗰種 NLP 做法，喺 1950 至 1990 年代盛行。根據符號 AI 個諗頭，想教電腦做出「處理自然語言」等似有智能嘅行為，淨係需要教電腦識一啲**能夠明文噉寫出嚟嘅法則**就得，NLP 都唔例外，形成咗所謂嘅符號 NLP；舉個具體例子，想像用呢種方針做自動翻譯，將英文譯做粵語，可以用好似以下噉嘅方法：
*要有本字典，做到將英文入面每隻字轉做粵語入面「對應」嘅字；
*要有拃法則表示英文入面嘅句子結構；
*要有拃法則表示粵語入面嘅句子結構；
跟住部機就可以用以下嘅步驟做翻譯：
#攞要翻譯嘅文字做 input，例如家陣想將英文句子 **the girl eats an apple** 譯做粵語；
#同 input 入面每隻字標注好佢係咩詞性，睇返例句－**the** 係指定冠詞、**girl** 係名詞、**eats** 係動詞、**an** 係非指定冠詞、**apple** 係名詞；
#對句嘢做解析（知清楚啲字之間嘅句法關係），睇返例句－ **eats** 係簡單現在式，第三身，主動，而 **eats** 嘅受詞係 **apple**；
#將句嘢啲字轉換做粵語，睇返例句－
#:The → 嗰個 | girl → 女仔 | eat → 食 | an → 一個 | apple → 蘋果
#將啲字砌埋做一句粵語白話文句子－**嗰個女仔食一個蘋果**，俾出嚟做 output 。
符號 NLP 就噉睇好似掂噉，但查實有好多問題都係呢種做法處理唔嚟嘅：事實表明，呢種做法應付歧義嗰陣好撈絞－想像設計者吓吓都要人手教部電腦「呢隻呢隻字有咁多隻可能意思，喺情況 A 下當係意思 A、喺情況 B 下當係意思 B...」噉嘅資訊；而且用呢種方法做 NLP 嘅電腦亦都唔會識處理反話同語言演變嘅問題。因為噉，廿一世紀初經已好少可會靠符號 NLP 呢種做法。

## 統計 NLP

1980 年代至 1990 年代係機械學習（ML）方法興起嘅年代；機械學習响某啲方面可以話係符號 AI 嘅相反－機械學習追求嘅係用特製嘅演算法教電腦自己由數據度搵出法則，唔使吓吓都要明文噉講俾部電腦知啲法則係乜；於是 NLP 界就興起咗用語料庫（睇下面）嘅數據，教電腦自己由啲語料數據度搵出規律，途中會用到唔同類嘅機率等嘅統計概念，例如 n-gram 嘅做法就係噉。

N-gram 個諗頭建基於一個簡單事實：
語言同文字本質上就係一串串符號，包括字母、標點符號同空格呀噉。

一串 n-gram 指一串符號當中嘅一連 n 咁多個符號：例如想像有串 100 隻字符－`LLLRLRRRLL...`，一個 3-gram 嘅演算法會考慮每串連續三個符號係乜嘢樣－LLL, LLR, LRL...，再按打前嗰兩個符號嘅規律計算下一個符號最有可能係乜；例如想像家陣手上串粵語白話文字係噉嘅樣：
:`我今朝落樓下買咗兩個[[叉燒包]]，同嫲嫲一齊食。`
喺呢段字入面，如果打前兩個字符係 `今朝`，跟住嗰個符號係 `落` 嘅機率係 100% －喺成串字入面，`今朝` 淨係出現咗一次，而喺嗰次當中跟尾嗰個字符係 `落`，所以如果齋考慮上面呢段字嘅 3-gram 嘅話，「**今朝**後面係**落**」嘅機會率係 100%。抽象化啲講，現實應用嘅 n-gram 會用大量語言資源數據做類似噉嘅估計，計出一隻語言嘅文字啲字符以至字詞之間嘅統計關係。精確啲講，即係話一個 n-gram 模型定義上係用
:x_{i-(n-1)}, \dots, x_{i-1} 
嘅數值預測 x_i，計算
:\Pr(x_i \mid x_{i-(n-1)}, \dots, x_{i-1}) 
事實表明，有好多進階嘅 NLP 應用都係 n-gram 搞唔掂嘅，不過齋靠 n-gram 經已可以做到語言辨認等比較簡單嘅 NLP 工作：想像家陣設計者攞住每隻已知嘅文字－英文、德文、法文... 呀噉，同每隻呢啲文字都搵語料數據，同佢建立咗個 3-gram 模型，知道啲 \Pr(x_i|x_{i-2}, x_{i-1}) 嘅數值，佢跟住就可以計：
:\Pr(\text{man zi} | \text{hai jing man})
用日常用語講，佢做嘅嘢係要攞住英文個 3-gram 模型，計吓「如果呢段文字係英文，會出呢段噉嘅字符嘅機率」，然後又攞德文嘅 3-gram 模型，計吓「如果呢段文字係德文，會出段噉嘅字符嘅機率」... 如此類推，跟住就例如揀「出到呢段字符嘅機率」最大嗰隻文字－最後做到辨認手上段字係咩語言嘅文字。除咗 n-gram 之外，統計 NLP 仲有用過隱馬可夫模型等嘅統計技術。

## 語言數據

### 語料庫

喺廿一世紀初，要做 NLP 第一步通常係要攞啲語言性質嘅數據返嚟先，而語料庫就係其中一種最常用最重要嘅數據來源。一個語料庫會係一嚿大型有結構嘅語言資源，一隻語言嘅語料庫會包含大量屬嗰隻語言嘅錄音同文字。舉個例說明，國際英文語料庫就係一個好出名嘅英文語料庫，ICE 搵勻嗮世界各地超過 20 個以英文做官方語言一部份嘅國家或者地區（包括香港），每個國家地區對應嘅英文語料都係儲咗當地啲人講英文嘅錄音，仲有係當地啲人用英文寫嘅隨筆、書信、學術文同埋新聞報道等嘅多種文字材料；到咗 2018 年，ICE 對包括嘅每個國家地區都最少有 1,500,000 字咁長（**大型**）嘅材料。

語料庫嘅設計好有技巧，要用好多方法特登整到方便人用，例如：
*數據做好嗮啲事前處理（睇下面）
***大細**：語料庫基本上就係為語言學同相關嘅研究提供語言樣本，而樣本通常係愈大愈好嘅；一個語料庫嘅大細通常會用入面啲語料嘅總字數嚟計，字數愈高個語料庫就算係愈大，（假設第啲因素不變）個語料庫愈大就愈有用；例如到咗 2020 年，牛津英文語料庫（一個描述廿一世紀初嘅英文嘅語料庫）總字數有成 21 億字咁多。
***近期**：語言文字係會隨時間而演變嘅，例如潮流用語等嘅現象就反映咗語言嘅演變；因為噉，如果一個語料庫啲數據唔夠近期，就會搞到研究者攞唔到最新嘅資訊，例如想像有位 AI 研究者想寫一隻曉同人傾偈嘅傾偈機械人，但佢用嘅語料庫數據唔夠新，冇近 10 年嘅數據，就會搞到隻機械人唔識用近 10 年嘅潮流用語－做唔到自然嘅傾談。喺實際應用上，語料庫仲會同啲語料標明埋每件語料係源自咩年份嘅，方便用家判斷嗰件語料係咪啱用。
***廣泛**：一般認為，語料庫最好能夠包含唔同類嘅語料，例如牛津英文語料庫同國際英文語料庫都既會包含用英文寫嘅文字，又會包括啲人講嘢嘅錄音；除此之外，唔同情境下寫字同講嘢都會唔同，例如新聞報導、散文故仔同學術文之間就有相當嘅差異，而啲人「喺正式場合講嘢」同「喺一般日常屋企人之間講嘢」又會好唔同，國際英文語料庫等嘅語料庫都有諗到呢一點，所以喺搵語料用嗰陣會包含唔同嘅料，會有新聞報導、虛構故仔同學術文等嘅多種唔同材料；而且仲會有埋搜尋器噉嘅功能，方便做 NLP 嘅人可以輕易噉摷自己想要嘅料嚟用。
*中繼資料：中繼資料係指「描繪數據嘅數據」，係語料庫不可或缺嘅一環；例如家陣有一份語料，份語料係篇隨筆，篇隨筆入面嘅字就係數據本身，而中繼資料就係指描述呢件數據嘅數據－包括係描述篇文嘅作者、字數、出嘅年份同埋出處... 呀噉；中繼資料喺好多分析上都好有用，例如描述啲數據「係咩年份出」嘅中繼資料就可以幫手分析隻語言隨時間嘅變化。
呀噉。

順帶一提，有啲語言畀人歸類做低資源語言，成日唔夠語料用，例如廿一世紀初嘅粵語噉－粵語唔算係最多使用者嘅語言，而且粵語啲使用者又成日淨係肯寫似標準官話嘅中文書面語，唔肯寫粵文。

### 事前處理

喺實際攞啲語言文字數據嚟用之前，研究者通常都會或多或少噉對啲數據做啲處理，包括：
*記號化：將句子分做個別嘅字詞，通常係將每隻字變成一段字串，即係例如
:
*記號化通常仲會配合埋將每隻字按詞性分做名詞、動詞同形容詞等嘅類型（詞性標注）。記號化呢樣嘢喺英文入面好簡單（因為英文入面每隻字都同周圍嘅字之間有空格），不過喺（例如）粵文或者日文呢啲傳統上唔興用空格嘅文字入面可以幾撈絞。
*詞形還原：指教部電腦一個字喺唔同詞性下嘅唔同樣，等部電腦識得將呢啲唔同樣當做同一個字噉嚟分析；例如英文 **wolf** 同 **wolves** 都係指狼，後者係眾數，做詞形還原就會教部電腦知 **wolf** 同 **wolves** 係同一個字嘅唔同樣。
*停用詞：指做主要處理之前會攞走嘅字，例如喺英文當中 **the** 同 **a** 呢啲字出現得好密，而呢啲字俾人指會干擾某啲 NLP 程式嘅運作，所以喺做完記號化同詞形還原之後，一個 NLP 程式好多時就會郁手攞走啲停用詞。
*分析樹：一種語言學分析上成日會用嘅樹狀數據；簡單講即係按文法將一串字串嘅句法結構表述出嚟，例如好似 **John hit the ball**（阿莊打中咗個波）呢句簡單嘅英文句子噉，就可以畫做以下噉嘅分析樹（`NP`：名詞短語；`VP`：動詞短語）：

*命名實體識別：指由段字串入面搵出邊啲字係表示有名實體（即係一件特定嘅物體，例如係某個特定嘅人或者某笪特定嘅地方呀噉）嘅，例如 **John hit the ball** 嗰句句子入面 **John** 就係一嚿有名實體；NER 可以幾撈絞－喺英文入面，有名實體一般冚唪唥都會開頭個字母大階，但有好多文字唔會噉做，例子有粵文同日文呀噉，又或者好似德文噉名詞全部都開頭字母大階。命名實體識別呢家嘢可以用到好多統計方法。
*詞性標注：同啲字串入嘅每隻字詞標明佢係咩詞性，每隻字都標明嗮佢係名詞定動詞定形容詞定點；做到類似下面噉－
*:原句：「佢喺淺水灣起蠔殼屋。」
**做咗詞性標注就會變成好似噉－
*:`佢 ([[代名詞]]) 喺 ([[介詞]]) 淺水灣 ([[名詞]]) 起 ([[動詞]]) 蠔殼屋 (名詞)。`
等等。

## 重要應用

自然語言處理用途好廣泛，包括咗以下呢啲：
### 資訊提取

資訊提取係指一個 NLP 程式識攞「用家嘅問題」做 `input`，`output` 俾出一份答到條問題嘅文件；進階啲嘅 NLP 程式仲識打分畀每份摷到嘅文件嚟表示份文件同個問題有幾咁更，然之後按呢個分嚟排先後，畀最𪐀更嘅文件畀用家睇先；好似係 okapi BM25 噉，呢套函數會攞用家問嘅嘢（Q）做 `input`，然後同每份文件（D）計個分數（\text{fan sou}）：
:\text{fan sou}(D,Q) = \sum_{i=1}^{n} \text{IDF}(q_i) \cdot \frac{f(q_i, D) \cdot (k_1 + 1)}{f(q_i, D) + k_1 \cdot \left(1 - b + b \cdot \frac{\text{avgdl}}\right)} 
:當中有：
:
如果 q_i 係一隻常用字（例如英文入面嘅 **in** 或者 **of** 呀噉），噉佢嘅 \text{IDF}(q_i) 分數理應會低（N - n(q_i) 數值細）；所以 \text{IDF}(q_i) 呢嚿嘢嘅存在係為咗阻止啲常用字干擾搜尋結果。

計完之後，就會每份文件得出個分數表示份文件對條問題嚟講幾有啦更，分數愈高表示愈有啦更，然後個搜尋器就可以按分數將啲摷到嘅文件列嗮出嚟，分數最高嘅行先。Okapi BM25 源於 1980 年代，到咗廿一世紀初經已廣泛噉俾搜尋器採用。進階嘅演算法仲會考慮埋詞形還原以及同義詞等嘅好多問題，例如 PageRank 同 HITS 演算法就會用到「個網頁有幾多高質網頁連過去」衡量摷到嘅網頁嘅「質素」，並且喺列出摷到嘅網頁嗰陣，將「質素」高啲嘅網頁排先。

### 資訊抽取

資訊抽取係指由一段字度攞出有用嘅資訊。資訊抽取其中一個最簡單嘅情況係噉：假設手上段字係喺度講緊某樣事物－樣事物可能係一個人、一笪地方或者一件產品呀噉，而個 AI 程式就要抽取有關樣事物嘅資訊，例如手上段字係講一隻電子遊戲（事物）嘅嘢，個程式要曉由段字度搵出隻遊戲「賣緊咩價錢」或者「屬啲咩類型」呀噉（件事物相關嘅資訊）；跟住－
*Foreach 要抽取嘅資訊，個程式都假設件資訊會跟從一個 `template`（**模版**）；
*`Template` 係指段字講嗰樣資訊嗰時大機率會跟規律，例如如果家陣想抽取嘅資訊係價錢，`template` 會係「`[$][0-9][0-9][0-9]`」或者「價錢：」等嘅樣（睇埋 regex）；
*如果有段字吻合其中一個 `template`，抽嗰段字出嚟；
*Foreach 噉樣抽咗出嚟嘅字串，攞想要嘅資訊（例：俾出 `$` 後面嘅數做「價錢」）；
*Foreach 搵唔到嘅資訊，填 `missing` 落去；
進階啲嘅資訊抽取技術會考慮埋物件之間嘅**關係**，例如家吓個程式讀到 `$249.99` 噉嘅字串，但佢唔係就噉攞呢串嘢做「價錢」嘅 output，而係會搵埋「個價係講緊邊件物件嘅價」，當中**佢嘅**或者**佢個**等嘅字眼都會提供到噉嘅資訊（可以睇埋語義網絡）。

### 機械翻譯

機械翻譯係指要電腦自動噉做翻譯，可以好撈絞。舉個簡單嘅例子說明，想像家陣寫個程式出嚟做英到粵翻譯，而以下有兩句英文句子：
:**句子 1**：The thriller movie is disturbing.
:**句子 2**：The noises he makes are disturbing.
喺以上呢兩句句子裏面，講緊嘢嗰個人都用咗 **disturbing** 呢隻形容詞，但係呢隻字要譯做粵文嘅話起碼有兩個可能嘅意思（歧義）：
*呢隻字就噉睇嘅話可以譯做**令人不安**噉解；
*但譯做「令人覺得佢煩」噉解又得；
對於呢隻字要點譯，要睇嗮成句句子先可以做決定：句子 1 用 **disturbing** 嚟形容一套驚慄片，而句子 2 就用 **disturbing** 嚟形容某個人所發出嘅噪音。一般會認為喺前者嘅情況當中，**disturbing** 比較可能係指**令人不安**，而喺後者嘅情況入面，呢隻字就比較可能係指**令人覺得佢煩**。而且「啲人傾向點用 **disturbing** 呢隻字」呢點有可能隨時間演變，所以做翻譯嗰陣又要諗埋句句子係幾時寫低嘅。一個做翻譯嘅 AI 程式一定要考慮嗮咁多因素先可以俾輸出。

### 拉雜應用

除咗以上呢啲，NLP 仲可以攞嚟做：
*反垃圾電郵技術係攞一封電郵做 `input`，`output` 俾出「封電郵係咪垃圾電郵」。反垃圾電郵技術可以想像成簡單嘅監督式學習，研究者可以俾隻 NLP 程式睇一大拃嘅正常電郵（0）同垃圾電郵（1），然後叫隻程式分析兩種電郵有咩分別－例如垃圾電郵好多時都係廣告，會成日出現「你可以買」或者「快啲去買」等嘅字詞，而且喺英文等嘅多種語文入面垃圾電郵亦成日會有成句都大階噉嘅情況，於是研究者可以用 n-gram 嚟分析兩種電郵，教隻程式計
*:\Pr( 封電郵係垃圾 | 封電郵入面出現咗「快啲去買」 ) 
**等嘅好多個機率－最後決定 \Pr( 封電郵係垃圾 ) 同 \Pr( 封電郵唔係垃圾 ) 邊個數值大啲。
*詞義消歧係指幫文字同語言解決歧義嘅問題：自然語言啲字詞好多時都有多個可能嘅詞義，而 WSD 就係指教電腦撞到呢種情況嗰陣，同每隻有多詞義嘅字詞搵出正確意思；例如係以下嘅思路噉－
**想像語義距離嘅概念，語義距離最基本上係指兩隻字詞之間喺表示嘅意思上爭幾遠；例如用簡化嘅例子講，**[[狼]]**同**[[狗]]**呢兩隻字嘅語義距離就好接近（兩隻字都係分別表示緊一種動物，而且兩隻字表示嘅動物好相似），而**狼**同**[[雲]]**呢兩隻字嘅語義距離就相對遠（兩隻字表示嘅事物冇乜啦掕）；語義距離有好多方法計，例子可以睇吓語義網絡同相關嘅技術；
**攞有歧義嗰隻字嚟睇，foreach 可能意思，計吓嗰個可能意思同周圍啲字（睇埋語境）之間嘅語義距離有幾遠；
**揀同周圍啲字語義距離最短嗰個意思。
*文本情感分析係指「攞一段文字做 input，再俾出段字入面『包含咩情緒』做 output；例如想像家陣有班做營銷嘅工作者想做市場調查，佢哋走去同社交媒體合作，睇啲用家嘅留言（文字數據），想由呢啲數據度得知用家對隻產品有乜睇法；喺最簡單嗰種情況下，佢哋可以簡單噉數某啲字同句子出現得有幾密，例如數吓隻產品個名有幾常同「好鍾意」或者「正」等嘅字眼出現喺同一句句子入面，進階啲嘅做法仲會用深度神經網絡將啲句子分類－包括係教電腦分辨出邊句句子係客觀描述性質嘅（呢啲句子冇乜機會透露寫嗰個人嘅情緒，所以要忽視）呀噉。
*心理測量係設計心理測驗嚟量度行為同心理變數嘅方法，例如智商測驗就係量度緊智能（一種心理特性）嘅心理測驗，設計途中用到好多嚴格指標判定個測驗係咪得；喺 2020 年代尾，心理測量界開始興起用 NLP 整心理測驗，例如對創意嘅心理測量噉－創意嘅心理測量喺廿世紀不嬲係個大問題，有認知心理學家指出，創意定義上就係要諗啲同主流見解唔同嘅諗頭，所以可以用語義距離嘅概念諗（詳情可以睇埋潛在語義分析），愈有創意嘅人理應會愈能夠（例如）寫出啲同主流意見語義距離遠嘅字句，又或者因為能夠諗出好多唔同嘅諗頭，而能夠做到自己寫嘅唔同文字之間語義距離遠；呢啲噉嘅研究喺 2020 年代初經已取得初步嘅成功。
*語音識別係指「攞一段講嘢嘅聲做 input，再俾出段說話對應嘅文字做 output」；呢種工作可以好困難，因為文字同講嘢嘅語言係好唔同嘅兩樣嘢，例如人喺寫嘢嗰陣每隻字之間嘅界線都好清楚，而喺英文等用字母寫嘢嘅文字裏面，字之間仲會有空格隔開；相比之下，人講嘢嗰陣好少可會喺字之間明顯噉停低，而且仲會有共同發音（指一吓講嘢嘅聲受打前或者打後嗰個音影響）等嘅現象；因為噉，直接將上面講到嗰啲（多數係用嚟處理文字嘅）技術直接攞去做語音識別多數都搞唔掂。語音識別亦都因而發展出一套有別於文字 NLP 嘅技術。可以睇埋語音合成。
*語料庫語言學泛指用語料庫嚟做語言學上嘅研究；語料庫語言學最簡單最常見嘅做法係數某啲嘢喺語料庫入面**出現得幾密**，例如家陣有語言學家想研究人點樣學英文嚟做第二語言，語言學家可以去英文語料庫度攞料，睇啲用英文做第二語言嘅人產生嘅語料（假設個語料庫有齊嗮必要嘅中繼資料，講明嗮每份語料嘅產生者嘅母語係乜），睇吓呢啲語料入面文法出錯嘅頻率會唔會受產生者嘅年紀（繼續假設個語料庫有呢啲中繼資料）影響。呢類噉嘅研究成日會用到 NLP 技術－例如啲語料字數好多時閒閒哋以百萬計，所以要數「每份語料入面有幾多次文法出錯」實要靠電腦程式幫手。
... 呀噉。

## 認知研究

NLP 同認知語言學關係相當密切。認知語言學係認知心理學嘅一門，專門研究語言相關嘅認知功能－例如研究人腦邊啲腦區有份幫人理解語言呀噉。原則上，喺 NLP 技術出現之前，人腦係唯一一樣已知有能力處理語言文字嘅物體，所以 NLP 技術大可以參考認知語言研究，並且透過「模仿人腦嘅語言功能」達致處理到語言。

心靈話假說係「NLP 參考認知語言學上嘅諗頭」嘅一個出名例子：心靈話假說係廿一世紀初認知語言學上嘅一個諗頭，個諗頭建基於一啲對語言現象嘅觀察－例如人成日都會話覺得自己可以喺腦入面同自己講嘢，而提倡呢個睇法嘅研究者主張
*人腦內部有所謂嘅「心靈話」，即係腦內嘅思緒好似語言噉有特定嘅句法；
*一個人諗嘢嗰時就係將啲思緒組成一句句「心靈話句子」，例如一個人諗緊「阿莊生得好高」，佢個腦入面**阿莊**同**高**呢兩個諗法（腦入面嘅某啲活動）以某啲句法組合成連繫，
*而如果佢想將呢段思緒講出嚟或者寫出嚟，佢個腦入面就會將嗰兩個諗法同諗法之間嘅連繫「翻譯」做想用嘅語文。
到咗 2020 年代初，心靈話假說依然有咁上下爭議性，唔少認知語言學家仲喺度拗緊「心靈話假說係咪能夠準確噉描述人腦入面發生嘅事」。不過無可爭議嘅係，用心靈話假說嘅諗法嚟做 NLP 經已取得咗一定嘅成功：唔少 NLP 應用都會用人工神經網絡（尤其係遞迴神經網絡）嘅做法，用一個人工神經網絡處理資訊，然後將第一個神經網絡嘅 output 設嚟做另一個神經網絡嘅 input，要第二個神經網絡將啲資訊轉換做語言或者文字－彷彿好似第一個網絡係「處理緊心靈話」噉，而就算將「人工神經網絡」換做第隻運算方法，上述嘅道理都行得通。噉講即係話，姑且勿論心靈話假說係咪準確噉描述得到人腦嘅語言認知，基於心靈話假說或者類似諗頭整出嚟嘅技術能夠俾到令人滿意嘅結果。

## 註釋

## 睇埋

*語言
*運算
*數據科學
*大數據
*特徵選擇
*運算創意
*對話系統
*聰明玩具
*提示工程
*運算語言學
*數碼人文學

## 文獻

*Bates, M. (1995). "Models of natural language understanding". *Proceedings of the National Academy of Sciences of the United States of America*. 92 (22): 9977-9982. doi:10.1073/pnas.92.22.9977. PMC 40721. PMID 7479812.
*Bentley, F., Tollmar, K., Stephenson, P., Levy, L., Jones, B., Robertson, S., ... & Wilson, J. (2013). Health Mashups: Presenting statistical patterns between wellbeing data and context in natural language to promote behavior change (PDF). *ACM Transactions on Computer-Human Interaction (TOCHI)*, 20(5), 1-27，用 NLP 技術嘅 apps 鼓勵人改變佢哋嘅行為。
*Bird, S., Klein, E., & Loper, E. (2009). *Natural language processing with Python: analyzing text with the natural language toolkit*. O'Reilly Media, Inc.
*Bubeck, S., Chandrasekaran, V., Eldan, R., Gehrke, J., Horvitz, E., Kamar, E., ... & Zhang, Y. (2023). *[https://arxiv.org/pdf/2303.12712.pdf?fbclid=IwAR3rkSQw2fB8CjCHtKmnunn4G-_w9jCkRZbu-pUZRpHeBN_99oUsF-IdhGk Sparks of Artificial General Intelligence: Early experiments with GPT-4]* (PDF). arXiv preprint arXiv:2303.12712，依篇文講到語言模型 GPT-4 展示嘅普遍人工智能。 
*Kurdi, M. Z. (2016). *Natural language processing and computational linguistics: speech, morphology and syntax* (Vol. 1). John Wiley & Sons.
*Kurdi, M. Z. (2017). *Natural language processing and computational linguistics 2: semantics, discourse and applications* (Vol. 2). John Wiley & Sons.
*Lee, J., Chen, L., Lam, C., Lau, C. M., & Tsui, T. H. (2022, June). PyCantonese: Cantonese linguistics and NLP in python (PDF). In *Proceedings of the Thirteenth Language Resources and Evaluation Conference* (pp. 6607-6611)，依篇文簡介 PyCantonese，一個可以攞嚟做粵語 NLP 嘅函式庫。
*McIntyre, N., & Lapata, M. (2009, August). Learning to tell tales: A data-driven approach to story generation (PDF). In *Proceedings of the Joint Conference of the 47th Annual Meeting of the ACL and the 4th International Joint Conference on Natural Language Processing of the AFNLP* (pp. 217-225).
*Nguyen, D., Doğruöz, A. S., Rosé, C. P., & De Jong, F. (2016). Computational sociolinguistics: A survey. *Computational linguistics*, 42(3), 537-593，呢篇文用 NLP 方法研究社會語言學，包括研究啲人點樣透過電腦嚟溝通、點樣教電腦自動噉透過分析文字嚟搵出網上欺凌、點樣透過啲人寫嘅字嚟搵出佢啲特性（例如由用字睇得出係男定女）... 呀噉。
*Schütze, H., Manning, C. D., & Raghavan, P. (2008). *Introduction to information retrieval* (Vol. 39, pp. 234-265). Cambridge: Cambridge University Press. Official html and pdf versions available without charge.
*Taskin, Z., & Al, U. (2019). Natural language processing applications in library and information science (PDF). *Online Information Review*，呢篇文綜述咗 NLP 技術喺圖書館學同資訊科學上有乜用。
*Wu, T., Ma, W., Wen, S., Xia, X., Paris, C., Nepal, S., & Xiang, Y. (2021). Analysis of trending topics and text-based channels of information delivery in cybersecurity (PDF). *ACM Transactions on Internet Technology (TOIT)*, 22(2), 1-27.

## 引咗
篇文用咗嘅行話或者專有名詞，英文名如下：

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

## 拎

* 自然語言處理，香港應科院
* Introduction to Natural Language Processing. *GeeksforGeeks*，NLP 入門簡介
* NLP Glossary for Beginners. *Medium*，NLP 入門簡介