阅读了很多帖子后,我仍然在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中创建一个语料库但没有找到。语料库模块中是否有一些方法可以保存我创建的“newcorpus”?那么它可以用作训练标记器吗?另外,我应该使用标记句子文件作为PlaintextCorpusReader的输入还是只是一组无标记的句子?
答案 0 :(得分: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;查看文档。
但实际上并不支持以各种支持的格式编写语料库。为此,找到与您的语料库类似的语料库,并模拟其格式。然后,您可以使用同一个阅读器来阅读您的语料库。 (例如,布朗语料库显示它由格式为word / tag的空格分隔的标记组成)