繁体   English   中英

NLTK:conllstr2tree无法正常运行(Python3)

[英]NLTK: conllstr2tree does not work properly (Python3)

可以在http://www.nltk.org/book/ch07.html的第3.1部分中说明我正在尝试做的示例

本质上是这样的:

import nltk
text = " ..... "  #Whatever the text should be
nltk.chunk.conllstr2tree(text, chunk_types=['NP']).draw()

这将根据给定的text生成树。
我编写的代码试图使用文本文件中的输入。 因此,在打开它之后,我使用readlines获取它的String版本。

import nltk, re, pprint
f = open('sample.txt', 'r')
f1 = f.read().strip()
f2 = ' '.join(f1.split())
nltk.chunk.conllstr2tree(f2, chunk_types=['NP']).draw()

我得到的错误是:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-17-768af8cd2f77> in <module>()
      3 f1 = f.read().strip()
      4 f2 = ' '.join(f1.split())
----> 5 nltk.chunk.conllstr2tree(f2, chunk_types=['NP']).draw()

/usr/local/lib/python3.4/dist-packages/nltk/chunk/util.py in conllstr2tree(s, chunk_types, root_label)
    380         match = _LINE_RE.match(line)
    381         if match is None:
--> 382             raise ValueError('Error on line %d' % lineno)
    383         (word, tag, state, chunk_type) = match.groups()
    384 

ValueError: Error on line 0

您要从sample.txt传入原始字符串数据,修剪空白f1 ,然后在空格f2上标记化。

如果您看一下NTLK书中的示例,其中提到了分块方法,

nltk.chunk.conllstr2tree(text, chunk_types=['NP']).draw()

text变量是一系列带有IOB标签的数据,如下所示:

text = """
   he PRP B-NP
   accepted VBD B-VP
   the DT B-NP
   position NN I-NP
   of IN B-PP
   vice NN B-NP
   chairman NN I-NP
   of IN B-PP
   Carlyle NNP B-NP
   Group NNP I-NP
   , , O
   a DT B-NP
   merchant NN I-NP
   banking NN I-NP
   concern NN I-NP
   . . O
"""

根据源代码文档中的conllstr2tree方法:

返回以给定的CONLL 2000样式字符串编码的单个句子的块结构。 此函数将CoNLL IOB字符串转换为树。 它使用指定的块类型(默认为NP,PP和VP),并创建一个根植于标记为S的节点的树(默认情况下)。

问题是您很简单地没有以正确的格式传递(CoNLL 2000华尔街日报),该格式应如下所示(不带斜杠):

token / POS Tag / IOB-Chunk Type

因此,您将需要几个额外的步骤:

  1. 查找每个单词可能的词性标签。
  2. 查找块类型
  3. 在适当的IOB标签之前。

提供一个示例代码片段(对于一个SO问题)是不合理的,因为这需要大量工作,但是希望这可以为您指明正确的方向!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM