我尝试从外部.txt
文件构建一个POS标记的语料库,用于分块和实体及关系提取。到目前为止,我发现了一个繁琐的多步解决方案:
将文件读入纯文本语料库:
from nltk.corpus.reader import PlaintextCorpusReader
my_corp = PlaintextCorpusReader(".", r".*\.txt")
使用内置Penn POS-tagger标记语料库:
my_tagged_corp= nltk.batch_pos_tag(my_corp.sents())
(顺便说一句,在这篇文章中,Python引发了一个错误:NameError: name 'batch' is not defined
)
将标记的句子写入文件:
taggedfile = open("output.txt" , "w")
for sent in dd_tagged:
line = " ".join( w+"/"+t for (w, t) in sent )
taggedfile.write(line + "\n")
taggedfile.close ()
最后,再次将此输出作为标记语料库读取:
from nltk.corpus.reader import TaggedCorpusReader
my_corpus2 = TaggedCorpusReader(".",r"output.txt")
这对于一项非常常见的任务来说非常不方便(分块总是请求标记的语料库)。我的问题是:是否有更紧凑和优雅的方式来实现这一点?例如,语料库阅读器可以同时获取原始输入文件和标记器吗?