句子的漂亮显示及其语法依赖性

时间:2018-10-10 15:27:59

标签: python nltk stanford-nlp graphviz

是否有人知道如何显示具有以下依存关系的句子:prettyprnt dependencies 我正在NLTK中使用StanfordDependencyParser来获取依赖关系,并能够使用Graphviz显示树表示形式:

from nltk.parse import stanford
from graphviz import Source
sdp = stanford.StanfordDependencyParser('path/to/stanford-parser-3.9.1-models.jar', corenlp_options=('-retainTmpSubcategories', '-originalDependencies', '-outputFormatOptions', 'typedDependenciesCollapsed'))

p = sdp.raw_parse(sent)
dot = Source(next(p).to_dot())
dot.view()

但无法弄清楚如何保留原始句子并使边缘从一个单词延伸到另一个单词。

2 个答案:

答案 0 :(得分:0)

这些是使用Brat annotation tool生成的,source code是一个JS库,用于呈现令牌注释或此类依赖关系树注释。

您可以查看corenlp.run的this section以获取有关如何使用该工具的示例。例如,http://mapstruct.org/documentation/dev/api/org/mapstruct/AfterMapping.html用于依赖性树。

答案 1 :(得分:0)

这是一个使用 Graphviz 的近似值 - 如果你眯着眼睛看,有点接近。每个单词使用一个“html”表格。

digraph s1 {
  graph [nodesep=.01]
  node [shape=plaintext]
  {
  rank=same
  s1 [ordering=out label=1]
  edge [style=invis]

  s1->w10 
  s1->w9
  s1->w8
  s1->w7
  s1->w6
  s1->w5
  s1->w4
  s1->w3
  s1->w2
  s1->w1
  edge [style=""]  
  w1 [label=<
    <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
      <TR><TD BGCOLOR="lavender">PRP</TD></TR>
      <TR><TD BORDER="0">We</TD></TR>
   </TABLE>>]
  w2 [shape=plaintext  label=<   
   <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
      <TR><TD BGCOLOR="green1">PRP</TD></TR>
      <TR ><TD BORDER="0">are</TD></TR>
   </TABLE>>]
  w3 [shape=plaintext  label=<   
   <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
      <TR><TD BGCOLOR="green1">PRP</TD></TR>
      <TR ><TD BORDER="0">facing</TD></TR>
   </TABLE>>]   
  w4 [shape=plaintext  label=<
   <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
      <TR><TD BGCOLOR="lavender">PRP</TD></TR>
      <TR><TD BORDER="0">a</TD></TR>
   </TABLE>>]

  w5 [shape=plaintext  label=<
   <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
      <TR><TD BGCOLOR="lavender">PRP</TD></TR>
      <TR><TD BORDER="0">failure</TD></TR>
   </TABLE>>]
  w6 [shape=plaintext  label=<
   <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
      <TR><TD BGCOLOR="lavender">PRP</TD></TR>
      <TR><TD BORDER="0">when</TD></TR>
   </TABLE>>]
  w7 [shape=plaintext  label=<
   <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
      <TR><TD BGCOLOR="lavender">PRP</TD></TR>
      <TR><TD BORDER="0">running</TD></TR>
   </TABLE>>]
  w8 [shape=plaintext  label=<
   <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
      <TR><TD BGCOLOR="lavender">VBG</TD></TR>
      <TR><TD BORDER="0">xyz</TD></TR>
   </TABLE>>]
  w9 [shape=plaintext  label=<
   <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
      <TR><TD BGCOLOR="lavender">NN</TD></TR>
      <TR><TD BORDER="0">job</TD></TR>
   </TABLE>>]
  w10 [shape=plaintext  label=<
   <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
      <TR><TD BGCOLOR="lavender">.</TD></TR>
      <TR><TD BORDER="0">.</TD></TR>
   </TABLE>>]

   edge[constraint=false]
   w3->w2 [label="\naux"]
   w3->w1 [label="\nblah 1"]
   w3:ne->w5 [label="\nblah 2"]
   w3:ne->w7 [label="\nblah 3"]
   w3:n->w10 [label="\nblah 4"]
   }
}

给这个:
enter image description here