作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
翻阅 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。
你需要从他们的网站下载两个东西:
确保您的语言模型版本与您的 Stanford CoreNLP 解析器版本匹配!
截至 2018 年 5 月 22 日,当前的 CoreNLP 版本是 3.9.1。
下载这两个文件后,将 zip 文件解压缩到任何你喜欢的地方。
接下来,加载模型并通过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/
我是一名优秀的程序员,十分优秀!