2012-07-25 65 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。