【发布时间】:2017-03-03 04:20:34
【问题描述】:
所以我应该使用我非常简单的解析器从 WSJ 语料库中分块一些标记的句子。当我自己标记句子时,它可以工作......但是使用他们给定的方式来获取标记的句子却没有。
我的作业告诉我使用标记的 WSJ 语料库 nltk.corpus.treebank.tagged_sents() 的句子 200–220。但是我的解析器给了我一个错误。
我的代码有效(手动标记句子有效):
tbss = concat(treebank.sents()[200:220])
tag1 = nltk.pos_tag(tbss)
print(cp.parse(tag1))
使用他们不起作用的代码:
tag2 = nltk.corpus.treebank.tagged_sents()[200:220]
print(cp.parse(tag2))
>>> ValueError: chunk structures must contain tagged tokens or trees
为什么第二个会给出这个错误?我打印了标签 1 和标签 2,它们看起来几乎相同......那么为什么一个解析而不是另一个......我做错了吗?
【问题讨论】:
-
打印结构可能没有那么有用。看看
repr(...)的对象,或者甚至打开它并单独检查子结构。也可能是抛出异常的对象遗漏了某个方法,所以需要以某种方式包装它以提供所需的接口。 -
另外,在第一种情况下,您应用默认的 POS 标记器(我不会称之为“手动”,顺便说一句),您首先连接句子,因此您可能会得到一个标记序列.我看不到在第二种情况下会发生这种情况,因此您可能有多个标记序列(每个句子一个)。
标签: python nlp nltk tagging pos-tagger