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

时间:2016-06-24 18:43:52

标签: python nlp nltk pos-tagger tagged-corpus

我尝试从外部.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())
    
  3. (顺便说一句,在这篇文章中,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")
      
    3. 这对于一项非常常见的任务来说非常不方便(分块总是请求标记的语料库)。我的问题是:是否有更紧凑和优雅的方式来实现这一点?例如,语料库阅读器可以同时获取原始输入文件和标记器吗?

1 个答案:

答案 0 :(得分:1)

我得到了有效的解决方案: 请逐步参考link

here下载相同的必要文件。

1开始关注命令后,将生成pickle文件,这是您标记的语料库。

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

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