Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Stanford Parser';Python中的类型依赖关系?_Python_Stanford Nlp - Fatal编程技术网

如何使用Stanford Parser';Python中的类型依赖关系?

如何使用Stanford Parser';Python中的类型依赖关系?,python,stanford-nlp,Python,Stanford Nlp,要查看类型依赖项的示例,请查看中输出的结尾 当我使用lexparser.sh在命令行上运行stanford解析器时,它会输出树和类型依赖项 但是当我使用nltk.parse.stanford运行它时,我得到的只是一棵树,没有类型化的依赖项。我可以通过设置-outputFormat=“penn,typedDependencies”来修改它以返回依赖项,尽管我只需要获取文本。我想知道是否有其他人已经完成了将其处理成更有用形式的工作 斯坦福大学CoreNLP网站,尽管其中大多数看起来像是相关的叉子,虽

要查看类型依赖项的示例,请查看中输出的结尾

当我使用lexparser.sh在命令行上运行stanford解析器时,它会输出树和类型依赖项

但是当我使用nltk.parse.stanford运行它时,我得到的只是一棵树,没有类型化的依赖项。我可以通过设置-outputFormat=“penn,typedDependencies”来修改它以返回依赖项,尽管我只需要获取文本。我想知道是否有其他人已经完成了将其处理成更有用形式的工作

斯坦福大学CoreNLP网站,尽管其中大多数看起来像是相关的叉子,虽然它是完全没有文件的,我不知道如何使用它

这些库中的许多都提供作为服务运行并通过HTTP进行通信。我想知道这是否会比NLTK与解析器交互的方式更快,因为它可能不需要一个新的JVM来反复启动

我不太清楚CoreNLP和Stanford解析器之间的区别


我还发现,虽然它使用JPype,但我无法编译它。

我最近做了一个项目,该项目严重依赖CoreNLP和Stanford解析器。首先,如果您打算使用它,我强烈建议您使用Java编写代码,因为将它与Python一起使用是一件非常痛苦的事情。不过,我还是设法让它发挥作用

我建议您使用CoreNLP,这对我来说效果最好。这将需要声明JVM并在本地与之通信(尽管它会为您这样做)。它还有一个可爱的错误,有时返回以前的解析而不是刚刚发送的解析,或者根本不返回。我们使用了一个decorator,它将在一段时间后重新启动解析,这段时间可以找到


我祝你在这方面好运,因为这是一项相当艰巨的任务。还要注意,与完整的CoreNLP相比,NTLK-Stanford解析器是不完整的。您不需要使用NTLK来使用CoreNLP,它将提供从NER到POS再到依赖项所需的一切。

刚刚回答了另一个更适合这个问题的问题:)

我一直在使用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')]