2012-07-25 64 views
3

我正在尝试使用Charniak Parser(不是reranker)来解析一个句子。我的意思是我有这样的句子:Charniak Parser错误

It is good to meet you. 

,我需要它由Charniak(我坚持使用Charniak解析器解析,因为在那之后,我将使用LTH体系和LTH作品基于Charniak分析器)。

那么,结果会是这样的:

(s (XP(PRP I) (V is) ....) 

然而,当我尝试运行 “make” 命令Charinak分析器,我面对这些错误:

BChartsm.c LeftRightGotIter does not name a type 
BChartsm.c in member function double Bchart::pHypgt(const std::string&, int) 
BChartsm.c strpbrk was not declared in this scope 
BChartsm.c in member function float Bchart::coputeTgT(int,int) 
BChartsm.c globalGi was not declared in this scope 

我试着使用Madnani开发的补丁程序,但它对我不起作用。我也尝试使用this solution,但我无法理解最后一部分。我运行了所有的sudo dpkg ...代码,但之后我不明白我该怎么做。

同时,我会说我使用的是Ubuntu 11.04,而我的操作系统是64位的。

任何人都可以向我解释我如何解决问题?

回答

3

您正在编译C++代码,并以某种方式驻留在“.c”文件中。 GCC将它们视为C源代码,而不是C++。

您必须使用GCC的“-x”选项强制识别C++源代码。

gcc -x c++ <your_source> 

既然你正在谈论的Makefile,寻找CFLAGS选项,并添加-x c++选项那里。

3

从Charniak的页面和Brown网站链接的版本未被保留。它需要相当多的工作才能使它与最新的g ++一起工作。

幸运的是,布朗(BLLIP)也保持在GitHub上一个版本保持 “BLLIP分析器” 的名义下:

https://github.com/BLLIP/bllip-parser

这编译我第一次与64位的Ubuntu。请注意,如果您还没有安装Flex,您还需要安装Flex。