3

我正在尝试使用 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 中代表这个吗?

4

3 回答 3

3

不幸的是,不,这还不存在。我也一直在看这个空间。它似乎在他们的维基上提到的作品中 - 语义解析

如果您对其他语言/框架感兴趣,请查看Semantic Parsing with Execution、StanfordThe University of Washington Semantic Parsing Framework

如果你想从头开始构建一些东西,你可能想要获得 CCGBank 或复兴 C&C 工具。

以上大部分内容都是用 Java 编写的,但我看到有人尝试在 Python 中解析 C&C 标记文件

我个人希望看到 CCG 加入 Node.js。

于 2015-05-06T01:11:40.463 回答
2

NLTK CCG 最近支持语义谓词(Lambda-Calculus 表示)计算。请在此处查看测试:https ://github.com/nltk/nltk/blob/develop/nltk/test/ccg_semantics.doctest

CCG 的概率解析即将出现:https ://github.com/nltk/nltk/issues/1356

于 2016-04-03T05:54:35.773 回答
-1

如果您不介意切换到 Common LISP,可以使用 Cem Bozsahin 开发的 ccg 工具 (CCGlab)。它也有PCCG培训。https://github.com/bozsahin/ccglab

于 2019-09-16T23:37:58.213 回答