Компиляция парсера Чарняка - PullRequest
0 голосов
/ 02 сентября 2011

Пару дней назад я скачал парсер Чарниака из Интернета. Этот парсер используется для разбора естественных языков.

Я пытался скомпилировать его, но он не работает. Когда я нахожусь в каталоге парсера и набираю команду make, появляется следующее приглашение:

/usr/bin/g++  -c -O Bchart.C
/usr/bin/g++  -c -O BchartSm.C
/usr/bin/g++  -c -O Bst.C
/usr/bin/g++  -c -O FBinaryArray.C
/usr/bin/g++  -c -O CntxArray.C
/usr/bin/g++  -c -O ChartBase.C
/usr/bin/g++  -c -O ClassRule.C
/usr/bin/g++  -c -O ECArgs.C
/usr/bin/g++  -c -O Edge.C
/usr/bin/g++  -c -O EdgeHeap.C
/usr/bin/g++  -c -O Feat.C
/usr/bin/g++  -c -O Feature.C
/usr/bin/g++  -c -O FeatureTree.C
/usr/bin/g++  -c -O Field.C
/usr/bin/g++  -c -O FullHist.C
/usr/bin/g++  -c -O GotIter.C
/usr/bin/g++  -c -O InputTree.C
/usr/bin/g++  -c -O Item.C
/usr/bin/g++  -c -O Link.C
/usr/bin/g++  -c -O Params.C
/usr/bin/g++  -c -O ParseStats.C
/usr/bin/g++  -c -O SentRep.C
/usr/bin/g++  -c -O Term.C
/usr/bin/g++  -c -O TimeIt.C
/usr/bin/g++  -c -O UnitRules.C
/usr/bin/g++  -c -O ValHeap.C
/usr/bin/g++  -c -O edgeSubFns.C
/usr/bin/g++  -c -O ewDciTokStrm.C
/usr/bin/g++  -c -O extraMain.C
/usr/bin/g++  -c -O fhSubFns.C
/usr/bin/g++  -c -O headFinder.C
/usr/bin/g++  -c -O headFinderCh.C
cc    -c -o utils.o utils.c
In file included from utils.c:23:
utils.h:28:19: fstream: No such file or directory
utils.h:29:16: list: No such file or directory
In file included from utils.h:30,
                 from utils.c:23:
ECString.h:8: error: syntax error before "namespace"
ECString.h:8: warning: data definition has no type or storage class
In file included from utils.h:30,
                 from utils.c:23:
ECString.h:9:18: string: No such file or directory
In file included from utils.c:23:
utils.h:31:18: vector: No such file or directory
In file included from utils.c:23:
utils.h:37: error: syntax error before "intToString"
utils.h:37: warning: data definition has no type or storage class
utils.h:38: error: syntax error before '<' token
utils.h:39: error: syntax error before ':' token
utils.h:40: error: syntax error before "st"
utils.h:40: warning: data definition has no type or storage class
utils.h:43: error: syntax error before '&' token
utils.h:44: error: syntax error before "lastCharacter"
utils.h:44: error: syntax error before '&' token
utils.h:44: warning: data definition has no type or storage class
utils.h:45: error: syntax error before "firstCharacter"
utils.h:45: error: syntax error before '&' token
utils.h:45: warning: data definition has no type or storage class
utils.c:24:20: iostream: No such file or directory
utils.c: In function `error':
utils.c:34: error: `cerr' undeclared (first use in this function)
utils.c:34: error: (Each undeclared identifier is reported only once
utils.c:34: error: for each function it appears in.)
utils.c:34: error: `endl' undeclared (first use in this function)
utils.c: In function `warn':
utils.c:43: error: `cerr' undeclared (first use in this function)
utils.c:43: error: `endl' undeclared (first use in this function)
utils.c: At top level:
utils.c:47: error: syntax error before '&' token
utils.c: In function `ignoreComment':
utils.c:49: error: `string' undeclared (first use in this function)
utils.c:49: error: syntax error before "nxt"
utils.c:51: error: `inpt' undeclared (first use in this function)
utils.c:59: error: `nxt' undeclared (first use in this function)
utils.c: In function `toLower':
utils.c:82: error: 'for' loop initial declaration used outside C99 mode
utils.c: At top level:
utils.c:97: error: syntax error before "intToString"
utils.c: In function `intToString':
utils.c:101: error: `string' undeclared (first use in this function)
utils.c:101: error: syntax error before "ans"
utils.c:102: error: `ans' undeclared (first use in this function)
utils.c: At top level:
utils.c:106: error: syntax error before "vECfind"
utils.c:106: error: syntax error before "s"
utils.c: In function `vECfind':
utils.c:108: error: `ECStringsIter' undeclared (first use in this function)
utils.c:108: error: syntax error before "eci"
utils.c:109: error: `eci' undeclared (first use in this function)
utils.c:109: error: `sts' undeclared (first use in this function)
utils.c:109: error: `s' undeclared (first use in this function)
utils.c:109: error: `true' undeclared (first use in this function)
utils.c:110: error: `false' undeclared (first use in this function)
utils.c: At top level:
utils.c:113: error: syntax error before "lastCharacter"
utils.c:113: error: syntax error before '&' token
utils.c: In function `lastCharacter':
utils.c:115: error: `string' undeclared (first use in this function)
utils.c:115: error: syntax error before "f"
utils.c:116: error: `s' undeclared (first use in this function)
utils.c:121: error: `f' undeclared (first use in this function)
make: *** [utils.o] Error 1

У некоторых других людей возникают проблемы при компиляции этой вещи, например, в на этом форуме . но я не думаю, что моя версия gcc является проблемой.

ПРИМЕЧАНИЕ. Я пытаюсь построить алгоритм численной оптимизации, используемый для анализа естественного языка. Я пытаюсь получить некоторые примеры из парсера Чарниака. Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

2 голосов
/ 29 апреля 2013

Это обновленная и улучшенная версия Лаборатории обработки лингвистической информации Брауна: https://github.com/BLLIP/bllip-parser

Я скомпилировал ее в Ubuntu 12.10, и это было легко.Вам необходимо установить Flex.

1 голос
/ 11 ноября 2012

Я столкнулся с той же проблемой, и вот что я нашел: http://web.science.mq.edu.au/~mpawel/resources/notes/compilingCharniakJohnson.htm

С этой страницы:

Оба парсера, реализованные в C ++, распространяются как исходные тексты.код и, чтобы использовать их, очевидно, нужно сначала скомпилировать их.На современных машинах это может теперь вызвать некоторые проблемы, и эта заметка должна помочь решить эти проблемы.

На платформах Linux (я тестировал на Ubuntu 11.04) возможное решение, о котором сообщается в списке рассылки корпорации, заключается виспользуйте компилятор g ++ 3.3 вместо широко используемой в настоящее время версии 4.x.Альтернативой является использование патча, подготовленного Нитином Маднани;это изменяет исходный код перезапускаемого синтаксического анализатора, чтобы он мог компилироваться на современных 64-битных дистрибутивах Linux.

1 голос
/ 02 сентября 2011

Файлы с расширением .C в верхнем регистре (несколько странно!) предполагаются C ++ .

Однако, utils.c имеет расширение в нижнем регистре, которое означает, что компилятор cc (и почему что используется ?!) обрабатывает его как C:

Файлы с именами, оканчивающимися на .c, считаются исходными файлами C

Поэтому все функции C ++ не работают.

  • Если это ваш файл, переименуйте его и прекратите использовать cc для C ++.

  • Если этот этап компиляции является частью дистрибутива Chaniak, я предлагаю связаться с автором, потому что он допустил серьезную ошибку.

...