NLP | 自然語言處理,nlp自然語言處理
什麼是文法解析?在自然語言學習過程中,每個人一定都學過文法,例如句子可以用主語、謂語、賓語來表示。在自然語言的處理過程中,有許多應用情境都需要考慮句子的文法,因此研究文法解析變得非常重要。
文法解析有兩個主要的問題,其一是句子文法在電腦中的表達與儲存方法,以及語料資料集;其二是文法解析的演算法。
對於第一個問題,我們可以用樹狀結構圖來表示,如所示,S表示句子;NP、VP、PP是名詞、動詞、介詞短語(短語層級);N、V、P分別是名詞、動詞、介詞。
實際儲存的時候上述的樹可以表示為(S (NP (N Boeing)) (VP (V is) (VP (V located) (PP (P in) (NP (N Seattle))))))。互連網上已經有成熟的、手工標註的語料資料集,例如The Penn Treebank Project (Penn Treebank II Constituent Tags)。
對於第二個問題,我們需要有合適的演算法來處理。這也是我們本章將要討論的內容。
上下文無關文法(Context-Free Grammer)為了產生句子的文法樹,我們可以定義如下的一套上下文無關文法。1)N表示一組非葉子節點的標註,例如{S、NP、VP、N...}2)Σ表示一組葉子結點的標註,例如{boeing、is...}3)R表示一組規則,每條規則可以表示為X->Y1Y2...Yn,X∈N,Yi∈(N∪Σ)4)S表示文法樹開始的標註
舉例來說,文法的一個文法子集可以表示為所示。當給定一個句子時,我們便可以按照從左至右的順序來解析文法。例如,句子the man sleeps就可以表示為(S (NP (DT the) (NN man)) (VP sleeps))。
這種上下文無關的文法可以很容易的推匯出一個句子的文法結構,但是缺點是推匯出的結構可能存在二義性。例如下面兩張圖中的文法樹都可以表示同一個句子。常見的二義性問題有:1)單詞的不同詞性,如can一般表示“可以”這個情態動詞,有時表示罐子;2)介詞短語的作用範圍,如VP PP PP這樣的結構,第二個介詞短語可能形容VP,也可能形容第一個PP;3)連續的名字,如NN NN NN。
機率分布的上下文無關文法(Probabilistic Context-Free Grammar)由於文法的解析存在二義性,我們就需要找到一種方法從多種可能的文法樹種找出最可能的一棵樹。一種常見的方法既是PCFG (Probabilistic Context-Free Grammar)。如所示,除了常規的文法規則以外,我們還對每一條規則賦予了一個機率。對於每一棵產生的文法樹,我們將其中所以規則的機率的乘積作為文法樹的出現機率。
綜上所述,當我們或得多顆文法樹時,我們可以分別計算每顆文法樹的機率p(t),出現機率最大的那顆文法樹就是我們希望得到的結果,即arg max p(t)。
訓練演算法我們已經定義了文法解析的演算法,而這個演算法依賴於CFG中對於N、Σ、R、S的定義以及PCFG中的p(x)。上文中我們提到了Penn Treebank通過手工的方法已經提供了一個非常大的語料資料集,我們的任務就是從語料庫中訓練出PCFG所需要的參數。1)統計出語料庫中所有的N與Σ;2)利用語料庫中的所有規則作為R;3)針對每個規則A -> B,從語料庫中估算p(x) = p(A -> B) / p(A);
在CFG的定義的基礎上,我們重新定義一種叫Chomsky的文法格式。這種格式要求每條規則只能是X -> Y1 Y2或者X -> Y的格式。實際上Chomsky文法格式保證生產的文法樹總是二叉樹的格式,同時任意一棵文法樹總是能夠轉化成Chomsky文法格式。
文法樹預測演算法假設我們已經有一個PCFG的模型,包含N、Σ、R、S、p(x)等參數,並且文法樹總數Chomsky文法格式。當輸入一個句子x1, x2, ... , xn時,我們要如何計算句子對應的文法樹呢?第一種方法是暴力遍曆的方法,每個單詞x可能有m = len(N)種取值,句子長度是n,每種情況至少存在n個規則,所以在時間複雜度O(m*n*n)的情況下,我們可以判斷出所有可能的文法樹並計算出最佳的那個。第二種方法當然是動態規劃,我們定義w[i, j, X]是第i個單詞至第j個單詞由標註X來表示的最大機率。直觀來講,例如xi, xi+1, ... , xj,當X=PP時,子樹可能是多種解釋方式,如(P NP)或者(PP PP),但是w[i, j, PP]代表的是繼續往上一層遞迴時,我們只選擇當前機率最大的組合方式。特殊情況下,w[i, i, X] = p(X -> xi)。因此,動態規劃的方程可以表示為w[i, j, X] = max (p(X -> Y Z) * w(i, s, Y) * w(s+1, j, Z))。關於動態規劃方法,leetcode裡有不少案例可以說明。
文法解析按照上述的演算法過程便完成了。雖說PCFG也有一些缺點,例如:1)缺乏詞法資訊;2)連續短語(如名詞、介詞)的處理等。但總體來講它給文法解析提供了一種非常有效實現方法。
NLP是什?
NLP(身心文法程式學)由美國人理查德•班德勒(Richard Bandler)和約翰•格林德爾(John Grinder)1976年創立於美國加州大學。NLP是三個英文詞Neuro、Linguistic、Programming的縮寫,它們有以下的意思:
Neuro:“神經”,意譯為“身心”,指的是我們的頭腦和身體經由我們的腦神經系統串連在一起;我們的腦神經系統控制我們的感覺器官去維持於世界的聯絡。
Linguistic:語言的,指的是我們運用語言與別人做出相互影響,經由姿勢、手勢、習慣等無聲語言顯示我們的思考模式、信念及內心種種狀態;我們頭腦與身體直接的聯絡機制所用的語言模式。
Programming:程式,指的是解壓電腦科學的字眼指出我們的意念、感覺和行為只不過是習慣性的程式,可以經由我們“思想”的軟體而得以改善。憑著改善我們思想和行為的重複程式,我們可以在行動中取得更滿意的效果。
因其是研究人類主觀經驗,研究我們的腦如何工作的學問。所以可以把它譯為“身心文法程式學”。它是關於人類行為與溝通程式的一套詳細可行的模式,它包含了傳統的神經學、生理學、心理學及語言學和人腦控制學。
nlp是什
簡言之,NLP就是從破解成功人士的語言及思維模式入手,獨創性地將他們的思維請問NLP是什麼意思 NLP是指自然語言識別程式: NLP (Natural Language