Представление лямбда-исчисления в NLTK CCG

Я пытаюсь реализовать вероятностный CGG с функциями лямбда-исчисления.

В основном я хочу сделать следующий код:

>> 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)

но существующая реализация CCL NLTK не поддерживает {sem=\x.he(x)} [1.0] виды семантических частей в лексиконе.

Есть ли другие реализации CCG, которые могут справиться с этим? Или я могу представить это внутри НЛТК?

2 ответа

Решение

NLTK CCG недавно поддерживает вычисление семантики предиката (представление лямбда-исчисления). Пожалуйста, посмотрите тесты здесь: https://github.com/nltk/nltk/blob/develop/nltk/test/ccg_semantics.doctest

Вероятный разбор для CCG находится на горизонте: https://github.com/nltk/nltk/issues/1356

К сожалению нет, этого еще не существует. Я тоже смотрю на это место. Похоже, в работах, упомянутых здесь на их вики - Semantic-Parsing

Если вас интересуют другие языки / фреймворки, взгляните на Семантический анализ с исполнением, Стэнфорд или Вашингтонский университет.

Если вы хотите создать что-то с нуля, вы можете получить CCGBank или восстановить инструменты C&C.

Большая часть вышеперечисленного относится к Java, но я видел попытки проанализировать файл C&C Marked в Python.

Я лично хотел бы, чтобы CCG пришел на Node.js.

Если вы не против перехода на Common LISP, существует инструмент ccg (CCGlab), разработанный Cem Bozsahin. Он также имеет обучение PCCG. https://github.com/bozsahin/ccglab

Другие вопросы по тегам