我正在尝试运行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解析器的,来自布朗)。
那么,有没有人有使用此解析器的经验?什么不见了?我更喜欢这样的机会,所以我在这里问。
最佳答案
好吧,@ DMoses等。我订阅了邮件列表,并就需要做什么回答了。因此,让我将其作为 future 访客的答案,因为该文件尚未记录(直到现在):
文件reranking-parser.sh
属于Charniak解析器的特定版本。因此,您需要获取该解析器的版本,该版本在github上称为“bllip-parser”。 CoreNLP中没有针对Charniak解析器的官方支持,所提供的功能也不意味着是独立的,而是旨在与github上的外部解析器一起使用的学生扩展。
指向C++可执行文件的过程相当简单,但这对我不起作用,因为在这一点上,我将使用Python调用Java来调用C++。
关于java - 如何解决Stanford Charniak Parser依赖性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16064157/