3

我正在尝试运行提供的 Charniak 解析器stanford-corenlp-1.3.5.jar。记录的包是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 解析器,它来自布朗)。

那么,有人对这个解析器有经验吗?什么不见​​了?我更喜欢我在 SO 上的机会,所以我在这里问。

4

2 回答 2

2

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

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

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

于 2013-04-18T15:38:59.397 回答
0

不幸的是,CoreNLP 的 CharniakParser.java 代码中有一个硬编码路径。要使用解析器,您可能需要编辑源代码以将其指向Charniak 解析器发行版中的 parse-50best.sh(需要从斯坦福 CoreNLP 单独下载——请参阅第二部分中的 BLLIP Parser GitHub 项目关联)。

于 2013-09-06T19:59:10.640 回答