gpt4 book ai didi

python - 如何在 NLTK 中进行依赖解析?

转载 作者:IT老高 更新时间:2023-10-28 21:56:02 25 4
gpt4 key购买 nike

翻阅 NLTK 书,不清楚如何从给定句子生成依赖树。

本书相关章节:sub-chapter on dependency grammar给出 example figure但它没有显示如何解析句子以提出这些关系 - 或者我可能遗漏了 NLP 中的一些基本内容?

编辑:我想要类似于 stanford parser 的东西做:给定一个句子“我在睡梦中射杀了一头大象”,它应该返回如下内容:

nsubj(shot-2, I-1)
det(elephant-4, an-3)
dobj(shot-2, elephant-4)
prep(shot-2, in-5)
poss(sleep-7, my-6)
pobj(in-5, sleep-7)

最佳答案

我们可以使用来自 NLTK 的 Stanford Parser。

要求

你需要从他们的网站下载两个东西:

  1. Stanford CoreNLP parser .
  2. Language model为您想要的语言(例如 english language model )

警告!

确保您的语言模型版本与您的 Stanford CoreNLP 解析器版本匹配!

截至 2018 年 5 月 22 日,当前的 CoreNLP 版本是 3.9.1。

下载这两个文件后,将 zip 文件解压缩到任何你喜欢的地方。

Python 代码

接下来,加载模型并通过NLTK使用

from nltk.parse.stanford import StanfordDependencyParser

path_to_jar = 'path_to/stanford-parser-full-2014-08-27/stanford-parser.jar'
path_to_models_jar = 'path_to/stanford-parser-full-2014-08-27/stanford-parser-3.4.1-models.jar'

dependency_parser = StanfordDependencyParser(path_to_jar=path_to_jar, path_to_models_jar=path_to_models_jar)

result = dependency_parser.raw_parse('I shot an elephant in my sleep')
dep = result.next()

list(dep.triples())

输出

最后一行的输出是:

[((u'shot', u'VBD'), u'nsubj', (u'I', u'PRP')),
((u'shot', u'VBD'), u'dobj', (u'elephant', u'NN')),
((u'elephant', u'NN'), u'det', (u'an', u'DT')),
((u'shot', u'VBD'), u'prep', (u'in', u'IN')),
((u'in', u'IN'), u'pobj', (u'sleep', u'NN')),
((u'sleep', u'NN'), u'poss', (u'my', u'PRP$'))]

我想这就是你想要的。

关于python - 如何在 NLTK 中进行依赖解析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7443330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com