我尝试从外部 .txt
文件构建一个词性标记的语料库,用于分块以及实体和关系提取。到目前为止,我已经找到了一个繁琐的多步骤解决方案:
将带有 的文件读入纯文本语料库:
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")
这对于一个非常常见的任务来说非常不方便(分块总是需要标记的语料库)。我的问题是:是否有更紧凑和优雅的方式来实现它?例如,同时获取原始输入文件和标注器的语料库阅读器?
最佳答案
我得到了解决方案: 请引用link一步一步的过程。
从 here 下载必要的文件.
一旦您遵循来自 1 的命令将生成 pickle 文件,这是您标记的语料库。
生成 pickle 文件后,您可以通过运行以下代码来检查您的标记器是否正常工作:
import nltk.data
tagger = nltk.data.load("taggers/NAME_OF_TAGGER.pickle")
tagger.tag(['some', 'words', 'in', 'a', 'sentence'])
关于python - 如何使用 NLTK 构建词性标注语料库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38020141/