文法也可以通俗易懂

2021-06-26 14:08:09 字數 1211 閱讀 6136

一直都說編織知識網,利用已有的節點去建立新的節點,但是一直做的不好,今天看到對文法解釋的這個例子,真真切切的體會到了編織知識網給我們帶來的巨大好處。

文法給你的印象什麼樣的?抽象?晦澀?不知所云?神馬終結符、字母表、產生式、閉包、自動機……暈死

但是看完下面的例子,你會感嘆:原來這就是文法!

文法就是用來描述語言的語法結構的形式規則,所以先有這樣乙個認識,文法就是語法

例子(摘自:軟體設計師考試):

張三和李四是工程師。

由5個詞組成:張三 和 李四 是 工程師

組成乙個句子:由主語、謂語構成。我們知道中文的文法:

《句子》 --> 《主語》 《謂語》

《主語》 -- > 《名詞片語》

《名詞片語》 --> 《名詞》 《連詞》 《名詞片語》

《謂語》 --> < 動賓片語》

《動賓片語》 --> 《動詞》 《賓語》

《賓語》 --> 《名詞》

《名詞》 -->  張三丨李四丨工程師

《連詞》 --> 和

《動詞》 --> 是

在上面的例子中,所有用<>包括起來的都是「非終結符」,而所有直接寫出來的就是「終結符」,以上規則就是「產生式」。

基於上述說法,現在看下面的概念

非終結符:它不是語言的組成部分,而是在推導過程中的佔位符,最終要替換成終結符。

終結符:語言是組成部分,是最後的內容。

產生式:用終結符替代非終結符的規則。

起始符:能夠用於語言開頭的符號,在本例中的《主語》就是起始符。

原本晦澀難懂的概念,是不是一下清晰了很多。

根據上面的產生式,下面我們來看句子是如何被推導出來的:

《句子》 => 《主語》《謂語》

=> 《名詞片語》《謂語》

=> 《名詞》《連詞》《名詞片語》《謂語》

=> 《名詞》《連詞》《名詞片語》《動賓片語》

=> 《名詞》《連詞》《名詞片語》《動詞》《名詞》

=> 張三和李四是工程師

我們從中可以發現,它也可以推導出「張三和工程師是李四」,這句話是符合語法的,但是語義有問題,所以語法的分析只能發現語法上的錯誤。

那麼聯想一下,詞法分析呢?還記得我們經常分析的問題嗎?

(0|1)*01這是乙個由0、1組成的字串,並且以01結尾。所以不難想到,程式編譯時怎麼判斷變數的命名是否準確呢?構造乙個以字母、下劃線開頭,由字母、下劃線、數字組成的有限自動機即可。

numpy bincount 通俗易懂

bincount的用途很簡單,就是統計出乙個列表的各個元素的出現次數。例如輸入是 1,0,2,2,1,2,3,5 那麼輸出就是 1,2,3,1,0,1 這樣的結果可能並不是很直觀,可能依然會有同學會問為什麼會輸出這樣的結果。我們看看 假如我們把輸入的列表中的數字都統計一遍,形成乙個字典 key是列表...

通俗易懂的C STL

泛型程式設計 generic programming 是一種語言機制,通過它可以實現乙個標準的容器庫。像類一樣,泛型也是一種抽象資料型別,但是泛型不屬於物件導向,它是物件導向的補充和發展。泛型程式設計在c 上的應用主要體現在兩方面 函式模板和類模板。接下來舉個栗子 csdn部落格 anyway,模板...

遷移學習,通俗易懂

一.背景 在之前用深度神經網路進行引數訓練時,我們每次的訓練都是從頭開始的,隨機地初始化網路。在網路層數不深的時候,訓練時間可以接受,但隨著現在網路構越來越複雜,網路層數越來越深,少則幾十層,多者上百層甚至上千層,如果任然每次都從頭開始訓練,時間的開銷則會非常大。例如imagenet網路的訓練常常需...