我正在尝试用lambda演算功能实现一个概率ccg。在
基本上我想执行以下代码:
>> lex = parseLexicon(r'''
:- S,NP
He => NP {sem=\x.he(x)} [1.0]
Walks => S\NP {sem=\X. walk(X)} [1.0]
There => S\S {sem=\x . there(x)} [1.0]
''')
>> parser = CCGChartParser(lex)
>> all_parses = parser.nbest_parse(“He walks
there”.split(),n=100)
>> for parse in all_parses:
printCCGDerivation(parse)
但是现有的NLTK的CCG实现不支持{sem=\x.he(x)}[1.0]种语义部件。在
有没有其他CCG实现可以处理这个问题? 或者我能在NLTK里面表现出来吗?在
不幸的是,这还不存在。我也一直在看这个空间。 这似乎是在他们的维基上提到的作品中- 语义分析
如果您对其他语言/框架感兴趣,可以看看Semantic Parsing with Execution, Stanford或{a2}。在
如果您想从头开始构建一些东西,您可能需要获得CCGBank或复活C&C工具。在
上面的大部分都是用Java编写的,但是我已经看过attempts to parse the C&C Marked file in Python。在
我个人希望看到CCG的到来节点.js. 在
NLTK-CCG最近支持语义谓词(Lambda演算表示)计算。请看这里的测试:https://github.com/nltk/nltk/blob/develop/nltk/test/ccg_semantics.doctest
CCG的概率分析即将出现:https://github.com/nltk/nltk/issues/1356
如果您不介意切换到commonlisp,那么有一个由cembozsahin开发的ccg工具(CCGlab)。它也有PCCG培训。https://github.com/bozsahin/ccglab
相关问题 更多 >
编程相关推荐