繁体   English   中英

如何使用NLTK构建POS标记语料库?

[英]How to build POS-tagged corpus with NLTK?

我尝试从外部.txt文件构建一个POS标记的语料库,用于分块和实体及关系提取。 到目前为止,我发现了一个繁琐的多步解决方案:

  1. 使用纯文本语料库读取文件:

     from nltk.corpus.reader import PlaintextCorpusReader my_corp = PlaintextCorpusReader(".", r".*\\.txt") 
  2. 标签语料库,内置Penn POS-tagger:

     my_tagged_corp= nltk.batch_pos_tag(my_corp.sents()) 

(顺便说一句,在这篇文章中Python引发了一个错误: NameError: name 'batch' is not defined

  1. 将标记的句子写入文件:

     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 () 
  2. 最后,再次将此输出作为标记语料库读取:

     from nltk.corpus.reader import TaggedCorpusReader my_corpus2 = TaggedCorpusReader(".",r"output.txt") 

这对于一个非常常见的任务来说非常不方便(分块总是请求标记的语料库)。 我的问题是:是否有更紧凑和优雅的方式来实现这一点? 例如,同时获取原始输入文件和标记器的语料库阅读器?

我得到了这个工作解决方案:请逐步参考链接程序。

这里下载相同的必要文件。

一旦你按照1个 pickle文件中的命令生成,这就是你标记的语料库。

生成pickle文件后,您可以通过运行以下代码来检查您的tagger是否正常工作:

import nltk.data
tagger = nltk.data.load("taggers/NAME_OF_TAGGER.pickle")
tagger.tag(['some', 'words', 'in', 'a', 'sentence'])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM