NLTK使用Python的fcfg语法

3

我是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'
1个回答

2
在这行代码中:
VP[SEM=(?v + ?pp)] -> IV[SEM=?v] PP[SEM=?pp]

简短回答: SEM=(?v + ?pp) 是将两个字符串连接起来,第一个来自于V中节点的SEM特征,第二个来自于PP
更详细的回答:语法分析器可以为给定文本构建树形结构。在这棵树的每个节点上,您可以通过使用解析器来操作特征。这样,您就可以为树形结构形成语义表示。在这些表示之间,您可以看到一阶逻辑和λ函数,而有用的表示是SQL查询,您在此处使用。根据解析器,您可能需要不同的特征操作。对于λ函数,解析器需要函数组合和逻辑操作,在SQL查询中,解析器主要使用字符串连接。
更新:在此语法中,每条规则的每行都有两个部分(左侧和右侧):lhs -> rhs。解析器期望找到一棵树,其父节点是非终端lhs节点之一,并遵循这些规则,因为它们仅从rhs中选择子节点。然后,对于语义部分,父节点的语义表示是其直接子节点表示的组合结果。在此语法中,您可以在右侧使用问号,例如:?var,以处理右侧兄弟之间的协议。然后,您可以通过将它们分配给另一个特征(或操作它们,如果您的解析器支持函数应用或逻辑操作等功能)。父节点的语义表示基本上是其子节点的语义表示的操作结果。在FCFG中,您可以像从右侧传递特征一样将语义表示传递到左侧。

谢谢回答我的问题...我想知道(?v)的意思...那么,它的值将是什么...你可以用简单的语法来解释它...@mehdi - Sudip Das
我会添加一个更新。简而言之:它是指右侧的占位符。 - Mehdi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接