python - NLTK:从树值转换为 Lambda 函数表示法

标签 python lambda nltk context-free-grammar

我正在尝试将一个句子转换为 lambda 函数符号,例如看到的 http://www.nltk.org/book/ch10.html在第 4.2 节中。使用代码,我可以将句子转换为语义值并使用上下文无关语法解析句子,但是将句子转换为 lambda 符号的方法有哪些。

import nltk
grammar = nltk.CFG.fromstring("""
  S -> NP VP
  VP -> V NP 
  V -> "is" 
  Adj -> "Chewing"
  Coj -> "and"
  Nom -> Adj Nom | N
  NP ->  Nom Coj NP | N
  Det -> "a" | "an" | "the" | "my"
  N -> "gum" | "candy" | "thrilling"
  P -> "in" | "on" | "by" | "with"
  """)
sent = "Chewing gum and candy is thrilling".split()
rd_parser = nltk.RecursiveDescentParser(grammar, )
for tree in rd_parser.parse(sent):
    print (tree)

最佳答案

简答:您必须编写自己的语义语法。没有简单的方法可以将 CFG 映射到 lambda 演算。

更长的答案:

从 CFG 中,最接近语义树的是为非终结符指定语义特征,SQL CFG 示例很好地指导了如何去做,请参阅第 1.1 节。来自 http://www.nltk.org/book/ch10.html :

>>> nltk.data.show_cfg('grammars/book_grammars/sql0.fcfg')
% 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'

将 CFG 映射到 lambda 演算,反之亦然,或者从文本中学习这两者仍然是一项值得研究的工作,因此目前尚无明确的方法。

参见 http://dl.acm.org/citation.cfm?id=2052254http://www.computer.org/csdl/proceedings/ictai/2008/3440/02/3440b135-abs.html

关于python - NLTK:从树值转换为 Lambda 函数表示法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28131821/

相关文章:

Python 和 Selenium - 在不关闭浏览器的情况下关闭所有选项卡

python - 如何将列表内的嵌套字典放入Dataframe中?

python - 如何根据python中的不同条件动态创建列表?

python - PyCharm (JetBrains) IDE - 在其他分屏上转到声明

C# lambda 表达式的转换

python - 使用 Python 中的 Wordnet 同义词集处理意大利语

python - 在 Django 的过滤器查询中使用 lambda

python - 如何使用 lambda 对元组进行排序

nltk - 如何在 Google Colab 上安装模型/下载包?

python - 类型错误 : unhashable type: list when using Python set of strings