如何编写脚本以保持斯坦福依赖解析器中的标点符号

时间:2018-06-16 04:24:52

标签: nlp stanford-nlp text-processing

为了获得一些特定的依赖信息,我编写了一个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);

}
}
}

1 个答案:

答案 0 :(得分:0)

我建议不要单独使用解析器,而只是运行管道。这将保持标点符号。

此处有关于在管道中使用Java API的全面文档:

https://stanfordnlp.github.io/CoreNLP/api.html

您需要设置中文的属性。快速的方法是使用这行代码

Properties props = StringUtils.argsToProperties("-props", "StanfordCoreNLP-chinese.properties");