自然語言處理

自然語言處理（英文：natural language processing，NLP）係人工智能同語言學嘅一個綜合領域，包含咗一系列用嚟教電腦處理同運算語言同文字嘅技術。NLP 工作者仲用呢啲技術開發出有用嘅電腦系統。
NLP 做嘅嘢大致如下：
喺廿一世紀初，NLP 俾人工智能研究者視為人工智能其中一個最重要嘅領域，例如好出名嘅Google 翻譯就用咗 NLP 技術嚟做翻譯，而且 NLP 方面嘅技術仲可以攞嚟做傾偈機械人等嘅休閒用途。因為 NLP 咁有用，Python 程式語言仲有埋NLTK呢套函式庫專做 NLP 相關嘅工作。
自然語言處理係一種人工智能（AI）技術，專門教電腦處理自然語言。喺語言學上，自然語言係指一啲响人類當中自然噉發展出嚟、人類日常講嘢寫嘢會用嘅語言－好似粵語、客家話同英文等等都係自然語言，呢啲語言有異於
自然語言有好多重要嘅特徵：
... 呀噉。自然語言嘅呢啲特徵會對「應該用咩方法應付佢哋」有具體嘅影響：廿世紀電腦要求用家俾嘅命令極度精確，唔可以有歧義或者含糊，喺一大串0同1裏面多咗或者少噉咗個0都會搞到部機做嘅運算錯嗮甚至輕機，更加唔好話會識得考慮對方講嘢嗰陣啲身體語言（理解反話嗰時必要諗嘅嘢）或者語言演變。NLP 就係喺廿世紀後半橛至廿一世紀初興起嘅 AI 技術，專門諗點樣用特製嘅演算法嚟教電腦處理自然語言。
符號 NLP 係最原始嗰種 NLP 做法，喺 1950 至 1990 年代盛行。根據符號 AI個諗頭，想教電腦做出「處理自然語言」等似有智能嘅行為，淨係需要教電腦識一啲能夠明文噉寫出嚟嘅法則就得，NLP 都唔例外，形成咗所謂嘅符號 NLP；舉個具體例子，想像用呢種方針做自動翻譯，將英文譯做粵語，可以用好似以下噉嘅方法：
跟住部機就可以用以下嘅步驟做翻譯：
符號 NLP 就噉睇好似掂噉，但查實有好多問題都係呢種做法處理唔嚟嘅：事實表明，呢種做法應付歧義嗰陣好撈絞－想像設計者吓吓都要人手教部電腦「呢隻呢隻字有咁多隻可能意思，喺情況 A 下當係意思 A、喺情況 B 下當係意思 B...」噉嘅資訊；而且用呢種方法做 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 模型定義上係用
嘅數值預測xi{\displaystyle x_{i}}，計算
事實表明，有好多進階嘅 NLP 應用都係 n-gram 搞唔掂嘅，不過齋靠 n-gram 經已可以做到語言辨認等比較簡單嘅 NLP 工作：想像家陣設計者攞住每隻已知嘅文字－英文、德文、法文... 呀噉，同每隻呢啲文字都搵語料數據，同佢建立咗個 3-gram 模型，知道啲Pr(xi|xi−2,xi−1){\displaystyle \Pr(x_{i}|x_{i-2},x_{i-1})}嘅數值，佢跟住就可以計：
用日常用語講，佢做嘅嘢係要攞住英文個 3-gram 模型，計吓「如果呢段文字係英文，會出呢段噉嘅字符嘅機率」，然後又攞德文嘅 3-gram 模型，計吓「如果呢段文字係德文，會出段噉嘅字符嘅機率」... 如此類推，跟住就例如揀「出到呢段字符嘅機率」最大嗰隻文字－最後做到辨認手上段字係咩語言嘅文字。除咗 n-gram 之外，統計 NLP 仲有用過隱馬可夫模型等嘅統計技術。
喺廿一世紀初，要做 NLP 第一步通常係要攞啲語言性質嘅數據返嚟先，而語料庫就係其中一種最常用最重要嘅數據來源。一個語料庫會係一嚿大型有結構嘅語言資源，一隻語言嘅語料庫會包含大量屬嗰隻語言嘅錄音同文字。舉個例說明，國際英文語料庫就係一個好出名嘅英文語料庫，ICE 搵勻嗮世界各地超過 20 個以英文做官方語言一部份嘅國家或者地區（包括香港），每個國家地區對應嘅英文語料都係儲咗當地啲人講英文嘅錄音，仲有係當地啲人用英文寫嘅隨筆、書信、學術文同埋新聞報道等嘅多種文字材料；到咗 2018 年，ICE 對包括嘅每個國家地區都最少有 1,500,000 字咁長（大型）嘅材料。
語料庫嘅設計好有技巧，要用好多方法特登整到方便人用，例如：
呀噉。
順帶一提，有啲語言畀人歸類做低資源語言，成日唔夠語料用，例如廿一世紀初嘅粵語噉－粵語唔算係最多使用者嘅語言，而且粵語啲使用者又成日淨係肯寫似標準官話嘅中文書面語，唔肯寫粵文。
喺實際攞啲語言文字數據嚟用之前，研究者通常都會或多或少噉對啲數據做啲處理，包括：
等等。
自然語言處理用途好廣泛，包括咗以下呢啲：
資訊提取係指一個 NLP 程式識攞「用家嘅問題」做input，output俾出一份答到條問題嘅文件；進階啲嘅 NLP 程式仲識打分畀每份摷到嘅文件嚟表示份文件同個問題有幾咁𪐀更，然之後按呢個分嚟排先後，畀最𪐀更嘅文件畀用家睇先；好似係okapi BM25噉，呢套函數會攞用家問嘅嘢（Q{\displaystyle Q}）做input，然後同每份文件（D{\displaystyle D}）計個分數（fan sou{\displaystyle {\text{fan sou}}}）：
如果qi{\displaystyle q_{i}}係一隻常用字（例如英文入面嘅in或者of呀噉），噉佢嘅IDF(qi){\displaystyle {\text{IDF}}(q_{i})}分數理應會低（N−n(qi){\displaystyle N-n(q_{i})}數值細）；所以IDF(qi){\displaystyle {\text{IDF}}(q_{i})}呢嚿嘢嘅存在係為咗阻止啲常用字干擾搜尋結果。
計完之後，就會每份文件得出個分數表示份文件對條問題嚟講幾有啦更，分數愈高表示愈有啦更，然後個搜尋器就可以按分數將啲摷到嘅文件列嗮出嚟，分數最高嘅行先。Okapi BM25 源於 1980 年代，到咗廿一世紀初經已廣泛噉俾搜尋器採用。進階嘅演算法仲會考慮埋詞形還原以及同義詞等嘅好多問題，例如PageRank同HITS 演算法就會用到「個網頁有幾多高質網頁連過去」衡量摷到嘅網頁嘅「質素」，並且喺列出摷到嘅網頁嗰陣，將「質素」高啲嘅網頁排先。
資訊抽取係指由一段字度攞出有用嘅資訊。資訊抽取其中一個最簡單嘅情況係噉：假設手上段字係喺度講緊某樣事物－樣事物可能係一個人、一笪地方或者一件產品呀噉，而個 AI 程式就要抽取有關樣事物嘅資訊，例如手上段字係講一隻電子遊戲（事物）嘅嘢，個程式要曉由段字度搵出隻遊戲「賣緊咩價錢」或者「屬啲咩類型」呀噉（件事物相關嘅資訊）；跟住－
進階啲嘅資訊抽取技術會考慮埋物件之間嘅關係，例如家吓個程式讀到$249.99噉嘅字串，但佢唔係就噉攞呢串嘢做「價錢」嘅 output，而係會搵埋「個價係講緊邊件物件嘅價」，當中佢嘅或者佢個等嘅字眼都會提供到噉嘅資訊（可以睇埋語義網絡）。
機械翻譯係指要電腦自動噉做翻譯，可以好撈絞。舉個簡單嘅例子說明，想像家陣寫個程式出嚟做英到粵翻譯，而以下有兩句英文句子：
喺以上呢兩句句子裏面，講緊嘢嗰個人都用咗disturbing呢隻形容詞，但係呢隻字要譯做粵文嘅話起碼有兩個可能嘅意思（歧義）：
對於呢隻字要點譯，要睇嗮成句句子先可以做決定：句子 1 用disturbing嚟形容一套驚慄片，而句子 2 就用disturbing嚟形容某個人所發出嘅噪音。一般會認為喺前者嘅情況當中，disturbing比較可能係指令人不安，而喺後者嘅情況入面，呢隻字就比較可能係指令人覺得佢煩。而且「啲人傾向點用disturbing呢隻字」呢點有可能隨時間演變，所以做翻譯嗰陣又要諗埋句句子係幾時寫低嘅。一個做翻譯嘅 AI 程式一定要考慮嗮咁多因素先可以俾輸出。
除咗以上呢啲，NLP 仲可以攞嚟做：
... 呀噉。
NLP 同認知語言學關係相當密切。認知語言學係認知心理學嘅一門，專門研究語言相關嘅認知功能－例如研究人腦邊啲腦區有份幫人理解語言呀噉。原則上，喺 NLP 技術出現之前，人腦係唯一一樣已知有能力處理語言文字嘅物體，所以 NLP 技術大可以參考認知語言研究，並且透過「模仿人腦嘅語言功能」達致處理到語言。
心靈話假說係「NLP 參考認知語言學上嘅諗頭」嘅一個出名例子：心靈話假說係廿一世紀初認知語言學上嘅一個諗頭，個諗頭建基於一啲對語言現象嘅觀察－例如人成日都會話覺得自己可以喺腦入面同自己講嘢，而提倡呢個睇法嘅研究者主張
到咗 2020 年代初，心靈話假說依然有咁上下爭議性，唔少認知語言學家仲喺度拗緊「心靈話假說係咪能夠準確噉描述人腦入面發生嘅事」。不過無可爭議嘅係，用心靈話假說嘅諗法嚟做 NLP 經已取得咗一定嘅成功：唔少 NLP 應用都會用人工神經網絡（尤其係遞迴神經網絡）嘅做法，用一個人工神經網絡處理資訊，然後將第一個神經網絡嘅output設嚟做另一個神經網絡嘅input，要第二個神經網絡將啲資訊轉換做語言或者文字－彷彿好似第一個網絡係「處理緊心靈話」噉，而就算將「人工神經網絡」換做第隻運算方法，上述嘅道理都行得通。噉講即係話，姑且勿論心靈話假說係咪準確噉描述得到人腦嘅語言認知，基於心靈話假說或者類似諗頭整出嚟嘅技術能夠俾到令人滿意嘅結果。
篇文用咗嘅行話或者專有名詞，英文名如下：
篇文引用咗以下呢啲文獻同網頁：