语义 - 在 NLTK 中创建语法

Semantics - creating grammar in NLTK

我正在尝试扩展 NLTK 的 simple-sem.fcfg 以便它支持短语的协调。我希望它能够成功解析如下句子:Irene walks and Angus barks。由于这表示为 walk(Irene) & bark(Angus),我认为实现此目的的最佳方法是添加规则 S -> S 和 S。我无法掌握的是如何使用语义特征来做到这一点...到目前为止我已经这样做了:

添加了这条规则:

S[SEM = <?subj(?vp)>] -> S[SEM = <?subj(?vp)>] <&> S[SEM = <?subj(?vp)>]

这行不通,所以有人有一些 advice/links 等吗?

相关结构中没有主题或VP。尝试为 and 编写用于连接句子的规则。它是什么? Sentence1 和 Sentence2 得到解释

<Sentence1> & <Sentence2>

即取两句的意思,用&连起来。在这个库的符号中,它会是这样的:

S[SEM=<?p & ?q>] -> S[SEM=?p] 'and' S[SEM=?q] 

我不使用这个模块,也无法测试示例,因此您可能需要调整语法。但我希望你能明白。

PS。这种语义通常假设二叉树,因此解释将分两步进行:

S1 (and S2)

这意味着您会将 and 解释为接受一个句子(即 S2)并为您提供一个连接函数,该连接函数将与另一个句子组合。但是,由于您 link 包含一个三位扩展(对于 VP)的示例,因此似乎没有必要。

至于进一步阅读(既然你要求"links"),我建议对自然语言的形式语义进行简单介绍;例如,Heim 和 Kratzer 的书。