--- title: 'NLP技術之文字表示法 - 句法分析' tags: NLP --- NLP技術之文字表示法 - 句法分析 === ## Table of Contents [TOC] ## 學習目標 * 之前講過: * 如何處理斷詞、詞性標註、Stemming? * 如何表達語言的表示法?3種 * 假設做自然語言處理時,使用的表示法是==向量表示法 (Bag of Words, BOW)== * BOW表示法:將句子拆成一個個的`字`或`詞`,以便接下來利用Syntactic Parsing (句法分析)來理解。 * 下一步驟,如何利用Syntactic Parsing (句法分析),知道`Input Sentence`要拆解成什麼樣子? --- ==4. Syntactic Parsing (句法分析)== --- * 目標: * 利用文法結構,產生正確的句法結構樹 (Syntactic Parsing Tree) * 句法結構不一樣! ![](https://i.imgur.com/iOHrUGn.png) ### Context Free Grammars (CFG) * Context Free Grammars ==與內文、功能無關==。 * 透過簡單的對應(Grammar),得知句子該如何拆解。 * 兩種symbols: 1. non-terminal symbol * 代表Parsing尚未結束,需要一直被分解,直到最小單位為terminal symbol。 * 遞迴(Recursive)演算法 2. terminal symbol > [NLP技術之概論](/%2FSlVAWTARRKGI4tuEpp09DQ) :::info #### 1. $N$ a set of non-terminal symbols #### 2. $\sum_{}$ a set of terminal symbols (disjoint from $N$) #### 3. $R$ a set of **_rules_** of the form $A \to \beta$, where $A \in N$ and $\beta$ is a string of symbols from $(\sum_{} \cup N)^*$ * 透過 **_rules_** ,一層一層地遞迴(Recursive)往下拆解,將non-terminal symbol ($A$) 轉為 terminal symbol ($\beta$),直至Parsing結束。 #### 4. $S$, a designated non-terminal called the `start symbol` * 一個一個的`句子(start symbol)`,方便往下拆解。 ::: ### Simple CFG for English * 在做Syntactic Parsing (句法分析)時,需要以下兩項: 1. Grammar (文法) * 透過簡單的對應(Grammar),得知 $S$ `句子(start symbol)` 該如何拆解其結構。 2. Lexicon (詞彙) * 將`字(Ex: the, book, ...)`歸類為哪一種詞性? * 將`字`與`詞性`的對應,建立成一個字典。 * 接著,把字典裡東西 Input 到 Syntactic Parsing 裡面。透過Grammar Tree,最後會建出Syntactic Parsing Tree。 ![](https://i.imgur.com/Sov6EjD.png =450x250) ### Sentence Generation * Sentences are generated by recursively rewriting the start symbol using the rules until only terminals symbols remain * Ex: `I ate the pizza with meatballs.` ![](https://i.imgur.com/9Aewz26.png =250x200) ### Parsing * 最終結果:==輸入 == 產出== * Ex:![](https://i.imgur.com/Ol8HRWR.png =300x150) * Parsing分為兩種方式,用來建立`句法結構樹 (Syntactic Parsing Tree)`: 1. Top-Down Parsing (由上往下):從start symbol開始。 * 容易操作。 ![](https://i.imgur.com/NPALAKL.png) 2. Bottom-up Parsing (由下往上):從the terminal symbols開始。 * 過程中,需要一直做拆解、替換。 * 費時。 ![](https://i.imgur.com/5lacxRX.png) * 如何讓Parsing建立地更有效率? * 演算法:==動態規劃(Dynamic programming,簡稱DP)== * 目的:讓尋找過程的computation complexity(計算複雜性)降低。 * 可使用實驗室已寫好的Library。 --- * ##### tags: `NLP技術之文字表示法 - 句法分析` * [Introduction to Dynamic Programming (動態規劃)](http://mirlab.org/jang/books/dcpr/dp.asp?title=8-1%20Introduction%20to%20Dynamic%20Programming%20(%B0%CA%BAA%B3W%B9%BA)&language=chinese) * [動態規劃(Dynamic Programming)](https://sites.google.com/site/zsgititit/home/jin-jiec-cheng-shi-she-ji/dong-tai-gui-hua-dynamic-programming)