理解Parse树的语法

时间:2017-11-10 16:15:39

标签: parsing nlp computer-science stanford-nlp grammar

我只是想了解Fei Li (2014)提出的关系数据库的自然语言界面(可用github project)。具体来说,我不理解他们为数据库的自然语言查询的ParseTree定义的语法。这个问题有点像this one,但语法更复杂。

背景:自然语言句子可以解析为ParseTree(公共库是Stanford Parser),它描述了句子中单词的语法关系。

有效ParseTree的语法是:

  1. Q - > (SClause)(ComplexCondition)*

  2. SClause - > SELECT + GNP

  3. ComplexCondition - > ON +(leftSubtree * rightSubtree)

  4. leftSubtree - > GNP

  5. rightSubtree - > GNP | VN | MIN | MAX

  6. GNP - > (FN + GNP)| NP

  7. NP - > NN +(NN)*(条件)*

  8. 条件 - > VN | (ON + VN)

  9. 其中

    • Q代表整个查询树
    • +亲子关系
    • *兄弟关系
    • SN是SELECT节点
    • ON是一个OPERATOR节点(例如=<=
    • FN是一个FUNCTION节点(例如AVG
    • NN是NAME节点(例如db表中的列)
    • VN是VALUE节点(即db表中列中的值)
    • ComplexCondition必须有一个ONleftSubtreerightSubtree
    • NP是一个NN,其子女有多个NN和条件。

    我的问题

    1. 为什么condition定义为VN或(ON + VN)?这意味着像5这样的东西本身就是一个条件。只会对后者有所了解,即(ON + VN)是一个条件(例如>5

    2. rightSubtree如何成为一个函数(例如MIN)。顺便说一下,我将管道|理解为逻辑或。

    3. 我知道GNP是递归定义的,但在终端节点上GNP节点必须只是NP节点吗?但是NP被定义为有孩子的东西......怎么样?!?!?!

    4. 上面引用的github项目的作者说:“以一个值节点(VN)为例,根据语法,当且仅当它有孩子时它是无效的。我不知道我知道如何从语法中推断出这一点

    5. 感谢您的帮助

0 个答案:

没有答案