0

在阅读了很多帖子之后,我仍然有可能在 nltk 中制作自定义语料库。我有一个标记句子的文本文件,每个项目的字符串形式为 ... word/tag 。我想用这些东西训练一个标注器。我正在尝试使用一个名为 train-tagger 的 nltk 包来训练各种类型的标注器。2个问题。1) train-tagger 可以使用文本文件作为输入还是仅使用 nltk 语料库对象?2)如果只使用语料库,如何从文本文件创建一个?我尝试了以下代码来创建语料库...

import nltk
from nltk.corpus import PlaintextCorpusReader
corpus_root = './'
newcorpus = PlaintextCorpusReader(corpus_root, '.*')
print newcorpus.raw('IOBHarrisonsTraining.txt')  .... this is my tagged text file

似乎工作,但我找不到输出。应该在运行此代码的文件夹中创建一个语料库,或者在 nltk_data/corpora 中创建一个语料库,但没有找到。语料库模块中是否有一些方法可以保存我创建的“新语料库”?然后可以将其用作训练标记器的输入?另外,我应该使用标记句子文件作为 PlaintextCorpusReader 的输入还是只是一组未标记的句子?

4

1 回答 1

3

NLTK 语料库存储为文本文件的集合。NLTK 语料库功能被组织为许多用于各种文件格式的阅读器类。您可以在 nltk.corpus.reader 中找到它们。nltk.corpus 模块还提供了 nltk_data 中语料库的快捷方式;他们只是使用语料库文件的路径启动适当的阅读器类。但是新语料库不会神奇地作为对象出现在 nltk.corpus 中;要阅读您自己的内容,请实例化相应的阅读器类。例如,在 nltk/corpus/ init .py 中,您会发现以下内容:

gutenberg = LazyCorpusLoader(
    'gutenberg', PlaintextCorpusReader, r'(?!\.).*\.txt')

PlaintextCorpusReader 是从 nltk.corpus.reader 导入的,所有其他阅读器类都可以在其中找到。无需依赖 LazyCorpusReader 即可直接使用;检查文档。

但确实不支持以各种支持的格式编写语料库。为此,请找到与您的相似的语料库,并模仿其格式。然后,您可以使用同一个阅读器来阅读您的语料库。(例如,布朗语料库显示它由单词/标签格式的空格分隔标记组成)

于 2012-12-12T09:04:42.350 回答