如何在Python中使用StanfordCorenlp输出命名实体被标记替换的文件?

如何在Python中使用StanfordCorenlp输出命名实体被标记替换的文件?,python,stanford-nlp,named-entity-recognition,Python,Stanford Nlp,Named Entity Recognition,我正在使用Python与斯坦福NLP合作。所以,我有一个函数,可以输入一些文本文件,并将它们转换为由StanfordCorenlp生成的xml文件。现在,我想编写另一个函数,输入这些xml文件并输出相应的文件,该文件包含相同的文本,但命名实体被它们的标记替换,并用单词STOP标记句子的结尾,删除标点符号。文件的开头也有STOP这个词。 提供xml文件的函数是: import subprocess def generate_xml(input,output): p = subprocess

我正在使用Python与斯坦福NLP合作。所以,我有一个函数,可以输入一些文本文件,并将它们转换为由StanfordCorenlp生成的xml文件。现在,我想编写另一个函数,输入这些xml文件并输出相应的文件,该文件包含相同的文本,但命名实体被它们的标记替换,并用单词STOP标记句子的结尾,删除标点符号。文件的开头也有STOP这个词。 提供xml文件的函数是:

import subprocess
def generate_xml(input,output):
    p = subprocess.Popen('java -cp stanford-corenlp-2012-07-09.jar:stanford-corenlp-2012-07-06-models.jar:xom.jar:joda-time.jar -Xmx3g edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators tokenize,ssplit,pos,lemma,ner -filelist /Users/akritibahal/Downloads/stanford-corenlp-2012-07-09/myfile_list.txt -outputDirectory /Users/akritibahal/Downloads/stanford-corenlp-2012-07-09', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    for line in p.stdout.readlines():
        print line

    retval = p.wait()
该函数用于发出带有命名实体标记的输出文件:

def process_file(input_xml,output_file):

有谁能帮助我如何获得带有命名实体标记的输出文件吗?

我一直在使用minidom解析CoreNLP的输出。下面是一些您可能想要使用但您可能想要检查的起始代码

请注意,您需要获得Stanford CoreNLP使用的标记化,因为返回的数据基于句子和标记的偏移量

from xml.dom import minidom    
xmldoc = minidom.parseString(raw_xml_data)
for sentence_xml in xmldoc.getElementsByTagName('sentences')[0].getElementsByTagName('sentence'):
    parse = parser.parse(sentence_xml.getElementsByTagName('parse')[0].firstChild.nodeValue)
    tokens = [(i,j) for i,j in zip(sentence_xml.getElementsByTagName('tokens')[0].getElementsByTagName('token'),parse.get_leaves())]
    # example for processing dependencies
    elements = sentence_xml.getElementsByTagName('dependencies')
    for element in elements:
        if element.getAttribute('type')=="collapsed-ccprocessed-dependencies":
            dependencies += [i for i in element.getElementsByTagName('dep')]