- 3.1 读取 IOB 格式与 CoNLL2000 语料库
3.1 读取 IOB 格式与 CoNLL2000 语料库
使用corpus模块,我们可以加载已经标注并使用 IOB 符号划分词块的《华尔街日报》文本。这个语料库提供的词块类型有NP,VP和PP。正如我们已经看到的,每个句子使用多行表示,如下所示:
he PRP B-NPaccepted VBD B-VPthe DT B-NPposition NN I-NP...

我们可以使用 NLTK 的 corpus 模块访问较大量的已经划分词块的文本。CoNLL2000 语料库包含 27 万词的《华尔街日报文本》,分为“训练”和“测试”两部分,标注有词性标记和 IOB 格式词块标记。我们可以使用nltk.corpus.conll2000访问这些数据。下面是一个读取语料库的“训练”部分的第 100 个句子的例子:
>>> from nltk.corpus import conll2000>>> print(conll2000.chunked_sents('train.txt')[99])(S(PP Over/IN)(NP a/DT cup/NN)(PP of/IN)(NP coffee/NN),/,(NP Mr./NNP Stone/NNP)(VP told/VBD)(NP his/PRP$ story/NN)./.)
正如你看到的,CoNLL2000 语料库包含三种词块类型:NP词块,我们已经看到了;VP词块如 has already delivered;PP块如 because of。因为现在我们唯一感兴趣的是NP词块,我们可以使用chunk_types参数选择它们:
>>> print(conll2000.chunked_sents('train.txt', chunk_types=['NP'])[99])(SOver/IN(NP a/DT cup/NN)of/IN(NP coffee/NN),/,(NP Mr./NNP Stone/NNP)told/VBD(NP his/PRP$ story/NN)./.)
