首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将依赖解析的输出转换为树

将依赖解析的输出转换为树
EN

Stack Overflow用户
提问于 2016-09-06 04:56:09
回答 1查看 3.1K关注 0票数 2

我使用的是Stanford dependency parser,我得到以下句子的输出

我在睡梦中射杀了一只大象

代码语言:javascript
复制
python dep_parsing.py 
[((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'nmod', (u'sleep', u'NN')), ((u'sleep', u'NN'), u'case', (u'in', u'IN')), ((u'sleep', u'NN'), u'nmod:poss', (u'my', u'PRP$'))]

--我想把它转换成一个图,节点是每个令牌,边是它们之间的关系。

我需要图形结构来进行进一步的处理,因此,如果修改它很容易,并且必须易于表示,它将有所帮助。

到现在为止这是我的密码。

代码语言:javascript
复制
from nltk.parse.stanford import StanfordDependencyParser
stanford_parser_dir = 'stanford-parser/'
eng_model_path = stanford_parser_dir  + "stanford-parser-models/edu/stanford/nlp/models/lexparser/englishRNN.ser.gz"
my_path_to_models_jar = stanford_parser_dir  + "stanford-parser-3.5.2-models.jar"
my_path_to_jar = stanford_parser_dir  + "stanford-parser.jar"

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

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

怎样才能形成这样的图形结构呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-06 06:33:38

您可以遍历dep.triples()并获得所需的输出。

代码:

代码语言:javascript
复制
for triple in dep.triples():
    print triple[1],"(",triple[0][0],", ",triple[2][0],")"

输出:

代码语言:javascript
复制
nsubj ( shot ,  I )
dobj ( shot ,  elephant )
det ( elephant ,  an )
nmod ( shot ,  sleep )
case ( sleep ,  in )
nmod:poss ( sleep ,  my )

有关更多信息,您可以检查:NLTK测向仪方法triples()to_dot()dep.tree().draw()

编辑-

dep.to_dot()的输出是

代码语言:javascript
复制
digraph G{
edge [dir=forward]
node [shape=plaintext]

0 [label="0 (None)"]
0 -> 2 [label="root"]
1 [label="1 (I)"]
2 [label="2 (shot)"]
2 -> 4 [label="dobj"]
2 -> 7 [label="nmod"]
2 -> 1 [label="nsubj"]
3 [label="3 (an)"]
4 [label="4 (elephant)"]
4 -> 3 [label="det"]
5 [label="5 (in)"]
6 [label="6 (my)"]
7 [label="7 (sleep)"]
7 -> 5 [label="case"]
7 -> 6 [label="nmod:poss"]
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39340907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档