Parsing 斯坦福NLP-使用解析或标记的文本生成完整的XML

Parsing 斯坦福NLP-使用解析或标记的文本生成完整的XML,parsing,nlp,stanford-nlp,pos-tagger,Parsing,Nlp,Stanford Nlp,Pos Tagger,我试图从PenntreBank,华尔街日报语料库中提取数据。其中大部分已经有了解析树,但一些数据只是被标记的。 i、 e.wsj_DDXX.mrg和wsj_DDXX.pos文件 我想在这些文件中使用已经解析的树和标记数据,这样就不会在CoreNLP中使用解析器和标记器,但我仍然想要CoreNLP提供的输出文件格式;即,包含依赖项、实体协同引用、解析树和标记数据的XML文件 我已经阅读了很多java文档,但是我不知道如何按照我描述的方式获取它 对于POS,我尝试使用,它允许我使用标记,但我只能生成

我试图从PenntreBank,华尔街日报语料库中提取数据。其中大部分已经有了解析树,但一些数据只是被标记的。 i、 e.wsj_DDXX.mrg和wsj_DDXX.pos文件

我想在这些文件中使用已经解析的树和标记数据,这样就不会在CoreNLP中使用解析器和标记器,但我仍然想要CoreNLP提供的输出文件格式;即,包含依赖项、实体协同引用、解析树和标记数据的XML文件

我已经阅读了很多java文档,但是我不知道如何按照我描述的方式获取它

对于POS,我尝试使用,它允许我使用标记,但我只能生成一个包含一些我想要的信息的XML文件;没有用于共同引用或生成解析树的选项。为了让它正确地生成次优的XML文件,我必须编写一个脚本来去掉文件中的所有括号。这是我使用的命令:

java-cp“*”edu.stanford.nlp.parser.lexparser.LexicalizedParser-outputFormat typedPendenciescollected,wordsAndTags-outputFilesExtension xml-outputFormatOptions xml-writeOutputFiles-outputFilesDirectory my\dir-tokenized-tagSeparator/-tokenizerFactory edu.stanford.nlp.process.WhitespaceTokenizer-Tokenizer-Method newCoreLabelTokenizerFactory edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz my\wsj\files\dir

我也不能为已经有树的《华尔街日报》数据生成我想要的数据。我试着使用上面所说的内容,并查看了相应的Javadocs。我使用了与上面描述的类似的命令。但是我必须编写一个python程序来检索分析每个文件后得到的标准输出数据,并将其写入一个新文件。结果数据只是一个具有依赖关系的文本文件,并且不是所需的XML表示法

总之,我想使用这些PTB文件中的POS和tree数据来生成CoreNLP解析,该解析与我在常规文本文件上使用CoreNLP时会发生的情况相对应。伪命令如下所示:

java-cp“*”edu.stanford.nlp.pipeline.CoreNLP-useTreeFile wsj_DDXX.mrg

java-cp“*”edu.stanford.nlp.pipeline.CoreNLP-usePOSFile wsj_DDXX.pos


编辑:修复了一个链接。

是的,这是可能的,但有点棘手,而且没有现成的功能可以做到这一点,因此您必须编写一些代码。基本思想是将
tokenize
ssplit
pos
注释器(如果还有树,
parse
注释器)替换为从注释文件加载这些注释的代码

在非常高的级别上,您必须执行以下操作:

  • MemoryTreebank
  • 循环遍历所有树,并为每个树创建一个句子
    CoreMap
    ,添加到该句子中
    • a
      TokensAnnotation
    • a
      TreeAnnotation
      SemanticGraphCoreAnnotations
  • 创建一个
    注释
    对象,其中包含所有句子的
    CoreMap
    对象列表
  • 运行StanfordCoreNLP管道,将
    注释器
    选项设置为
    引理、ner、dcoref
    ,并将
    强制要求
    选项设置为
查看各个注释器,了解如何添加所需的注释。例如,有一种方法添加了
SemanticGraphCoreAnnotations