如何用NLTK建立邮资语料库?

2024-04-19 04:33:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试从外部.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")
    

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


Tags: 文件from标记posimporttxtmycorpus
1条回答
网友
1楼 · 发布于 2024-04-19 04:33:55

我找到了解决方法: 请参考link了解分步程序。在

here下载相同的必要文件。在

一旦您遵循来自1的命令,将生成pickle文件,这是您的标记语料库。在

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

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

相关问题 更多 >