¿Cómo construir un corpus etiquetado POS con NLTK?

Intento construir un corpus etiquetado en POS a partir de archivos .txt externos para la extracción de entidades y fragmentos y relaciones. Hasta ahora he encontrado una incómoda solución de varios pasos:

  1. Leer archivos con en un corpus de texto plano:

     from nltk.corpus.reader import PlaintextCorpusReader my_corp = PlaintextCorpusReader(".", r".*\.txt") 
  2. Etiqueta de corpus con el etiquetador POS Penn incorporado:

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

(Por cierto, en este punto, Python lanzó un error: NameError: name 'batch' is not defined )

  1. Escriba las oraciones etiquetadas en el archivo:

     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. Y finalmente, lea esta salida nuevamente como corpus etiquetado:

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

Eso es muy inconveniente para una tarea bastante común (la fragmentación siempre solicita un cuerpo etiquetado). Mi pregunta es: ¿existe una forma más compacta y elegante de implementar esto? ¿Un lector de corpus que obtiene archivos de entrada en bruto y un etiquetador al mismo tiempo, por ejemplo?

Obtuve la solución de trabajo para esto: consulte el enlace para ver el procedimiento paso a paso.

Descarga los archivos necesarios para el mismo desde aquí .

Una vez que siga los comandos de 1 pickle, se generará un archivo y este es su cuerpo etiquetado.

Una vez que se genera el archivo pickle, puede verificar si su etiquetador funciona bien ejecutando el siguiente fragmento de código:

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