簡體   English   中英

使用python的NLTK fcfg語法

[英]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查詢中,解析器主要用於字符串連接。

UPDATE

在這種語法中,每行規則都有兩個邊(左手邊和右邊): lhs -> rhs解析器應該找到一個樹,其中父節點是非終端lhs節點之一並遵循其中一個這些規則因為他們只接受來自rhs孩子。

然后,對於語義部分,父節點的語義表示是組成其直接子節點的表示的結果。

在這種語法中,在右側,您可以使用問號: ?var來處理右側兄弟姐妹之間的協議。 然后,您可以通過將值分配給另一個功能將值傳遞給左側(如果您的解析器支持函數應用程序或邏輯操作等操作,則可以操作它們)。 父節點的語義表示基本上是其子節點的語義表示的結果。 在FCFG中,您將語義表示從右側傳遞到左側。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM