2011-09-02 161 views
0

幾天前,我從網上下載Charniak's parser。這個解析器用於解析自然語言。編譯Charniak的解析器

我一直在試圖編譯它,但它不工作。當我在解析器目錄和類型是使這個提示:

/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 

其他一些人有編制這事兒,像在this forum問題。但我不認爲我的海灣合作委員會版本是問題。

注:我正在嘗試構建一個用於自然語言分析的數值優化算法。我試圖從charniak的解析器中得到一些例子。任何幫助將不勝感激。

+0

如果此時出現此錯誤,則可能是使用舊版本的Charniak解析器。可以在這裏找到更容易編譯的最新版本:https:// github。com/BLLIP/bllip-parser – dmcc

回答

1

帶有大寫擴展名.C的文件(有點令人困惑!)assumed to be C++

然而,utils.c具有小寫擴展這意味着cc編譯器(以及爲什麼是正在使用?)是將它視爲C:

文件的名字以.c結尾是採取C源文件

所有的C++功能因此不起作用。

  • 如果這是你的文件,請重命名它,並停止使用C++的cc

  • 如果這個編譯步驟是Chaniak發行版的一部分,我建議與作者聯繫,因爲他犯了一個嚴重的錯誤。

+0

Charnikak不會提供支持:「我的一些統計分析器可用於研究,請查看布朗計算機科學主頁,軟件目錄下,然後在nlparser下。他們,所以我幾乎肯定不會回覆電子郵件尋求幫助,除非問題看起來特別有趣。「 –

+1

@deps_stats:我的回答是立場。如果您必須通過更改makefile來自己修復問題,那就是這樣!不過,如果作者拒絕支持他的解析器,那麼我會感到驚訝。 –

+0

此外,包含在tarball中的文件有一個大寫字母C – PlasmaHH

1

我遇到了同樣的問題,這是我發現: http://web.science.mq.edu.au/~mpawel/resources/notes/compilingCharniakJohnson.htm

在這個頁面:

兩個解析器,用C++實現的,分佈作爲源代碼,爲了使用它們,顯然需要先編譯它們。在現代機器上現在可能會產生一些問題,本說明書有助於解決這些問題。

在Linux平臺上(我在Ubuntu 11.04上測試過),在語料庫郵件列表上報告的一種可能的解決方案是使用g ++ 3.3編譯器,而不是現在常用的4.x版本。另一種方法是使用由Nitin Madnani製備的貼劑;這會更改重新分析解析器的源代碼,以便它可以在現代64位Linux版本上編譯。