如何在完全解析的树上注释自定义命名实体标记?

时间:2016-03-05 05:24:11

标签: nltk text-parsing named-entity-recognition

使用nltk.chunk.tagstr2tree,“我们可以将一串带括号的标记文本分成块和未分块的标记,然后生成一个树。”:

>>> s = "[ Pierre/NNP Vinken/NNP ] ,/, [ 61/CD years/NNS ] old/JJ ,/, will/MD join/VB [ the/DT board/NN ] ./."
>>> t = nltk.chunk.tagstr2tree(s, chunk_label='NP')
>>> t.pprint()
(S
  (NP Pierre/NNP Vinken/NNP)
  ,/,
  (NP 61/CD years/NNS)
  old/JJ
  ,/,
  will/MD
  join/VB
  (NP the/DT board/NN)
  ./.)

而不是上面的浅层解析结构,假设我们现在在下面有一个完整解析的树。

>>> print(treebank.parsed_sents()[0])
(S
  (NP-SBJ
    (NP (NNP Pierre) (NNP Vinken)) # want to add some NE info, namely "NAME".
    (, ,)
    (ADJP (NP (CD 61) (NNS years)) (JJ old)) # "AGE"
    (, ,))
  (VP
    (MD will)
    (VP
      (VB join)
      (NP (DT the) (NN board)) # "Organization"
      (PP-CLR (IN as) (NP (DT a) (JJ nonexecutive) (NN director)))
      (NP-TMP (NNP Nov.) (CD 29))))
  (. .))

现在我想在Pierre Vinken61 years oldthe board的相应令牌上添加一些信息,即“姓名”,“年龄”和“组织”。 所以它基本上类似于第一个例子的分块任务,但区别在于我想在已经完全分配的树上注释自定义NE标签。

有没有方便的方法(像NLTK中的语料库阅读器这样的工具)在这个已解析的树上添加NE标签?我想手动完成此操作。

Finkel and Manning (2009)

也许this paper的数字1很好地说明了我的需求。 它说“知道一个短语是一个命名实体,以及实体的类型,可能有助于使实体的结构背景和内部结构正确”, 因此它试图“使用命名实体信息扩充解析树,以输入我们的学习算法”。

我想在FULL-PARSED树上手动注释我的自定义NE标签,因为我也相信它有助于理解NE的语法结构,并且对将来训练NER chunker很有用。

任何提示或相关工具/参考将不胜感激。 非常感谢你!

0 个答案:

没有答案
相关问题