[英]NLTK fcfg grammar using python
我是NLP的新手。 我在nltk_data中找到了這個文件。 我想寫自己的語法。 在寫這些之前我需要知道(SEM =(?v +?pp))的含義是什么。 請幫我知道這個。
% start S
S[SEM=(?np + WHERE + ?vp)] -> NP[SEM=?np] VP[SEM=?vp]
VP[SEM=(?v + ?pp)] -> IV[SEM=?v] PP[SEM=?pp]
VP[SEM=(?v + ?ap)] -> IV[SEM=?v] AP[SEM=?ap]
NP[SEM=(?det + ?n)] -> Det[SEM=?det] N[SEM=?n]
PP[SEM=(?p + ?np)] -> P[SEM=?p] NP[SEM=?np]
AP[SEM=?pp] -> A[SEM=?a] PP[SEM=?pp]
NP[SEM='Country="greece"'] -> 'Greece'
NP[SEM='Country="china"'] -> 'China'
Det[SEM='SELECT'] -> 'Which' | 'What'
N[SEM='City FROM city_table'] -> 'cities'
IV[SEM=''] -> 'are'
A[SEM=''] -> 'located'
P[SEM=''] -> 'in'
在這一行:
VP[SEM=(?v + ?pp)] -> IV[SEM=?v] PP[SEM=?pp]
簡答: SEM=(?v + ?pp)
連接兩個字符串,第一個來自V
中節點的SEM特征,第二個來自PP
。
更長的答案:語法為您提供了一個解析器,您可以為給定的文本形成樹結構。 在此樹的每個節點上,您可以在使用解析器構建功能時操縱功能。 這樣,您就可以為樹形成語義表示。 在這些表示之間,您可以看到第一順序邏輯和lambda函數,有用的表示是您在此處使用的SQL查詢。 根據解析器,您可能需要對功能進行不同的操作。 在lambda函數上,解析器需要函數組合和邏輯運算,而在SQL查詢中,解析器主要用於字符串連接。
在這種語法中,每行規則都有兩個邊(左手邊和右邊): lhs -> rhs
解析器應該找到一個樹,其中父節點是非終端lhs
節點之一並遵循其中一個這些規則因為他們只接受來自rhs
孩子。
然后,對於語義部分,父節點的語義表示是組成其直接子節點的表示的結果。
在這種語法中,在右側,您可以使用問號: ?var
來處理右側兄弟姐妹之間的協議。 然后,您可以通過將值分配給另一個功能將值傳遞給左側(如果您的解析器支持函數應用程序或邏輯操作等操作,則可以操作它們)。 父節點的語義表示基本上是其子節點的語義表示的結果。 在FCFG中,您將語義表示從右側傳遞到左側。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.