如何解决Stanford Charniak Parser的依赖性

时间:2013-04-17 15:29:31

标签: java stanford-nlp charniak-parser

我正在尝试运行stanford-corenlp-1.3.5.jar中提供的Charniak解析器。记录包为edu.stanford.nlp.parser.charniak,类为CharniakParser

所以我将给出一个代码示例,说明我如何仅仅为了完整性而使用它:

CharniakParser cp = new CharniakParser();
PTBTokenizer<HasWord> ptbt = new PTBTokenizer(new FileReader("sample1.txt"), new WordTokenFactory(), "");
List<Word> tokens = new ArrayList<Word>();
for (Word token; ptbt.hasNext(); ) {
    token = (Word) ptbt.next();
    tokens.add(token);
}
Tree t = cp.getBarseParse(tokens);

在运行此代码的最后一行,我得到了

cannot run program "/u/nlp/packages/bllip-parser/reranking-parser.sh" ... The system cannot find the specified file

问题是人类无法找到指定的文件。我没有看到包含在发行版中,我找不到我可能需要使用该名称下载的依赖项。谷歌搜索显示,'reranking-parser.sh'存在的唯一地方是斯坦福版本的Charniak解析器的实际源代码(我正在努力清楚,因为我知道斯坦福最初没有创建Charniak解析器,它来自布朗)。

那么,有没有人有这个解析器的经验?缺什么?我更喜欢我的机会,所以我在这里问。

2 个答案:

答案 0 :(得分:2)

好的,好的,@ DMoses等。我订阅了邮件列表,我得到了关于需要做什么的答案。所以,让我把它作为未来访客的答案传递,因为它没有记录(直到现在):

文件reranking-parser.sh属于Charniak解析器的特定版本。因此,您需要获取解析器的版本,该解析器位于github上并称为“bllip-parser”。 CoreNLP中没有针对Charniak解析器的官方支持,提供的功能也不是独立的,而是一个学生扩展,旨在与github的外部解析器一起使用。

一个相当简单的过程实际上指向C ++可执行文件,但这对我不起作用,因为此时我将使用Python来调用Java来调用C ++。

答案 1 :(得分:0)

不幸的是,CoreNLP's code for CharniakParser.java中有一条硬编码路径。要使用解析器,您可能需要编辑源代码以将其指向parse-50best.sh in the Charniak parser distribution(需要从Stanford CoreNLP单独下载 - 请参阅第二个链接中的BLLIP Parser GitHub项目)。