
自然語言處理 - 快速指南
自然語言處理 - 簡介
語言是一種藉助於說話、閱讀和寫作進行交流的方法。例如,我們思考、做決定、制定計劃等等,都是用自然語言,準確地說,是用詞語進行的。然而,在這個人工智慧時代擺在我們面前的一個重大問題是:我們能否以類似的方式與計算機進行交流?換句話說,人類能否用他們的自然語言與計算機交流?為計算機開發 NLP 應用是一項挑戰,因為計算機需要結構化資料,而人類語言是非結構化的,通常具有歧義性。
從這個意義上說,我們可以說自然語言處理 (NLP) 是計算機科學,特別是人工智慧 (AI) 的一個子領域,它關注的是使計算機能夠理解和處理人類語言。從技術上講,NLP 的主要任務是為計算機編寫程式,用於分析和處理海量的自然語言資料。
NLP 的歷史
我們將 NLP 的歷史劃分為四個階段。這些階段具有不同的關注點和風格。
第一階段(機器翻譯階段) - 20 世紀 40 年代後期至 60 年代後期
此階段的工作主要集中在機器翻譯 (MT) 上。這個階段是一個充滿熱情和樂觀主義的時期。
讓我們來看看第一階段包含的內容:
在 Booth & Richens 於 1949 年對機器翻譯進行調查和 Weaver 的備忘錄之後,NLP 的研究始於 20 世紀 50 年代初。
1954 年,喬治城-IBM 實驗展示了從俄語到英語的有限自動翻譯實驗。
同年,《機器翻譯》(MT) 期刊開始出版。
第一次國際機器翻譯 (MT) 會議於 1952 年舉行,第二次於 1956 年舉行。
1961 年,特丁頓國際機器翻譯語言和應用語言分析會議上發表的作品是這一階段的最高點。
第二階段(人工智慧影響階段)– 20 世紀 60 年代後期至 70 年代後期
在這個階段,所做的工作主要與世界知識及其在構建和操縱意義表示中的作用相關。因此,這個階段也稱為人工智慧風味階段。
此階段包括以下內容:
1961 年初,開始研究解決和構建資料庫或知識庫的問題。這項工作受到了人工智慧的影響。
同年,還開發了一個棒球問答系統。該系統的輸入是有限的,所涉及的語言處理很簡單。
Minsky (1968) 描述了一個更先進的系統。與棒球問答系統相比,該系統得到了認可,並提供了在解釋和響應語言輸入時對知識庫進行推理的需要。
第三階段(語法邏輯階段)– 20 世紀 70 年代後期至 80 年代後期
這個階段可以被描述為語法邏輯階段。由於上一階段實際系統構建的失敗,研究人員轉向使用邏輯進行人工智慧中的知識表示和推理。
第三階段包括以下內容:
在本世紀末,語法邏輯方法幫助我們獲得了強大的通用句法處理器,例如 SRI 的核心語言引擎和語篇表示理論,它們提供了一種解決更長篇語篇的方法。
在這個階段,我們獲得了一些實用的資源和工具,例如解析器,例如 Alvey 自然語言工具,以及更多可操作的和商業系統,例如用於資料庫查詢。
20 世紀 80 年代關於詞典的工作也指向了語法邏輯方法的方向。
第四階段(詞彙和語料庫階段)– 20 世紀 90 年代
我們可以將其描述為詞彙和語料庫階段。該階段採用了在 20 世紀 80 年代後期出現並日益產生影響的詞彙化語法方法。隨著用於語言處理的機器學習演算法的引入,本十年自然語言處理發生了革命。
人類語言的研究
語言是人類生活中至關重要的組成部分,也是我們行為中最根本的方面。我們可以主要以兩種形式體驗它——書面形式和口語形式。在書面形式中,它是將我們的知識一代一代傳承下去的一種方式。在口語形式中,它是人類在日常行為中相互協調的主要媒介。語言在各個學術學科中都有研究。每個學科都有自己的一套問題和解決這些問題的一套解決方案。
請參考下表以瞭解這一點:
學科 | 問題 | 工具 |
---|---|---|
語言學家 |
如何用詞語構成短語和句子? 什麼限制了句子的可能含義? |
關於形式良好性和含義的直覺。 結構的數學模型。例如,模型論語義學、形式語言理論。 |
心理語言學家 |
人類如何識別句子的結構? 如何識別詞語的含義? 理解何時發生? |
主要用於測量人類績效的實驗技術。 對觀測結果進行統計分析。 |
哲學家 |
詞語和句子如何獲得含義? 詞語如何識別物體? 什麼是含義? |
使用直覺進行自然語言論證。 邏輯和模型論等數學模型。 |
計算語言學家 |
我們如何識別句子的結構? 如何對知識和推理進行建模? 我們如何使用語言來完成特定任務? |
演算法 資料結構 表示和推理的形式模型。 人工智慧技術,如搜尋和表示方法。 |
語言中的歧義和不確定性
通常在自然語言處理中使用的歧義可以指能夠以多種方式理解的能力。簡單來說,我們可以說歧義是能夠以多種方式理解的能力。自然語言非常含糊不清。NLP 具有以下幾種型別的歧義:
詞彙歧義
單個詞的歧義稱為詞彙歧義。例如,將單詞“silver”視為名詞、形容詞或動詞。
句法歧義
當句子以不同的方式解析時,就會出現這種歧義。例如,句子“The man saw the girl with the telescope”。不清楚是男人看到拿著望遠鏡的女孩,還是他透過望遠鏡看到她。
語義歧義
當詞語本身的含義可能被誤解時,就會出現這種歧義。換句話說,當句子包含歧義詞或短語時,就會發生語義歧義。例如,句子“The car hit the pole while it was moving”存在語義歧義,因為解釋可以是“正在移動的汽車撞到了杆子”和“汽車撞到了正在移動的杆子”。
指代歧義
由於在語篇中使用指代實體而導致這種歧義。例如,馬跑上了山。山很陡峭。它很快累了。在這裡,“它”在兩種情況下指代不明確導致歧義。
語用歧義
這種歧義是指短語的上下文賦予其多種解釋的情況。簡單來說,我們可以說語用歧義是在陳述不明確的情況下產生的。例如,句子“我也喜歡你”可以有多種解釋,例如我喜歡你(就像你喜歡我一樣),我喜歡你(就像其他人一樣)。
NLP 階段
下圖顯示了自然語言處理中的階段或邏輯步驟:

形態學處理
這是 NLP 的第一階段。此階段的目的是將語言輸入塊分解為對應於段落、句子和單詞的標記集。例如,像“uneasy”這樣的詞可以分解成兩個子詞標記,如“un-easy”。
句法分析
這是 NLP 的第二階段。此階段的目的是雙重的:檢查句子是否格式良好,並將其分解成一個顯示不同單詞之間句法關係的結構。例如,像“The school goes to the boy”這樣的句子會被句法分析器或解析器拒絕。
語義分析
這是 NLP 的第三階段。此階段的目的是從文字中提取確切的含義,或者你可以說是詞典含義。檢查文字是否有意義。例如,語義分析器會拒絕像“Hot ice-cream”這樣的句子。
語用分析
這是 NLP 的第四階段。語用分析只是將存在於給定上下文中的實際物件/事件與在上一階段(語義分析)中獲得的物件引用相匹配。例如,句子“Put the banana in the basket on the shelf”可以有兩種語義解釋,語用分析器將在這兩種可能性之間進行選擇。
NLP - 語言資源
在本節中,我們將學習自然語言處理中的語言資源。
語料庫
語料庫是一組大型且結構化的機器可讀文字,這些文字是在自然的交流環境中產生的。它的複數是 corpora。它們可以透過不同的方式獲得,例如最初是電子的文字、口語的記錄和光學字元識別等。
語料庫設計的要素
語言是無限的,但語料庫的大小必須是有限的。為了使語料庫的大小有限,我們需要對文字型別進行抽樣並按比例包含廣泛的文字型別,以確保良好的語料庫設計。
現在讓我們學習一些語料庫設計的重要要素:
語料庫的代表性
代表性是語料庫設計的決定性特徵。兩位偉大的研究者——李奇和比伯的定義將幫助我們理解語料庫的代表性:
根據李奇 (1991) 的說法,“如果基於語料庫內容的發現可以推廣到所要代表的語言變體,則認為該語料庫代表了該語言變體”。
根據比伯 (1993) 的說法,“代表性是指樣本包含總體中全部變異範圍的程度”。
這樣,我們可以得出結論:語料庫的代表性取決於以下兩個因素:
均衡性——語料庫中包含的體裁範圍
抽樣——為每種體裁選擇的文字片段的方式。
語料庫均衡性
語料庫設計的另一個非常重要的因素是語料庫的均衡性——語料庫中包含的體裁範圍。我們已經學習過,一般語料庫的代表性取決於語料庫的均衡程度。均衡的語料庫涵蓋廣泛的文字類別,這些類別應該能夠代表該語言。我們沒有任何可靠的科學衡量標準來衡量均衡性,但最好的方法是依靠估計和直覺。換句話說,我們可以說,可接受的均衡性僅由其預期用途決定。
抽樣
語料庫設計的另一個重要因素是抽樣。語料庫的代表性和均衡性與抽樣密切相關。這就是為什麼我們可以說抽樣在語料庫構建中是不可避免的。
根據比伯 (1993) 的說法,“構建語料庫時首先要考慮的一些問題與整體設計有關:例如,包含的文字型別、文字數量、特定文字的選擇、文字中文字樣本的選擇以及文字樣本的長度。每一個都涉及一個抽樣決策,無論是有意識的還是無意識的。”
在獲取代表性樣本時,我們需要考慮以下幾點:
抽樣單位——指需要抽樣的單位。例如,對於書面文字,抽樣單位可以是報紙、期刊或書籍。
抽樣框——所有抽樣單位的列表稱為抽樣框。
總體——可以指所有抽樣單位的集合。它根據語言的產生、語言的接收或語言作為一種產物來定義。
語料庫規模
語料庫設計的另一個重要因素是其規模。語料庫應該有多大?這個問題沒有具體的答案。語料庫的規模取決於其預期用途以及以下一些實際考慮因素:
使用者預期的查詢型別。
使用者研究資料的方法。
資料來源的可獲得性。
隨著技術的進步,語料庫的規模也在不斷擴大。下表將幫助您瞭解語料庫規模是如何變化的:
年份 | 語料庫名稱 | 規模(以詞計) |
---|---|---|
20世紀60年代-70年代 | Brown 和 LOB 語料庫 | 100萬詞 |
20世紀80年代 | 伯明翰語料庫 | 2000萬詞 |
20世紀90年代 | 英國國家語料庫 | 1億詞 |
21世紀初 | 英語銀行語料庫 | 6.5億詞 |
在接下來的章節中,我們將看幾個語料庫的例子。
TreeBank 語料庫
它可以定義為經過語言學解析的文字語料庫,它註釋句子的句法或語義結構。Geoffrey Leech創造了“treebank”這個術語,它表示表示語法分析的最常見方法是透過樹狀結構。通常,Treebank是在已經標註了詞性標籤的語料庫的基礎上建立的。
TreeBank 語料庫的型別
語義 Treebank 和句法 Treebank 是語言學中最常見的兩種 Treebank 型別。現在讓我們進一步瞭解這些型別:
語義 Treebanks
這些 Treebanks 使用句子語義結構的形式化表示。它們在語義表示的深度上有所不同。機器人指令 Treebank、Geoquery、格羅寧根語義銀行、RoboCup 語料庫是一些語義 Treebanks 的例子。
句法 Treebanks
與語義 Treebanks 相反,句法 Treebank 系統的輸入是從解析的 Treebank 資料轉換而來的形式語言表示式。此類系統的輸出是基於謂詞邏輯的意義表示。迄今為止,已經建立了各種不同語言的句法 Treebanks。例如,賓夕法尼亞阿拉伯語 Treebank、哥倫比亞阿拉伯語 Treebank 是用阿拉伯語建立的句法 Treebanks。Sininca 句法 Treebank是用中文建立的。Lucy、Susane 和BLLIP WSJ 句法語料庫是用英語建立的。
TreeBank 語料庫的應用
以下是 Treebanks 的一些應用:
在計算語言學中
如果我們談論計算語言學,那麼 Treebanks 最好的用途是構建最先進的自然語言處理系統,例如詞性標註器、解析器、語義分析器和機器翻譯系統。
在語料庫語言學中
在語料庫語言學中,Treebanks 最好的用途是研究句法現象。
在理論語言學和心理語言學中
Treebanks 在理論語言學和心理語言學中的最佳用途是互動證據。
PropBank 語料庫
PropBank,更確切地說叫“命題庫”,是一個用動詞命題及其論元進行註釋的語料庫。該語料庫是面向動詞的資源;這裡的註釋與句法層面更密切相關。科羅拉多大學博爾德分校語言學系的 Martha Palmer 等人開發了它。我們可以使用 PropBank 這個術語作為普通名詞,指任何用命題及其論元進行註釋的語料庫。
在自然語言處理 (NLP) 中,PropBank 專案發揮了非常重要的作用。它有助於語義角色標註。
VerbNet (VN)
VerbNet (VN) 是英語中最大的、與領域無關的層次化詞彙資源,它包含其內容的語義和句法資訊。VN 是一個覆蓋範圍廣泛的動詞詞典,它與其他詞彙資源(如 WordNet、Xtag 和 FrameNet)具有對映關係。它被組織成動詞類別,透過細化和新增子類來擴充套件 Levin 類別,以實現類成員之間的句法和語義一致性。
每個 VerbNet (VN) 類包含:
一組句法描述或句法框架
用於描述諸如及物、不及物、介詞短語、結果狀語以及大量傾注交替等結構的論元結構的可能表面實現。
一組語義描述,例如 animate、human、organization
用於約束論元允許的主題角色型別,並且可以施加進一步的限制。這將有助於指示可能與主題角色相關的成分的句法性質。
WordNet
WordNet 由普林斯頓大學建立,是一個英語詞彙資料庫。它是 NLTK 語料庫的一部分。在 WordNet 中,名詞、動詞、形容詞和副詞被分組為稱為同義詞集 (Synsets) 的認知同義詞集。所有同義詞集都藉助概念語義和詞彙關係連線起來。其結構使其對自然語言處理 (NLP) 非常有用。
在資訊系統中,WordNet 用於各種目的,例如詞義消歧、資訊檢索、自動文字分類和機器翻譯。WordNet 最重要的用途之一是找出單詞之間的相似性。對於這項任務,各種演算法已在各種軟體包中實現,例如 Perl 中的 Similarity、Python 中的 NLTK 和 Java 中的 ADW。
NLP - 詞法分析
在本章中,我們將瞭解自然語言處理中的詞法分析。
正則表示式
正則表示式 (RE) 是一種用於指定文字搜尋字串的語言。RE 幫助我們使用模式中包含的特殊語法來匹配或查詢其他字串或字串集。正則表示式用於在 UNIX 和 MS WORD 中以相同的方式搜尋文字。我們有各種搜尋引擎使用許多正則表示式功能。
正則表示式的性質
以下是正則表示式的一些重要性質:
美國數學家 Stephen Cole Kleene 正式化了正則表示式語言。
RE 是用特殊語言編寫的公式,可用於指定簡單的字串類,即符號序列。換句話說,我們可以說 RE 是一種代數符號,用於表徵一組字串。
正則表示式需要兩件事,一是我們要搜尋的模式,二是我們要從中搜索的文字語料庫。
從數學上講,正則表示式可以定義如下:
ε 是一個正則表示式,表示該語言包含空字串。
φ 是一個正則表示式,表示它是一個空語言。
如果X 和Y 是正則表示式,則
X,Y
X.Y(XY 的連線)
X+Y(X 和 Y 的並集)
X*,Y*(X 和 Y 的 Kleene 閉包)
也是正則表示式。
如果一個字串是從上述規則匯出的,那麼它也是一個正則表示式。
正則表示式的例子
下表顯示了一些正則表示式的例子:
正則表示式 | 正則集 |
---|---|
(0 + 10*) | {0, 1, 10, 100, 1000, 10000, …} |
(0*10*) | {1, 01, 10, 010, 0010, …} |
(0 + ε)(1 + ε) | {ε, 0, 1, 01} |
(a+b)* | 它將是一組任意長度的 a 和 b 字串,也包括空字串,即 {ε, a, b, aa, ab, bb, ba, aaa……}。 |
(a+b)*abb | 它將是一組以字串 abb 結尾的 a 和 b 字串,即 {abb, aabb, babb, aaabb, ababb, …………}。 |
(11)* | 它將是一組包含偶數個 1 的字串,也包括空字串,即 {ε, 11, 1111, 111111, ……}。 |
(aa)*(bb)*b | 它將是一組包含偶數個 a 後跟奇數個 b 的字串,即 {b, aab, aabbb, aabbbbb, aaaab, aaaabbb, …………}。 |
(aa + ab + ba + bb)* | 它將是偶數長度的 a 和 b 字串,可以透過連線 aa、ab、ba 和 bb 的任何組合(包括空字串)來獲得,即 {aa, ab, ba, bb, aaab, aaba, …………}。 |
正則集及其性質
它可以定義為表示正則表示式的值的集合,並具有特定的性質。
正則集的性質
如果我們對兩個正則集進行並集運算,則結果集也將是正則的。
如果我們對兩個正則集進行交集運算,則結果集也將是正則的。
如果我們對正則集進行補集運算,則結果集也將是正則的。
如果我們對兩個正則集進行差集運算,則結果集也將是正則的。
如果對正則集合進行逆序操作,則結果集合也仍然是正則的。
如果對正則集合進行閉包運算,則結果集合也仍然是正則的。
如果對兩個正則集合進行連線運算,則結果集合也仍然是正則的。
有限狀態自動機
“自動機”一詞源於希臘語“αὐτόματα”,意為“自動的”。自動機的複數是自動機,可以定義為一種抽象的自動執行的計算裝置,它會自動按照預定的操作序列執行。
具有有限狀態的自動機稱為有限自動機 (FA) 或有限狀態自動機 (FSA)。
數學上,自動機可以用一個 5 元組 (Q, Σ, δ, q0, F) 來表示,其中:
Q 是一個有限的狀態集。
Σ 是一個有限的符號集,稱為自動機的字母表。
δ 是狀態轉移函式。
q0 是初始狀態,任何輸入都從該狀態開始處理 (q0 ∈ Q)。
F 是一個或多個最終狀態的集合 (F ⊆ Q)。
有限自動機、正則文法和正則表示式之間的關係
以下幾點將使我們更清晰地瞭解有限自動機、正則文法和正則表示式之間的關係:
眾所周知,有限狀態自動機是計算工作的理論基礎,而正則表示式是描述它們的一種方式。
可以說,任何正則表示式都可以實現為 FSA,任何 FSA 都可以用正則表示式來描述。
另一方面,正則表示式是表徵一種稱為正則語言的語言的方式。因此,可以說正則語言可以用 FSA 和正則表示式來描述。
正則文法是一種可以是右正則或左正則的形式文法,它是表徵正則語言的另一種方式。
下圖顯示了有限自動機、正則表示式和正則文法是描述正則語言的等效方式。

有限狀態自動機 (FSA) 的型別
有限狀態自動機分為兩種型別。讓我們看看這些型別是什麼。
確定性有限自動機 (DFA)
可以定義為一種有限自動機,對於每個輸入符號,我們都可以確定機器將轉移到的狀態。它具有有限數量的狀態,這就是為什麼該機器被稱為確定性有限自動機 (DFA) 的原因。
數學上,DFA可以用一個 5 元組 (Q, Σ, δ, q0, F) 來表示,其中:
Q 是一個有限的狀態集。
Σ 是一個有限的符號集,稱為自動機的字母表。
δ 是狀態轉移函式,其中 δ: Q × Σ → Q。
q0 是初始狀態,任何輸入都從該狀態開始處理 (q0 ∈ Q)。
F 是一個或多個最終狀態的集合 (F ⊆ Q)。
而在圖形上,DFA可以用稱為狀態圖的有向圖來表示,其中:
狀態由**頂點**表示。
轉移由帶標籤的**弧**表示。
初始狀態由**空入弧**表示。
最終狀態由**雙圈**表示。
DFA示例
假設一個 DFA 為
Q = {a, b, c},
Σ = {0, 1},
q0 = {a},
F = {c},
狀態轉移函式 δ 如表所示:
當前狀態 | 輸入為 0 時的下一狀態 | 輸入為 1 時的下一狀態 |
---|---|---|
A | a | B |
B | b | A |
C | c | C |
此 DFA 的圖形表示如下:

非確定性有限自動機 (NDFA)
可以定義為一種有限自動機,對於每個輸入符號,我們無法確定機器將轉移到的狀態,即機器可以轉移到任何狀態組合。它具有有限數量的狀態,這就是為什麼該機器被稱為非確定性有限自動機 (NDFA) 的原因。
數學上,NDFA可以用一個 5 元組 (Q, Σ, δ, q0, F) 來表示,其中:
Q 是一個有限的狀態集。
Σ 是一個有限的符號集,稱為自動機的字母表。
δ:是狀態轉移函式,其中 δ: Q × Σ → 2Q。
q0:是初始狀態,任何輸入都從該狀態開始處理 (q0 ∈ Q)。
F:是一個或多個最終狀態的集合 (F ⊆ Q)。
而在圖形上(與 DFA 相同),NDFA可以用稱為狀態圖的有向圖來表示,其中:
狀態由**頂點**表示。
轉移由帶標籤的**弧**表示。
初始狀態由**空入弧**表示。
最終狀態由雙**圈**表示。
NDFA示例
假設一個 NDFA 為
Q = {a, b, c},
Σ = {0, 1},
q0 = {a},
F = {c},
狀態轉移函式 δ 如表所示:
當前狀態 | 輸入為 0 時的下一狀態 | 輸入為 1 時的下一狀態 |
---|---|---|
A | a, b | B |
B | C | a, c |
C | b, c | C |
此 NDFA 的圖形表示如下:

形態分析
形態分析是指對詞素進行分析。我們可以將形態分析定義為識別單詞分解成較小的有意義單元(稱為詞素)併為其生成某種語言結構的問題。例如,我們可以將單詞 *foxes* 分解成兩個部分,*fox* 和 *-es*。我們可以看到,單詞 *foxes* 由兩個詞素組成,一個是 *fox*,另一個是 *-es*。
換句話說,形態學是研究:
詞的構成。
詞的起源。
詞的語法形式。
在詞的構成中使用字首和字尾。
語言的詞性是如何構成的。
詞素的型別
詞素是最小的意義單元,可以分為兩種型別:
詞幹
詞序
詞幹
它是單詞的核心意義單元。我們也可以說它是單詞的詞根。例如,在單詞 foxes 中,詞幹是 fox。
**詞綴**——顧名思義,它們為單詞添加了一些額外的意義和語法功能。例如,在單詞 foxes 中,詞綴是 -es。
此外,詞綴還可以分為以下四種類型:
**字首**——顧名思義,字首位於詞幹之前。例如,在單詞 unbuckle 中,un 是字首。
**字尾**——顧名思義,字尾位於詞幹之後。例如,在單詞 cats 中,-s 是字尾。
**中綴**——顧名思義,中綴插入詞幹內部。例如,單詞 cupful 可以透過使用 -s 作為中綴將其複數化,變成 cupsful。
**環綴**——它們位於詞幹之前和之後。英語中環綴的例子很少。一個很常見的例子是“A-ing”,我們可以使用 -A 位於詞幹之前,-ing 位於詞幹之後。
詞序
詞序將由形態分析決定。現在讓我們看看構建形態分析器所需的內容:
詞典
構建形態分析器的首要要求是詞典,其中包括詞幹和詞綴的列表以及關於它們的詳細資訊。例如,詞幹是名詞詞幹還是動詞詞幹等資訊。
形態句法
它基本上是詞素排序的模型。換句話說,該模型解釋了哪些詞素類可以在單詞中跟隨其他詞素類。例如,形態句法事實是,英語複數詞素總是跟在名詞之後,而不是在名詞之前。
拼寫規則
這些拼寫規則用於模擬單詞中發生的更改。例如,將 y 轉換為 ie 的規則,例如 city+s = cities 而不是 citys。
自然語言處理 - 語法分析
語法分析或解析或句法分析是自然語言處理的第三階段。此階段的目的是從文字中提取確切的含義,或者可以說從詞典中提取含義。語法分析檢查文字的含義是否符合形式語法的規則。例如,諸如“熱的冰淇淋”之類的句子將被語義分析器拒絕。
從這個意義上說,語法分析或解析可以定義為分析自然語言中符合形式語法規則的符號串的過程。“解析”一詞源於拉丁語“pars”,意思是“部分”。
解析器的概念
它用於實現解析任務。可以將其定義為設計用於接收輸入資料(文字)並在根據形式語法檢查語法正確性後給出輸入的結構化表示的軟體元件。它還構建一個數據結構,通常以解析樹或抽象語法樹或其他層次結構的形式存在。

解析器的主要作用包括:
報告任何語法錯誤。
從常見錯誤中恢復,以便可以繼續處理程式的其餘部分。
建立解析樹。
建立符號表。
生成中間表示 (IR)。
解析的型別
推導將解析分為以下兩種型別:
自頂向下解析
自底向上解析
自頂向下解析
在這種解析中,解析器從起始符號開始構建解析樹,然後嘗試將起始符號轉換為輸入。最常見的自頂向下解析形式使用遞迴過程來處理輸入。遞迴下降解析的主要缺點是回溯。
自底向上解析
在這種解析中,解析器從輸入符號開始,嘗試構建解析樹直至到達起始符號。
推導的概念
為了獲得輸入字串,我們需要一系列產生式規則。推導是一組產生式規則。在解析過程中,我們需要確定要替換的非終結符,以及要使用哪個產生式規則來替換非終結符。
推導的型別
在本節中,我們將學習兩種型別的推導,它們可以用來確定哪個非終結符要使用產生式規則替換:
最左推導
在最左推導中,輸入的句型從左到右進行掃描和替換。在這種情況下,句型稱為左句型。
最右推導
在最右推導中,輸入的句型從右到左進行掃描和替換。在這種情況下,句型稱為右句型。
語法樹的概念
語法樹可以定義為推導的圖形表示。推導的起始符號作為語法樹的根節點。在每棵語法樹中,葉子節點是終結符,內部節點是非終結符。語法樹的一個特性是,中序遍歷將產生原始輸入字串。
語法的概念
語法對於描述結構良好的程式的句法結構至關重要。從文學意義上講,它們表示自然語言對話的句法規則。自從英語、印地語等自然語言出現以來,語言學家就一直在試圖定義語法。
形式語言理論也適用於計算機科學領域,主要體現在程式語言和資料結構中。例如,在C語言中,精確的語法規則規定了如何從列表和語句中構成函式。
1956年,**諾姆·喬姆斯基**給出了語法的數學模型,該模型有效地用於編寫計算機語言。
數學上,語法G可以形式化地寫成一個4元組(N, T, S, P),其中:
N 或 VN = 非終結符集,即變數。
T 或 ∑ = 終結符集。
S = 起始符號,其中S ∈ N
P 表示終結符和非終結符的產生式規則。它具有α → β的形式,其中α和β是VN ∪ ∑上的字串,並且α至少有一個符號屬於VN
短語結構語法或成分語法
短語結構語法由諾姆·喬姆斯基提出,基於成分關係。這就是為什麼它也稱為成分語法。它與依存語法相反。
示例
在給出成分語法的示例之前,我們需要了解關於成分語法和成分關係的基本要點。
所有相關的框架都根據成分關係來看待句子結構。
成分關係源於拉丁語和希臘語語法的主謂劃分。
基本從句結構是用名詞短語NP和動詞短語VP來理解的。
我們可以將句子“這棵樹正在說明成分關係”寫成如下:

依存語法
它與成分語法相反,基於依存關係。它由呂西安·特斯尼爾提出。依存語法(DG)與成分語法相反,因為它缺乏短語節點。
示例
在給出依存語法的示例之前,我們需要了解關於依存語法和依存關係的基本要點。
在依存語法中,語言單位,即單詞,透過有向連結相互連線。
動詞成為從句結構的中心。
其他句法單元都透過有向連結連線到動詞。這些句法單元稱為依存關係。
我們可以將句子“這棵樹正在說明依存關係”寫成如下:

使用成分語法的語法樹稱為基於成分的語法樹;使用依存語法的語法樹稱為基於依存的語法樹。
上下文無關文法
上下文無關文法,也稱為CFG,是一種描述語言的表示法,也是正則文法的超集。它可以在下圖中看到:

CFG的定義
CFG由一組有限的語法規則組成,這些規則具有以下四個組成部分:
非終結符集
它用V表示。非終結符是句法變數,表示字串集,這些字串集進一步有助於定義由語法生成的語言。
終結符集
它也稱為標記,由Σ定義。字串是由終結符的基本符號構成的。
產生式集
它用P表示。該集合定義瞭如何組合終結符和非終結符。每個產生式(P)都由非終結符、箭頭和終結符(終結符的序列)組成。非終結符稱為產生式的左部,終結符稱為產生式的右部。
起始符號
產生式從起始符號開始。它用符號S表示。非終結符總是被指定為起始符號。
自然語言處理 - 語義分析
語義分析的目的是從文字中提取確切的含義,或者可以說字典含義。語義分析器的作用是檢查文字的意義。
我們已經知道詞法分析也處理單詞的含義,那麼語義分析與詞法分析有何不同呢?詞法分析基於較小的標記,而語義分析則關注較大的塊。這就是為什麼語義分析可以分為以下兩部分:
研究單個詞的含義
這是語義分析的第一部分,其中進行對單個詞含義的研究。這部分稱為詞彙語義。
研究單個詞的組合
在第二部分中,將組合單個單詞以在句子中提供含義。
語義分析最重要的任務是獲得句子的正確含義。例如,分析句子“ राम महान है。”在這個句子中,說話者談論的是 राम神,還是一個名叫 राम的人。這就是為什麼語義分析器獲得句子正確含義的工作很重要。
語義分析的要素
以下是語義分析的一些重要要素:
下義詞
它可以定義為泛指詞及其泛指詞例項之間的關係。這裡的泛指詞稱為上位詞,其例項稱為下義詞。例如,“顏色”這個詞是上位詞,“藍色”、“黃色”等是下義詞。
同音異義詞
它可以定義為拼寫相同或形式相同但含義不同且無關的詞。例如,“Bat”(蝙蝠)是一個同音異義詞,因為bat可以是擊球的工具,也可以是夜行動物。
多義詞
多義詞是一個希臘詞,意思是“許多符號”。它是一個具有不同但相關含義的詞或短語。換句話說,我們可以說多義詞具有相同的拼寫,但含義不同且相關。例如,“bank”(銀行)是一個多義詞,具有以下含義:
金融機構。
此類機構所在的建築物。
“依靠”的同義詞。
多義詞和同音異義詞的區別
多義詞和同音異義詞都具有相同的句法或拼寫。它們的主要區別在於,在多義詞中,詞的含義是相關的,但在同音異義詞中,詞的含義是不相關的。例如,如果我們談論同一個詞“Bank”,我們可以寫出“金融機構”或“河岸”的含義。在這種情況下,它將是同音異義詞的例子,因為這些含義彼此不相關。
同義詞
它是兩個詞彙項之間的關係,它們的形式不同,但表達相同或相近的含義。例如,“作者/作家”、“命運/天命”。
反義詞
它是兩個詞彙項之間的關係,它們的語義成分相對於一個軸具有對稱性。反義詞的範圍如下:
屬性的應用與否 - 例如“生/死”、“確定性/不確定性”
可擴充套件屬性的應用 - 例如“富/窮”、“熱/冷”
用法的應用 - 例如“父親/兒子”、“月亮/太陽”。
意義表示
語義分析建立句子含義的表示。但在深入瞭解與意義表示相關的概念和方法之前,我們需要理解語義系統的構建塊。
語義系統的構建塊
在單詞表示或單詞含義表示中,以下構建塊起著重要作用:
實體 - 它代表個人,例如特定的人、地點等。例如,哈里亞納邦、印度、 राम都是實體。
概念 - 它代表個人的一般類別,例如人、城市等。
關係 - 它表示實體和概念之間的關係。例如, राम是一個人。
謂詞 - 它表示動詞結構。例如,語義角色和格語法是謂詞的例子。
現在,我們可以理解,意義表示展示瞭如何將語義系統的構建塊組合在一起。換句話說,它展示瞭如何將實體、概念、關係和謂詞組合在一起以描述一種情況。它還可以對語義世界進行推理。
意義表示的方法
語義分析使用以下方法來表示含義:
一階謂詞邏輯(FOPL)
語義網路
框架
概念依賴(CD)
基於規則的架構
格語法
概念圖
意義表示的必要性
這裡出現了一個問題,為什麼我們需要意義表示?以下是同樣的原因:
將語言要素與非語言要素聯絡起來
第一個原因是,藉助意義表示,可以將語言要素與非語言要素聯絡起來。
表示詞彙層面的多樣性
藉助意義表示,可以在詞彙層面表示明確的規範形式。
可用於推理
意義表示可用於推理,以驗證世界上什麼是真實的,以及從語義表示中推斷知識。
詞彙語義
語義分析的第一部分,研究單個詞的含義,稱為詞彙語義。它還包括單詞、子詞、詞綴(子單元)、複合詞和短語。所有單詞、子詞等統稱為詞彙項。換句話說,我們可以說詞彙語義是詞彙項、句子含義和句子句法之間的關係。
以下是詞彙語義中涉及的步驟:
在詞彙語義中進行單詞、子詞、詞綴等的詞彙項分類。
在詞彙語義中對單詞、子詞、詞綴等詞彙項進行分解。
還分析了各種詞彙語義結構之間的差異和相似之處。
NLP - 詞義消歧
我們理解,單詞根據其在句子中的使用語境具有不同的含義。如果我們談論人類語言,那麼它們也是模稜兩可的,因為許多單詞可以根據其出現的語境以多種方式解釋。
在自然語言處理(NLP)中,詞義消歧可以定義為確定在特定語境中單詞的使用激活了單詞的哪個含義的能力。詞法歧義、句法歧義或語義歧義是任何NLP系統面臨的第一個問題之一。具有高精度水平的詞性(POS)標記器可以解決單詞的句法歧義。另一方面,解決語義歧義的問題稱為WSD(詞義消歧)。解決語義歧義比解決句法歧義更難。
例如,考慮單詞“bass”(低音/鱸魚)的兩個不同含義:
我能聽到低音。
他喜歡吃烤鱸魚。
單詞“bass”的出現清楚地表明瞭不同的含義。在第一句中,它指的是頻率,在第二句中,它指的是魚。因此,如果透過WSD消除歧義,則可以為上述句子分配正確的含義如下:
我能聽到低音/頻率的聲音。
他喜歡吃烤魚。
WSD的評估
WSD的評估需要以下兩個輸入:
詞典
WSD評估的第一個輸入是詞典,它用於指定要消除歧義的詞義。
測試語料庫
WSD所需的另一個輸入是高度標註的測試語料庫,其中包含目標或正確的詞義。測試語料庫可以分為兩種型別:
詞彙樣本 - 這種語料庫用於需要消除少量單詞歧義的系統。
全部單詞 - 這種語料庫用於需要消除一段連續文字中所有單詞歧義的系統。
詞義消歧 (WSD) 的方法和途徑
WSD的方法和途徑根據詞義消歧中使用的知識來源進行分類。
現在讓我們看看WSD的四種常用方法:
基於詞典或知識的方法
顧名思義,這些方法主要依賴於詞典、寶庫和詞彙知識庫來進行消歧。它們不使用語料庫證據進行消歧。Lesk方法是由Michael Lesk在1986年提出的開創性基於詞典的方法。Lesk演算法所基於的Lesk定義是“衡量上下文所有單詞的詞義定義之間的重疊”。然而,在2000年,Kilgarriff和Rosensweig將簡化的Lesk定義定義為“衡量單詞詞義定義與當前上下文之間的重疊”,這進一步意味著一次識別一個單詞的正確詞義。這裡的當前上下文是指周圍句子或段落中的詞集。
監督方法
對於消歧,機器學習方法利用語義標註語料庫進行訓練。這些方法假設上下文字身可以提供足夠的證據來消除歧義。在這些方法中,詞語知識和推理被認為是不必要的。上下文被表示為單詞的一組“特徵”。它還包括有關周圍單詞的資訊。支援向量機和基於記憶的學習是WSD最成功的監督學習方法。這些方法依賴於大量的以人工方式標註詞義的語料庫,建立這種語料庫的成本非常高。
半監督方法
由於缺乏訓練語料庫,大多數詞義消歧演算法使用半監督學習方法。這是因為半監督方法同時使用標記資料和未標記資料。這些方法只需要少量標註文字和大量普通未標註文字。半監督方法使用的一種技術是從種子資料中進行自舉。
無監督方法
這些方法假設相似的詞義出現在相似的上下文中。這就是為什麼可以透過使用某種上下文相似性度量來對詞語出現進行聚類,從而從文字中推匯出詞義。這項任務被稱為詞義歸納或辨別。無監督方法由於不依賴人工努力,因此具有克服知識獲取瓶頸的巨大潛力。
詞義消歧 (WSD) 的應用
詞義消歧 (WSD) 應用於幾乎所有語言技術應用中。
現在讓我們看看WSD的範圍:
機器翻譯
機器翻譯或MT是WSD最明顯的應用。在MT中,WSD完成對具有不同詞義的不同翻譯的單詞的詞彙選擇。MT中的詞義以目標語言中的單詞表示。大多數機器翻譯系統不使用顯式的WSD模組。
資訊檢索 (IR)
資訊檢索 (IR) 可以定義為一種軟體程式,它處理從文件儲存庫(特別是文字資訊)中組織、儲存、檢索和評估資訊。該系統基本上幫助使用者找到他們需要的資訊,但它不會明確地返回問題的答案。WSD用於解決提供給IR系統的查詢的歧義。與MT一樣,當前的IR系統也不顯式地使用WSD模組,它們依賴於使用者會在查詢中輸入足夠的上下文以僅檢索相關文件的概念。
文字挖掘和資訊提取 (IE)
在大多數應用中,WSD對於進行準確的文字分析是必要的。例如,WSD幫助智慧收集系統標記正確的單詞。例如,醫療智慧系統可能需要標記“非法藥物”而不是“醫療藥物”。
詞典編纂學
WSD和詞典編纂學可以迴圈協同工作,因為現代詞典編纂學是基於語料庫的。透過詞典編纂學,WSD提供了粗略的經驗意義分組以及統計上顯著的上下文意義指標。
詞義消歧 (WSD) 中的困難
以下是詞義消歧 (WSD) 面臨的一些困難:
詞典之間的差異
WSD的主要問題是確定單詞的詞義,因為不同的詞義可能非常密切相關。即使是不同的詞典和同義詞詞典也可能提供不同的單詞詞義劃分。
不同應用的不同演算法
WSD的另一個問題是,對於不同的應用可能需要完全不同的演算法。例如,在機器翻譯中,它採用目標詞選擇的形式;在資訊檢索中,不需要詞義清單。
評判者間差異
WSD的另一個問題是,WSD系統通常透過將其在任務上的結果與人類的任務進行比較來進行測試。這就是所謂的評判者間差異問題。
詞義離散性
WSD中的另一個困難是,單詞不能輕易地劃分為離散的子義。
自然語言話語處理
人工智慧最困難的問題是讓計算機處理自然語言,或者換句話說,自然語言處理是人工智慧最困難的問題。如果我們談論NLP中的主要問題,那麼NLP中的一個主要問題是話語處理——建立關於語句如何組合在一起形成連貫話語的理論和模型。實際上,語言總是由並置的、結構化的和連貫的句子群組成,而不是像電影一樣孤立且無關的句子。這些連貫的句子群被稱為話語。
連貫性概念
連貫性和話語結構在許多方面是相互關聯的。連貫性連同良好文字的屬性一起用於評估自然語言生成系統的輸出質量。這裡出現的問題是,文字連貫意味著什麼?假設我們從報紙的每一頁收集一個句子,那它會是一個話語嗎?當然不是。這是因為這些句子沒有表現出連貫性。連貫的話語必須具備以下特性:
話語之間存在的連貫關係
如果話語在其話語之間存在有意義的聯絡,則該話語將是連貫的。此屬性稱為連貫關係。例如,必須存在某種解釋來證明話語之間的聯絡。
實體之間的關係
使話語連貫的另一個屬性是,實體之間必須存在某種關係。這種連貫性稱為基於實體的連貫性。
話語結構
關於話語的一個重要問題是話語必須具有什麼樣的結構。這個問題的答案取決於我們對話語進行的分割。話語分割可以定義為確定大型話語的結構型別。話語分割非常難以實現,但對於資訊檢索、文字摘要和資訊提取等應用非常重要。
話語分割演算法
在本節中,我們將學習關於話語分割的演算法。這些演算法描述如下:
無監督話語分割
無監督話語分割通常表示為線性分割。我們可以藉助示例來理解線性分割的任務。例如,有一項任務是將文字分割成多段單元;這些單元代表原文的段落。這些演算法依賴於內聚力,內聚力可以定義為使用某些語言手段將文字單元聯絡在一起。另一方面,詞彙內聚力是指由兩個或多個單詞在兩個單元之間的關係所指示的內聚力,例如同義詞的使用。
監督話語分割
早期方法沒有任何手工標記的段落邊界。另一方面,監督話語分割需要具有邊界標記的訓練資料。獲取相同的資料非常容易。在監督話語分割中,話語標記或提示詞起著重要作用。話語標記或提示詞是指用於指示話語結構的單詞或短語。這些話語標記是特定於領域的。
文字連貫性
詞彙重複是查詢話語中結構的一種方法,但它不能滿足連貫話語的要求。為了實現連貫的話語,我們必須特別關注連貫關係。正如我們所知,連貫關係定義了話語中話語之間可能的聯絡。Hebb提出了以下幾種關係:
我們使用兩個術語S0和S1來表示兩個相關句子的含義:
結果
它推斷出術語S0所斷言的狀態可能導致S1所斷言的狀態。例如,兩句話顯示了結果關係: राम आग में फंस गया था। उसकी खाल जल गई। (Ram was caught in the fire. His skin burned.)
解釋
它推斷出S1所斷言的狀態可能導致S0所斷言的狀態。例如,兩句話顯示了關係: राम ने श्याम के दोस्त से लड़ाई की। वह नशे में था। (Ram fought with Shyam’s friend. He was drunk.)
平行
它從S0的斷言中推斷出p(a1,a2,…),從S1的斷言中推斷出p(b1,b2,…)。這裡對於所有i,ai和bi都是相似的。例如,兩句話是平行的: राम कार चाहता था। श्याम पैसे चाहता था。(Ram wanted a car. Shyam wanted money.)
詳述
它從兩個斷言——S0和S1中推斷出相同的命題P。例如,兩句話顯示了詳述關係: राम चंडीगढ़ से था। श्याम केरल से था。(Ram was from Chandigarh. Shyam was from Kerala.)
場合
當可以從S0的斷言中推斷出狀態變化時,其最終狀態可以從S1中推斷出來,反之亦然。例如,兩句話顯示了場合關係: राम ने किताब उठाई। उसने उसे श्याम को दे दिया।(Ram picked up the book. He gave it to Shyam.)
構建分層話語結構
整個話語的連貫性也可以透過連貫關係之間的分層結構來考慮。例如,以下段落可以表示為分層結構:
S1 - राम बैंक गया पैसे जमा करने के लिए। (Ram went to the bank to deposit money.)
S2 - फिर वह श्याम की कपड़े की दुकान के लिए ट्रेन में चढ़ गया। (He then took a train to Shyam’s cloth shop.)
S3 - वह कुछ कपड़े खरीदना चाहता था। (He wanted to buy some clothes.)
S4 - पार्टी के लिए उसके पास नए कपड़े नहीं थे। (He didn't have new clothes for the party.)
S5 - वह श्याम से उसके स्वास्थ्य के बारे में बात करना भी चाहता था। (He also wanted to talk to Shyam regarding his health.)

指代消解
從任何語篇中解釋句子是另一項重要的任務,為了實現這一點,我們需要知道談論的是誰或什麼實體。這裡,解釋參考是關鍵要素。指稱可以定義為用來表示實體或個體的語言表達。例如,在文章中,Ram,ABC銀行的經理,在一家商店看到了他的朋友Shyam。他去見他,像Ram、His、He這樣的語言表達就是指稱。
同樣地,指稱消解可以定義為確定哪些語言表達指的是哪些實體的任務。
指稱消解中使用的術語
我們在指稱消解中使用以下術語:
指稱表示式 - 用於進行指稱的自然語言表達稱為指稱表示式。例如,上面使用的文章就是一個指稱表示式。
指稱項 - 指的是被指稱的實體。例如,在最後一個例子中,Ram是一個指稱項。
共指 - 當兩個表示式用於指稱同一個實體時,它們被稱為共指。例如,Ram和he是共指的。
先行詞 - 該術語有權使用另一個術語。例如,Ram是he這個指稱的先行詞。
回指 & 回指的 - 它可以定義為對先前已引入句子的實體的指稱。而指稱表示式被稱為回指的。
語篇模型 - 包含對語篇中已提及的實體及其所參與關係的表示的模型。
指稱表示式的型別
現在讓我們看看不同型別的指稱表示式。下面描述了五種型別的指稱表示式:
不定名詞短語
這種型別的指稱代表對聽者來說是新的,引入語篇語境中的實體。例如,在句子“Ram有一天四處走動給他帶些食物”中,“some”是不定指稱。
定名詞短語
與上述相反,這種型別的指稱代表對聽者來說不是新的或可識別的,引入語篇語境中的實體。例如,在句子“我過去常讀《印度時報》”中,“《印度時報》”是定指稱。
代詞
它是定指稱的一種形式。例如,“Ram笑得像他能笑得一樣大聲”。單詞he代表代詞指稱表示式。
指示詞
這些指示詞的行為與簡單的定代詞不同。例如,“this”和“that”是指示代詞。
專有名詞
這是最簡單的指稱表示式型別。它也可以是人、組織和地點的名稱。例如,在上面的例子中,Ram是專有名詞指稱表示式。
指稱消解任務
下面描述了兩個指稱消解任務。
共指消解
它是查詢文字中指稱同一實體的指稱表示式的任務。簡單來說,它是查詢共指表示式的任務。一組共指表示式稱為共指鏈。例如,He、Chief Manager和His——這些是第一個例子中給出的文章中的指稱表示式。
共指消解的約束
在英語中,共指消解的主要問題是代詞it。其背後的原因是代詞it有多種用法。例如,它可以像he和she一樣指稱。代詞it也指稱那些不指稱特定事物的事物。例如,“It’s raining.”,“It is really good.”
代詞回指消解
與共指消解不同,代詞回指消解可以定義為為單個代詞查詢先行詞的任務。例如,代詞是his,代詞回指消解的任務是找到單詞Ram,因為Ram是先行詞。
詞性標註 (PoS)
標註是一種分類,可以定義為自動為詞元分配描述符的任務。這裡的描述符稱為標籤,它可以表示詞性、語義資訊等等。
現在,如果我們談論詞性標註 (PoS),那麼它可以定義為為給定單詞分配詞性之一的過程。它通常被稱為POS標註。簡單來說,我們可以說POS標註是為句子中的每個單詞貼上其適當詞性的任務。我們已經知道,詞性包括名詞、動詞、副詞、形容詞、代詞、連詞及其子類別。
大多數POS標註屬於基於規則的POS標註、隨機POS標註和基於轉換的標註。
基於規則的POS標註
最古老的標註技術之一是基於規則的POS標註。基於規則的標註器使用詞典或詞庫來獲取對每個單詞進行標註的可能標籤。如果一個單詞有多個可能的標籤,那麼基於規則的標註器將使用手工編寫的規則來識別正確的標籤。透過分析單詞的語言特徵及其前面和後面的單詞,也可以在基於規則的標註中執行消歧。例如,假設一個單詞的前面單詞是冠詞,那麼這個單詞必須是名詞。
顧名思義,基於規則的POS標註中所有此類資訊都以規則的形式編碼。這些規則可以是:
上下文模式規則
或者,作為編譯成有限狀態自動機的正則表示式,與詞彙上模稜兩可的句子表示相交。
我們也可以透過其兩階段架構來理解基於規則的POS標註:
第一階段 - 在第一階段,它使用詞典為每個單詞分配一系列潛在的詞性。
第二階段 - 在第二階段,它使用大量手工編寫的消歧規則來將列表縮減為每個單詞的單個詞性。
基於規則的POS標註的特性
基於規則的POS標註器具有以下特性:
這些標註器是知識驅動的標註器。
基於規則的POS標註中的規則是手動構建的。
資訊以規則的形式編碼。
我們有一些有限數量的規則,大約1000條左右。
平滑和語言建模在基於規則的標註器中是明確定義的。
隨機POS標註
另一種標註技術是隨機POS標註。現在,這裡出現的問題是哪個模型可以是隨機的。包含頻率或機率(統計)的模型可以稱為隨機模型。任何數量的不同方法都可以應用於詞性標註問題,這些方法都可以被稱為隨機標註器。
最簡單的隨機標註器應用以下方法進行POS標註:
詞頻方法
在這種方法中,隨機標註器根據單詞與特定標籤一起出現的機率來消歧單詞。我們也可以說,在訓練集中與單詞一起出現頻率最高的標籤是分配給該單詞模稜兩可例項的標籤。這種方法的主要問題是它可能產生不可接受的標籤序列。
標籤序列機率
這是隨機標註的另一種方法,其中標註器計算給定標籤序列出現的機率。它也稱為n-gram方法。之所以這樣稱呼,是因為給定單詞的最佳標籤是由它與前n個標籤一起出現的機率決定的。
隨機POS標註的特性
隨機POS標註器具有以下特性:
這種POS標註基於標籤出現的機率。
它需要訓練語料庫。
對於語料庫中不存在的單詞,將沒有機率。
它使用不同的測試語料庫(不同於訓練語料庫)。
這是最簡單的POS標註,因為它選擇訓練語料庫中與單詞相關的最頻繁的標籤。
基於轉換的標註
基於轉換的標註也稱為Brill標註。它是基於轉換學習 (TBL) 的一個例項,這是一種用於將POS自動標註到給定文字的基於規則的演算法。TBL允許我們以易於閱讀的形式擁有語言知識,透過使用轉換規則將一種狀態轉換為另一種狀態。
它從前面解釋的兩種標註器——基於規則的和隨機的——中汲取靈感。如果我們看到基於規則的和基於轉換的標註器之間的相似之處,那麼就像基於規則的一樣,它也基於指定哪些標籤需要分配給哪些單詞的規則。另一方面,如果我們看到隨機的和基於轉換的標註器之間的相似之處,那麼就像隨機的一樣,它是一種機器學習技術,其中規則是從資料中自動歸納的。
基於轉換學習 (TBL) 的工作原理
為了理解基於轉換的標註器的工作原理和概念,我們需要理解基於轉換學習的工作原理。考慮以下步驟以理解TBL的工作原理:
從解決方案開始 - TBL通常從問題的某個解決方案開始,並迴圈工作。
選擇最有利的轉換 - 在每個迴圈中,TBL將選擇最有利的轉換。
應用於問題 - 上一步中選擇的轉換將應用於問題。
當步驟2中選擇的轉換不再增加更多價值或沒有更多轉換可供選擇時,演算法將停止。這種學習最適合分類任務。
基於轉換學習 (TBL) 的優勢
TBL的優勢如下:
我們學習少量簡單的規則,這些規則足以進行標註。
TBL中的開發和除錯非常容易,因為學習的規則易於理解。
標註的複雜性降低了,因為在TBL中,機器學習規則和人工生成的規則交織在一起。
基於轉換的標註器比馬爾可夫模型標註器快得多。
基於轉換學習 (TBL) 的缺點
TBL的缺點如下:
基於轉換學習 (TBL) 不提供標籤機率。
在TBL中,訓練時間非常長,尤其是在大型語料庫上。
隱馬爾可夫模型 (HMM) POS標註
在深入研究HMM POS標註之前,我們必須理解隱馬爾可夫模型 (HMM) 的概念。
隱馬爾可夫模型
HMM模型可以定義為雙重嵌入的隨機模型,其中底層隨機過程是隱藏的。這個隱藏的隨機過程只能透過另一組產生觀測序列的隨機過程來觀察。
示例
例如,進行了一系列隱藏的拋硬幣實驗,我們只看到由正面和反面組成的觀察序列。這個過程的實際細節——使用了多少枚硬幣,選擇的順序——對我們來說是隱藏的。透過觀察這一系列的正面和反面,我們可以構建幾個隱馬爾可夫模型 (HMM) 來解釋這個序列。以下是針對此問題的一種隱馬爾可夫模型形式:

我們假設HMM中有兩個狀態,每個狀態對應於選擇不同的有偏差的硬幣。以下矩陣給出狀態轉移機率:
$$A = \begin{bmatrix}a11 & a12 \\a21 & a22 \end{bmatrix}$$
這裡:
aij = 從一個狀態轉移到另一個狀態的機率,從i到j。
a11 + a12 = 1 且 a21 + a22 =1
P1 = 第一枚硬幣出現正面的機率,即第一枚硬幣的偏差。
P2 = 第二枚硬幣出現正面的機率,即第二枚硬幣的偏差。
我們也可以建立一個假設有3枚或更多硬幣的HMM模型。
這樣,我們可以透過以下元素來描述HMM:
N,模型中狀態的數量(在上面的例子中N=2,只有兩個狀態)。
M,每個狀態下可能出現的不同觀察結果的數量(在上面的例子中M=2,即H或T)。
A,狀態轉移機率分佈——上面例子中的矩陣A。
P,每個狀態下可觀察符號的機率分佈(在我們的例子中是P1和P2)。
I,初始狀態分佈。
HMM在詞性標註中的應用
詞性標註過程是找到最有可能生成給定詞序列的標籤序列的過程。我們可以使用隱馬爾可夫模型 (HMM) 對此詞性過程進行建模,其中標籤是產生可觀察輸出(即詞語)的隱藏狀態。
在數學上,在詞性標註中,我們總是感興趣的是找到最大化以下值的標籤序列 (C):
P (C|W)
其中:
C = C1, C2, C3... CT
W = W1, W2, W3, WT
另一方面,事實是我們需要大量的統計資料才能合理地估計這種序列。然而,為了簡化問題,我們可以應用一些數學變換以及一些假設。
使用HMM進行詞性標註是貝葉斯推理的一個特例。因此,我們將首先使用貝葉斯規則重新表述這個問題,該規則指出上述條件機率等於:
(PROB (C1,..., CT) * PROB (W1,..., WT | C1,..., CT)) / PROB (W1,..., WT)
在所有這些情況下,我們可以消除分母,因為我們感興趣的是找到最大化上述值的序列C。這不會影響我們的答案。現在,我們的問題簡化為找到最大化以下序列C:
PROB (C1,..., CT) * PROB (W1,..., WT | C1,..., CT) (1)
即使將問題簡化為上述表示式,也需要大量的資料。我們可以對上述表示式中的兩個機率做出合理的獨立性假設來克服這個問題。
第一個假設
一個標籤的機率取決於之前的標籤(二元模型)或之前的兩個標籤(三元模型)或之前的n個標籤(n元模型),這可以用以下數學公式解釋:
PROB (C1,..., CT) = Πi=1..T PROB (Ci|Ci-n+1…Ci-1) (n元模型)
PROB (C1,..., CT) = Πi=1..T PROB (Ci|Ci-1) (二元模型)
句子的開頭可以透過假設每個標籤的初始機率來解釋。
PROB (C1|C0) = PROB initial (C1)
第二個假設
上述公式(1)中的第二個機率可以透過假設一個詞出現在一個類別中的機率與前面或後面類別中的詞無關來近似,這可以用以下數學公式解釋:
PROB (W1,..., WT | C1,..., CT) = Πi=1..T PROB (Wi|Ci)
現在,根據上述兩個假設,我們的目標簡化為找到一個最大化以下序列C:
Πi=1...T PROB(Ci|Ci-1) * PROB(Wi|Ci)
現在這裡出現的問題是,將問題轉換成上述形式是否真的幫助了我們。答案是肯定的。如果我們有一個大型標註語料庫,那麼上述公式中的兩個機率可以計算如下:
PROB (Ci=VERB|Ci-1=NOUN) = (動詞出現在名詞後面的例項數)/(名詞出現的例項數) (2)
PROB (Wi|Ci) = (Wi出現在Ci中的例項數)/(Ci出現的例項數) (3)
自然語言處理 - 開篇
本章,我們將討論自然語言處理中的自然語言入門。首先,讓我們先了解什麼是自然語言語法。
自然語言語法
對於語言學家來說,語言是一組任意的語音符號。我們可以說語言是創造性的,受規則支配的,同時也是先天性和普遍性的。另一方面,它也是人性的。不同人的語言性質不同。關於語言的性質有很多誤解。這就是為什麼理解模稜兩可的術語“語法”的含義非常重要的原因。在語言學中,語法可以定義為語言運作所遵循的規則或原則。廣義上,我們可以將語法分為兩類:
描寫語法
語言學家和語法學家用來描述說話者語法的規則集合稱為描寫語法。
規範語法
這是語法的另一種意義,它試圖維持語言的正確性標準。這一類別與語言的實際運作關係不大。
語言的組成部分
語言研究被劃分為相互關聯的組成部分,這些組成部分是語言學研究的約定俗成且任意的劃分。這些組成部分的解釋如下:
音系學
語言的第一個組成部分是音系學。它是對特定語言語音的研究。這個詞的起源可以追溯到希臘語,其中“phone”的意思是聲音或語音。音韻學的一個分支——語音學,是從語音的產生、感知或物理屬性的角度研究人類語言的語音。國際音標 (IPA) 是一種以規範的方式表示人類語音的工具,用於音系學的研究。在IPA中,每個書寫符號都代表一個且只有一個語音,反之亦然。
音位
它可以定義為一種聲音單位,它使一種語言中的一個詞與另一個詞區分開來。在語言學中,音位用斜線括起來。例如,音位/k/出現在諸如kit、skit等詞中。
形態學
它是語言的第二個組成部分。它是對特定語言中詞的結構和分類的研究。這個詞的起源來自希臘語,其中“morphe”的意思是“形式”。形態學考慮的是一種語言中詞的構成原則。換句話說,聲音如何組合成有意義的單位,如字首、字尾和詞根。它還考慮瞭如何將單詞分組到詞類中。
詞素
在語言學中,形態學分析的抽象單位,對應於單個詞的一組形式,稱為詞素。詞素在句中的使用方式由其語法類別決定。詞素可以是單個詞或多個詞。例如,單詞“talk”就是一個單個詞詞素的例子,它可能有許多語法變體,如talks、talked和talking。多詞詞素可以由多個拼寫片語成。例如,speak up、pull through等是多詞詞素的例子。
句法
它是語言的第三個組成部分。它是對將單詞組合成更大單位的順序和排列的研究。這個詞可以追溯到希臘語,其中suntassein的意思是“按順序排列”。它研究句子型別及其結構、從句和短語。
語義學
它是語言的第四個組成部分。它是研究如何表達意義的學科。意義可以與外部世界相關,也可以與句子的語法相關。這個詞可以追溯到希臘語,其中semainein的意思是“表示”、“顯示”、“訊號”。
語用學
它是語言的第五個組成部分。它是研究語言的功能及其在語境中的使用的學科。這個詞的起源可以追溯到希臘語,其中“pragma”的意思是“行為”、“事件”。
語法範疇
語法範疇可以定義為語言語法中的一類單位或特徵。這些單位是語言的構成要素,並共享一組共同的特徵。語法範疇也稱為語法特徵。
語法範疇的清單如下:
數
這是最簡單的語法範疇。我們有兩個與這個範疇相關的術語:單數和複數。單數是“一”的概念,而複數是“多於一”的概念。例如,dog/dogs,this/these。
性
語法性由人稱代詞和第三人稱的變化來表達。語法性的例子是單數:he、she、it;第一和第二人稱形式:I、we和you;第三人稱複數形式they,是普通性或中性。
人稱
另一個簡單的語法範疇是人稱。在此之下,識別出以下三個術語:
第一人稱 - 說話者被識別為第一人稱。
第二人稱 - 聽者或被談話者被識別為第二人稱。
第三人稱 - 我們談論的人或物被識別為第三人稱。
格
這是最困難的語法範疇之一。它可以定義為名詞短語 (NP) 功能的指示,或名詞短語與動詞或句子中其他名詞短語的關係。我們在人稱代詞和疑問代詞中表達了以下三種格:
主格 − 它是主語的功能。例如,I、we、you、he、she、it、they和who都是主格。
屬格 − 它是所有格的功能。例如,my/mine、our/ours、his、her/hers、its、their/theirs、whose都是屬格。
賓格 − 它是賓語的功能。例如,me、us、you、him、her、them、whom都是賓格。
程度
這個語法範疇與形容詞和副詞有關。它包含以下三個等級 −
原級 − 它表達一種性質。例如,big、fast、beautiful都是原級。
比較級 − 它表達兩種事物中一種性質的更高程度或強度。例如,bigger、faster、more beautiful都是比較級。
最高階 − 它表達三種或更多事物中一種性質的最高程度或強度。例如,biggest、fastest、most beautiful都是最高階。
限定和非限定
這兩個概念都很簡單。限定性,正如我們所知,指的是說話者或聽者已知、熟悉或可識別的指稱。另一方面,非限定性指的是未知或不熟悉的指稱。這個概念可以在冠詞與名詞的共現中理解 −
定冠詞 − the
不定冠詞 − a/an
時態
這個語法範疇與動詞有關,可以定義為對動作時間的語言表達。時態建立了一種關係,因為它表示事件相對於說話時刻的時間。大體上,它有以下三種類型 −
現在時 − 表示動作在現在發生的。例如,Ram works hard。( राम मेहनत करता है)
過去時 − 表示動作發生在現在時刻之前。例如,it rained。(雨下了)
將來時 − 表示動作發生在現在時刻之後。例如,it will rain。(雨會下)
體
這個語法範疇可以定義為對事件的視角。它可以是以下型別 −
完成體 − 從這個角度來看,事件是完整和完整的。例如,英語中的簡單過去時,如yesterday I met my friend,就是完成體,因為它將事件視為完整和整體的。
未完成體 − 從這個角度來看,事件是正在進行的和不完整的。例如,英語中的現在分詞時態,如I am working on this problem,就是未完成體,因為它將事件視為不完整和正在進行的。
語氣
這個語法範疇有點難以定義,但簡單地說,它是說話者對所說內容的態度的表達。它也是動詞的語法特徵。它不同於語法時態和語法體。語氣的例子有陳述語氣、疑問語氣、祈使語氣、命令語氣、虛擬語氣、可能語氣、願望語氣、動名詞和分詞。
一致
它也稱為一致性。當一個詞根據它所關聯的其他詞而發生變化時,就會發生這種情況。換句話說,它涉及使某些語法範疇的值在不同的詞或詞性之間保持一致。以下是基於其他語法範疇的一致性 −
基於人稱的一致 − 它是主語和謂語動詞之間的一致。例如,我們總是用“I am”和“He is”,但決不用“He am”和“I is”。
基於數的一致 − 這種一致性發生在主語和謂語動詞之間。在這種情況下,第一人稱單數、第二人稱複數等有特定的動詞形式。例如,第一人稱單數:I really am,第二人稱複數:We really are,第三人稱單數:The boy sings,第三人稱複數:The boys sing。
基於性別的的一致 − 在英語中,代詞和先行詞在性別上保持一致。例如,He reached his destination. The ship reached her destination.
基於格的一致 − 這種一致性不是英語的重要特徵。例如,誰先來——他還是他的妹妹?
口語語法
書面英語和口語英語語法有很多共同點,但與此同時,它們在許多方面也存在差異。以下特徵區分了口語英語和書面英語語法 −
語流不暢和修復
這個顯著特徵使口語英語和書面英語語法彼此不同。它分別被稱為語流不暢現象,統稱為修復現象。語流不暢包括使用以下內容 −
填充詞 − 有時在句子中間,我們會使用一些填充詞。它們被稱為填充詞或填充停頓。此類詞的例子是uh和um。
需修復部分和修復 − 句子中間重複的詞段稱為需修復部分。在同一詞段中,更改的詞稱為修復。考慮以下例子以理解這一點 −
Does ABC airlines offer any one-way flights uh one-way fares for 5000 rupees?
在上面的句子中,“one-way flight”是需修復部分,“one-way fares”是修復。
重新開始
在填充停頓之後,會發生重新開始。例如,在上面的句子中,當說話者開始詢問單程航班然後停頓,用填充停頓糾正自己,然後重新開始詢問單程票價時,就會發生重新開始。
詞語碎片
有時我們用較小的詞語碎片來說話。例如,wwha-what is the time? 這裡的詞w-wha是詞語碎片。
NLP - 資訊檢索
資訊檢索 (IR) 可以定義為一種軟體程式,它處理從文件儲存庫(特別是文字資訊)中組織、儲存、檢索和評估資訊。該系統幫助使用者找到他們需要的資訊,但它不會明確地返回問題的答案。它告知可能包含所需資訊的文件的存在和位置。滿足使用者需求的文件稱為相關文件。完美的 IR 系統只會檢索相關文件。
藉助下圖,我們可以理解資訊檢索 (IR) 的過程 −

從上圖可以清楚地看出,需要資訊的使用者必須以自然語言查詢的形式提出請求。然後,IR 系統將透過檢索相關輸出(以文件形式)來響應所需資訊。
資訊檢索 (IR) 系統中的經典問題
IR 研究的主要目標是開發一個模型,用於從文件儲存庫中檢索資訊。在這裡,我們將討論一個經典問題,稱為即席檢索問題,它與 IR 系統有關。
在即席檢索中,使用者必須輸入用自然語言描述所需資訊的查詢。然後,IR 系統將返回與所需資訊相關的所需文件。例如,假設我們在網際網路上搜索某些內容,它會提供一些根據我們的要求相關的精確頁面,但也可能有一些不相關的頁面。這是由於即席檢索問題造成的。
即席檢索的方面
以下是 IR 研究中解決的即席檢索的一些方面 −
使用者如何藉助相關反饋來改進查詢的原始表達?
如何實現資料庫合併,即如何將來自不同文字資料庫的結果合併到一個結果集中?
如何處理部分損壞的資料?哪些模型適合這種情況?
資訊檢索 (IR) 模型
在數學上,模型被用於許多科學領域,其目的是理解現實世界中的一些現象。資訊檢索模型預測並解釋使用者將找到什麼與給定查詢相關。IR 模型基本上是一個模式,它定義了上述檢索過程的各個方面,幷包含以下內容 −
文件模型。
查詢模型。
比較查詢和文件的匹配函式。
在數學上,檢索模型包含 −
D − 文件的表示。
Q − 查詢的表示。
F − D、Q 的建模框架以及它們之間關係。
R (q,di) − 一個相似度函式,它根據查詢對文件進行排序。它也稱為排序。
資訊檢索 (IR) 模型的型別
資訊模型 (IR) 模型可以分為以下三種模型 −
經典 IR 模型
它是最簡單、最易於實現的 IR 模型。該模型基於很容易識別和理解的數學知識。布林型、向量型和機率型是三種經典的 IR 模型。
非經典 IR 模型
它與經典 IR 模型完全相反。這種 IR 模型基於相似性、機率、布林運算以外的原理。資訊邏輯模型、情境理論模型和互動模型是非經典 IR 模型的例子。
替代 IR 模型
它是經典 IR 模型的改進,它利用了其他領域的一些特定技術。聚類模型、模糊模型和潛在語義索引 (LSI) 模型是替代 IR 模型的例子。
資訊檢索 (IR) 系統的設計特徵
現在讓我們學習一下 IR 系統的設計特徵 −
倒排索引
大多數 IR 系統的主要資料結構是倒排索引的形式。我們可以將倒排索引定義為一種資料結構,它列出每個單詞的所有包含它的文件以及在文件中出現的頻率。它使得搜尋查詢詞的“命中”變得容易。
停用詞消除
停用詞是那些高頻詞,這些詞被認為不太可能對搜尋有用。它們的語義權重較低。所有此類詞都位於稱為停用詞列表的列表中。例如,冠詞“a”、“an”、“the”和介詞如“in”、“of”、“for”、“at”等是停用詞的例子。停用詞列表可以顯著減少倒排索引的大小。根據齊夫定律,包含幾十個詞的停用詞列表可將倒排索引的大小減少近一半。另一方面,有時停用詞的消除可能會導致對搜尋有用的詞的消除。例如,如果我們從“Vitamin A”中消除字母“A”,那麼它將沒有任何意義。
詞幹提取
詞幹提取是形態分析的簡化形式,它是一個啟發式過程,透過去除單詞的詞尾來提取單詞的基本形式。例如,“laughing”、“laughs”、“laughed”這幾個詞會被詞幹提取成詞根“laugh”。
在接下來的章節中,我們將討論一些重要且有用的資訊檢索模型。
布林模型
它是資訊檢索 (IR) 最古老的模型。該模型基於集合論和布林代數,其中文件是術語的集合,查詢是術語上的布林表示式。布林模型可以定義為:
D − 一組單詞,即文件中存在的索引項。這裡,每個術語要麼存在 (1),要麼不存在 (0)。
Q − 一個布林表示式,其中術語是索引項,運算子是邏輯積 − AND,邏輯和 − OR 和邏輯差 − NOT
F − 基於術語集合和文件集合的布林代數
如果我們談論相關反饋,那麼在布林 IR 模型中,相關性預測可以定義如下:
R − 當且僅當文件滿足查詢表示式時,才預測該文件與查詢表示式相關:
((𝑡𝑒𝑥𝑡 ˅ 𝑖𝑛𝑓𝑜𝑟𝑚𝑎𝑡𝑖𝑜𝑛) ˄ 𝑟𝑒𝑟𝑖𝑒𝑣𝑎𝑙 ˄ ˜ 𝑡ℎ𝑒𝑜𝑟𝑦)
我們可以將查詢詞解釋為文件集合的明確定義。
例如,查詢詞“economic”定義了用術語“economic”索引的文件集合。
現在,使用布林 AND 運算子組合術語後的結果是什麼?它將定義一個文件集合,該集合小於或等於任何單個術語的文件集合。例如,包含術語“social”和“economic”的查詢將產生用這兩個術語都進行索引的文件集合。換句話說,是兩個集合的交集。
現在,使用布林 OR 運算子組合術語後的結果是什麼?它將定義一個文件集合,該集合大於或等於任何單個術語的文件集合。例如,包含術語“social”或“economic”的查詢將產生用術語“social”或“economic”進行索引的文件集合。換句話說,是兩個集合的並集。
布林模型的優點
布林模型的優點如下:
基於集合的最簡單模型。
易於理解和實現。
它只檢索精確匹配。
它讓使用者對系統有掌控感。
布林模型的缺點
布林模型的缺點如下:
該模型的相似度函式是布林函式。因此,不會有部分匹配。這可能會讓使用者感到惱火。
在這個模型中,布林運算子的使用比關鍵詞的影響更大。
查詢語言表達能力強,但也比較複雜。
檢索到的文件沒有排名。
向量空間模型
由於布林模型上述缺點,Gerard Salton 和他的同事提出了一種基於 Luhn 相似性準則的模型。Luhn 提出的相似性準則指出:“兩種表示在給定元素及其分佈上越一致,則它們代表相似資訊的機率就越高。”
請考慮以下要點,以便更好地理解向量空間模型:
索引表示(文件)和查詢被視為嵌入在高維歐幾里得空間中的向量。
文件向量與查詢向量的相似性度量通常是它們之間角度的餘弦值。
餘弦相似度度量公式
餘弦是歸一化點積,可以用以下公式計算:
$$Score \lgroup \vec{d} \vec{q} \rgroup= \frac{\sum_{k=1}^m d_{k}\:.q_{k}}{\sqrt{\sum_{k=1}^m\lgroup d_{k}\rgroup^2}\:.\sqrt{\sum_{k=1}^m}m\lgroup q_{k}\rgroup^2 }$$
$$Score \lgroup \vec{d} \vec{q}\rgroup =1\:when\:d =q $$
$$Score \lgroup \vec{d} \vec{q}\rgroup =0\:when\:d\:and\:q\:share\:no\:items$$
帶有查詢和文件的向量空間表示
查詢和文件由二維向量空間表示。術語為“car”和“insurance”。向量空間中有一個查詢和三個文件。

針對術語“car”和“insurance”的排名最高的文件將是文件d2,因為q和d2之間的角度最小。其原因是“car”和“insurance”這兩個概念在d2中都很突出,因此權重較高。另一方面,d1和d3也提到了這兩個術語,但在每種情況下,其中一個術語都不是文件中的核心重要術語。
詞項權重
詞項權重指的是向量空間中詞項的權重。詞項的權重越高,該詞項對餘弦值的影響就越大。模型應該為更重要的詞項分配更高的權重。現在這裡出現的問題是如何對它進行建模。
一種方法是將文件中的詞數作為其詞項權重。但是,您認為這是一種有效的方法嗎?
另一種更有效的方法是使用詞頻 (tfij)、文件頻率 (dfi) 和集合頻率 (cfi)。
詞頻 (tfij)
它可以定義為wi在dj中出現的次數。詞頻捕捉到的資訊是某個詞在給定文件中的顯著程度,換句話說,詞頻越高,該詞就越能很好地描述該文件的內容。
文件頻率 (dfi)
它可以定義為集合中包含wi的文件總數。它是資訊量的一個指標。與語義不集中的詞不同,語義集中的詞會在文件中出現多次。
集合頻率 (cfi)
它可以定義為wi在集合中出現的總次數。
數學上,$df_{i}\leq cf_{i}\:and\:\sum_{j}tf_{ij} = cf_{i}$
文件頻率權重的形式
現在讓我們學習文件頻率權重的不同形式。這些形式描述如下:
詞頻因子
這也被歸類為詞頻因子,這意味著如果術語t在一個文件中頻繁出現,那麼包含t的查詢應該檢索該文件。我們可以將單詞的詞頻 (tfij)和文件頻率 (dfi)組合成單個權重,如下所示:
$$weight \left ( i,j \right ) =\begin{cases}(1+log(tf_{ij}))log\frac{N}{df_{i}}\:if\:tf_{i,j}\:\geq1\\0 \:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\:\: if\:tf_{i,j}\:=0\end{cases}$$
這裡 N 是文件總數。
逆文件頻率 (idf)
這是文件頻率權重的另一種形式,通常稱為 idf 權重或逆文件頻率權重。idf 權重的重點是術語在整個集合中的稀缺性是其重要性的衡量標準,並且重要性與出現頻率成反比。
數學上,
$$idf_{t} = log\left(1+\frac{N}{n_{t}}\right)$$
$$idf_{t} = log\left(\frac{N-n_{t}}{n_{t}}\right)$$
這裡:
N = 集合中的文件數
nt = 包含術語t的文件數
使用者查詢改進
任何資訊檢索系統的主要目標必須是準確性——根據使用者的需求生成相關的文件。但是,這裡出現的問題是如何透過改進使用者的查詢表達方式來改進輸出。當然,任何 IR 系統的輸出都取決於使用者的查詢,而格式良好的查詢將產生更準確的結果。使用者可以藉助於相關反饋來改進其查詢,這是任何 IR 模型的重要方面。
相關反饋
相關反饋採用從給定查詢最初返回的輸出。此初始輸出可用於收集使用者資訊,並瞭解該輸出是否相關以執行新查詢。反饋可以分類如下:
顯式反饋
它可以定義為從相關性評估者那裡獲得的反饋。這些評估者還將指示從查詢檢索到的文件的相關性。為了提高查詢檢索效能,需要將相關反饋資訊與原始查詢插值。
系統評估者或其他使用者可以使用以下相關性系統明確指示相關性:
二元相關性系統 − 此相關反饋系統指示文件對於給定查詢而言是相關 (1) 還是不相關 (0)。
等級相關性系統 − 等級相關反饋系統根據使用數字、字母或描述進行的評分來指示文件對於給定查詢的相關性。描述可以像“不相關”、“有點相關”、“非常相關”或“相關”一樣。
隱式反饋
它是從使用者行為中推斷出的反饋。行為包括使用者檢視文件所花費的時間、選擇檢視哪些文件以及哪些文件沒有檢視、頁面瀏覽和滾動操作等。隱式反饋的最佳示例之一是停留時間,它衡量使用者花費多少時間檢視搜尋結果中連結到的頁面。
偽反饋
也稱為盲反饋。它提供了一種自動區域性分析的方法。藉助偽相關反饋,可以使相關反饋的手動部分自動化,以便使用者無需進行擴充套件互動即可獲得改進的檢索效能。此反饋系統的主要優點是它不需要像顯式相關反饋系統那樣的評估者。
請考慮以下步驟來實現此反饋:
步驟 1 − 首先,初始查詢返回的結果必須作為相關結果。相關結果的範圍必須在排名前 10-50 的結果中。
步驟 2 − 現在,例如使用詞頻 (tf)-逆文件頻率 (idf) 權重從文件中選擇前 20-30 個詞語。
步驟 3 − 將這些詞語新增到查詢中並匹配返回的文件。然後返回最相關的文件。
自然語言處理 (NLP) 的應用
自然語言處理 (NLP) 是一項新興技術,它衍生出我們現在看到的各種形式的人工智慧,並且它用於建立人和機器之間無縫且互動式的介面將繼續成為當今和未來越來越多的認知應用的首要任務。在這裡,我們將討論一些非常有用的 NLP 應用。
機器翻譯
機器翻譯 (MT),將一種源語言或文字翻譯成另一種語言的過程,是 NLP 最重要的應用之一。我們可以藉助以下流程圖瞭解機器翻譯的過程 −

機器翻譯系統的型別
有不同型別的機器翻譯系統。讓我們看看有哪些不同型別。
雙語 MT 系統
雙語 MT 系統在兩種特定語言之間進行翻譯。
多語言 MT 系統
多語言 MT 系統可在任何一對語言之間進行翻譯。它們在本質上可以是單向的或雙向的。
機器翻譯 (MT) 的方法
現在讓我們學習機器翻譯的重要方法。MT 的方法如下 −
直接 MT 方法
它不太流行,但卻是 MT 最古老的方法。使用這種方法的系統能夠將源語言 (SL) 直接翻譯成目標語言 (TL)。此類系統本質上是雙語和單向的。
中間語言方法
使用中間語言方法的系統將 SL 翻譯成一種稱為中間語言 (IL) 的中間語言,然後將 IL 翻譯成 TL。可以使用以下 MT 金字塔來理解中間語言方法 −

轉換方法
此方法涉及三個階段。
在第一階段,源語言 (SL) 文字被轉換為面向抽象 SL 的表示。
在第二階段,面向 SL 的表示被轉換為等效的目標語言 (TL) 面向的表示。
在第三階段,生成最終文字。
經驗 MT 方法
這是一種新興的 MT 方法。基本上,它使用大量以平行語料庫形式存在的原始資料。原始資料包含文字及其翻譯。基於類比、基於示例、基於記憶體的機器翻譯技術使用經驗 MT 方法。
反垃圾郵件
如今最常見的問題之一是不需要的電子郵件。這使得垃圾郵件過濾器更加重要,因為它是在對抗此問題的防禦的第一道防線。
透過考慮主要的誤報和漏報問題,可以使用 NLP 功能開發垃圾郵件過濾系統。
現有的用於垃圾郵件過濾的 NLP 模型
以下是用於垃圾郵件過濾的一些現有 NLP 模型 −
N 元模型
N 元模型是較長字串的 N 字元切片。在此模型中,不同長度的 N 元組同時用於處理和檢測垃圾郵件。
詞幹提取
垃圾郵件傳送者(垃圾郵件的生成者)通常會更改其垃圾郵件中攻擊性詞語的一個或多個字元,以便他們可以突破基於內容的垃圾郵件過濾器。這就是為什麼我們可以說,如果基於內容的過濾器無法理解電子郵件中單詞或短語的含義,它們就沒有用。為了消除垃圾郵件過濾中的此類問題,開發了一種基於規則的詞幹提取技術,該技術可以匹配看起來和聽起來相似的單詞。
貝葉斯分類
這已成為一種廣泛用於垃圾郵件過濾的技術。在一項統計技術中,電子郵件中單詞的出現頻率與未經請求的(垃圾郵件)和合法(非垃圾郵件)電子郵件訊息資料庫中其典型出現頻率進行衡量。
自動摘要
在這個數字時代,最有價值的是資料,或者你可以說資訊。但是,我們真的得到了有用以及所需數量的資訊嗎?答案是“否”,因為資訊過載,我們獲取知識和資訊的途徑遠遠超過了我們理解它的能力。我們迫切需要自動文字摘要和資訊,因為網際網路上的資訊氾濫不會停止。
文字摘要可以定義為建立較長文字文件的簡短、準確摘要的技術。自動文字摘要將幫助我們在更短的時間內獲得相關資訊。自然語言處理 (NLP) 在開發自動文字摘要方面發揮著重要作用。
問答
自然語言處理 (NLP) 的另一個主要應用是問答。搜尋引擎將世界的資訊掌握在我們的指尖,但當涉及到回答人類用自然語言提出的問題時,它們仍然存在不足。像谷歌這樣的大型科技公司也在朝這個方向努力。
問答是人工智慧和 NLP 領域內的一門計算機科學學科。它專注於構建能夠自動回答人類用自然語言提出的問題的系統。一個理解自然語言的計算機系統具有程式系統的能力,可以將人類編寫的句子翻譯成內部表示,以便系統可以生成有效的答案。可以透過對問題的語法和語義分析來生成準確的答案。詞彙差距、歧義和多語言性是 NLP 在構建良好的問答系統方面面臨的一些挑戰。
情感分析
自然語言處理 (NLP) 的另一個重要應用是情感分析。顧名思義,情感分析用於識別多個帖子中的情感。它也用於識別未明確表達情感的地方。公司正在使用情感分析(自然語言處理 (NLP) 的一種應用)來識別客戶線上的意見和情感。這將幫助公司瞭解他們的客戶對產品和服務的看法。公司可以藉助情感分析來判斷其來自客戶帖子的整體聲譽。這樣,我們可以說,除了確定簡單的極性之外,情感分析還會在上下文中理解情感,以幫助我們更好地理解表達意見背後的原因。
自然語言處理 - Python
在本章中,我們將學習使用 Python 進行語言處理。
以下特性使 Python 與其他語言有所不同 −
Python 是解釋型語言 − 我們不需要在執行 Python 程式之前編譯它,因為直譯器在執行時處理 Python。
互動式 − 我們可以直接與直譯器互動來編寫 Python 程式。
面向物件 − Python 本質上是面向物件的,這使得編寫程式更容易,因為藉助這種程式設計技術,它可以將程式碼封裝在物件中。
初學者易於學習 − Python 也被稱為初學者語言,因為它非常容易理解,並且支援開發各種各樣的應用程式。
先決條件
釋出的最新 Python 3 版本是 Python 3.7.1,適用於 Windows、Mac OS 和大多數 Linux OS 版本。
對於 Windows,我們可以訪問連結 www.python.org/downloads/windows/ 下載和安裝 Python。
對於 MAC OS,我們可以使用連結 www.python.org/downloads/mac-osx/。
對於 Linux,不同版本的 Linux 使用不同的包管理器來安裝新包。
例如,要在 Ubuntu Linux 上安裝 Python 3,我們可以從終端使用以下命令 −
$sudo apt-get install python3-minimal
要了解更多關於 Python 程式設計的資訊,請閱讀 Python 3 基礎教程 – Python 3
NLTK 入門
我們將使用 Python 庫 NLTK(自然語言工具包)對英語文字進行文字分析。自然語言工具包 (NLTK) 是 Python 庫的集合,專門用於識別和標記在自然語言(如英語)文字中發現的詞性。
安裝 NLTK
在開始使用 NLTK 之前,我們需要安裝它。藉助以下命令,我們可以在 Python 環境中安裝它 −
pip install nltk
如果我們使用的是 Anaconda,則可以使用以下命令構建 NLTK 的 Conda 包 −
conda install -c anaconda nltk
下載 NLTK 的資料
安裝 NLTK 後,另一個重要的任務是下載其預設文字儲存庫,以便可以輕鬆使用它。但是,在此之前,我們需要像匯入任何其他 Python 模組一樣匯入 NLTK。以下命令將幫助我們匯入 NLTK −
import nltk
現在,使用以下命令下載 NLTK 資料 −
nltk.download()
安裝所有可用的 NLTK 包需要一些時間。
其他必要的包
其他一些 Python 包,如 gensim 和 pattern,對於文字分析以及使用 NLTK 構建自然語言處理應用程式也是非常必要的。這些包的安裝方法如下所示 −
gensim
gensim 是一個強大的語義建模庫,可用於許多應用程式。我們可以透過以下命令安裝它 −
pip install gensim
pattern
它可以用來使 gensim 包正常工作。以下命令有助於安裝 pattern −
pip install pattern
分詞
分詞可以定義為將給定文字分解成稱為標記的較小單元的過程。單詞、數字或標點符號可以是標記。它也可以稱為單詞分割。
示例
輸入 − 床和椅子是傢俱的型別。

NLTK 提供了不同的分詞包。我們可以根據我們的需求使用這些包。這些包及其安裝細節如下 −
sent_tokenize 包
此包可用於將輸入文字劃分為句子。我們可以使用以下命令匯入它 −
from nltk.tokenize import sent_tokenize
word_tokenize 包
此包可用於將輸入文字劃分為單詞。我們可以使用以下命令匯入它 −
from nltk.tokenize import word_tokenize
WordPunctTokenizer 包
此包可用於將輸入文字劃分為單詞和標點符號。我們可以使用以下命令匯入它 −
from nltk.tokenize import WordPuncttokenizer
詞幹提取
由於語法原因,語言包含許多變體。變體是指語言(英語以及其他語言)具有單詞的不同形式。例如,諸如 democracy、democratic 和 democratization 之類的詞。對於機器學習專案,機器理解這些不同的詞(如上所述)具有相同的詞幹形式非常重要。這就是為什麼在分析文字時提取單詞的基本形式非常有用的原因。
詞幹提取是一個啟發式過程,它有助於透過去除詞尾來提取單詞的基本形式。
NLTK 模組提供的不同詞幹提取包如下 −
PorterStemmer 包
此詞幹提取包使用 Porter 演算法來提取單詞的基本形式。藉助以下命令,我們可以匯入此包 −
from nltk.stem.porter import PorterStemmer
例如,將‘writing’作為輸入提供給此詞幹提取器,其輸出將是‘write’。
LancasterStemmer 包
此詞幹提取包使用 Lancaster 演算法來提取單詞的基本形式。藉助以下命令,我們可以匯入此包 −
from nltk.stem.lancaster import LancasterStemmer
例如,將‘writing’作為輸入提供給此詞幹提取器,其輸出將是‘writ’。
SnowballStemmer 包
此詞幹提取包使用 Snowball 演算法來提取單詞的基本形式。藉助以下命令,我們可以匯入此包 −
from nltk.stem.snowball import SnowballStemmer
例如,將‘writing’作為輸入提供給此詞幹提取器,其輸出將是‘write’。
詞形還原
這是提取單詞基本形式的另一種方法,通常旨在使用詞彙和形態分析來去除屈折詞尾。詞形還原後,任何單詞的基本形式都稱為詞形。
NLTK模組提供以下用於詞形還原的包:
WordNetLemmatizer包
此包將根據單詞用作名詞還是動詞提取單詞的基本形式。可以使用以下命令匯入此包:
from nltk.stem import WordNetLemmatizer
詞性計數 – 組塊分析
藉助組塊分析可以識別詞性 (POS) 和短語。它是自然語言處理中的重要過程之一。我們知道分詞過程用於建立標記,組塊分析實際上是對這些標記進行標註。換句話說,我們可以說我們可以藉助組塊分析過程獲得句子的結構。
示例
在下面的示例中,我們將使用 NLTK Python 模組實現名詞短語組塊分析,這是一種組塊分析類別,它將查詢句子中的名詞短語組塊。
考慮以下步驟來實現名詞短語組塊分析:
步驟 1:組塊語法定義
在此步驟中,我們需要定義組塊分析的語法。它將包含我們需要遵循的規則。
步驟 2:建立組塊解析器
接下來,我們需要建立一個組塊解析器。它將解析語法並給出輸出。
步驟 3:輸出
在此步驟中,我們將以樹狀格式獲取輸出。
執行 NLP 指令碼
首先匯入 NLTK 包:
import nltk
現在,我們需要定義句子。
這裡:
DT 是限定詞
VBP 是動詞
JJ 是形容詞
IN 是介詞
NN 是名詞
sentence = [("a", "DT"),("clever","JJ"),("fox","NN"),("was","VBP"), ("jumping","VBP"),("over","IN"),("the","DT"),("wall","NN")]
接下來,語法應以正則表示式的形式給出。
grammar = "NP:{<DT>?<JJ>*<NN>}"
現在,我們需要定義一個用於解析語法的解析器。
parser_chunking = nltk.RegexpParser(grammar)
現在,解析器將如下解析句子:
parser_chunking.parse(sentence)
接下來,輸出將如下儲存在變數中:
Output = parser_chunking.parse(sentence)
現在,以下程式碼將幫助您以樹的形式繪製輸出。
output.draw()
