我正在尝试运行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解析器,它来自布朗)。
那么,有没有人有这个解析器的经验?缺什么?我更喜欢我的机会,所以我在这里问。
答案 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项目)。