为了获得一些特定的依赖信息,我编写了一个java脚本来解析句子而不是直接使用Stanford Parser 3.9.1提供的ParserDemo.java。但我发现获得typedDependencies之后缺少标点符号。在Stanford Parser中是否有任何函数可以获得标点符号? 我必须自己编写一个脚本来解析句子,因为我需要从TypedDependencies列表创建一个SemanticGraph,以便使用SemanticGraph中的方法来获取单个令牌依赖信息(包括标点符号)。
public class ChineseFileTest3 {
public static void main(String[] args){
String modelpath = "edu/stanford/nlp/models/lexparser/xinhuaFactored.ser.gz";
LexicalizedParser lp = LexicalizedParser.loadModel(modelpath);
String textFile = "data/chinese-onesent-unseg-utf8.txt";
demoDP(lp,textFile);
}
public static void demoDP(LexicalizedParser lp, String filename){
for(List<HasWord> sentence : new DocumentPreprocessor(filename)) {
Tree t = lp.apply(sentence);
ChineseGrammaticalStructure gs = new ChineseGrammaticalStructure(t);
Collection<TypedDependency> tdl = gs.typedDependenciesCollapsed();
System.out.println(tdl);
}
}
}
答案 0 :(得分:0)
我建议不要单独使用解析器,而只是运行管道。这将保持标点符号。
此处有关于在管道中使用Java API的全面文档:
https://stanfordnlp.github.io/CoreNLP/api.html
您需要设置中文的属性。快速的方法是使用这行代码
Properties props = StringUtils.argsToProperties("-props", "StanfordCoreNLP-chinese.properties");