PNL | Etiquetado de retroceso para combinar etiquetadores

¿Qué es el etiquetado de parte del discurso (POS)? Es un proceso de convertir una oración en formas: lista de palabras, lista de tuplas (donde cada tupla tiene una forma (palabra, etiqueta)). La etiqueta en caso de es una etiqueta de parte del discurso e indica si la palabra es un sustantivo, un adjetivo, un verbo, etc. ¿Qué es el etiquetado de retroceso? Es una de las características más importantes de SequentialBackoffTagger , ya que permite combinar los etiquetadores. La ventaja de hacer esto es que si un etiquetador no conoce el etiquetado de una palabra, puede pasar esta tarea de etiquetado al siguiente etiquetador de retroceso. Si ese no puede hacerlo, puede pasar la palabra al siguiente etiquetador de retroceso, y así sucesivamente hasta que no queden etiquetadores de retroceso para verificar. Código #1 : Realización de etiquetado 

Python3

# Loading Libraries
from nltk.tag import SequentialBackoffTagger
from nltk.tag import DefaultTagger
from nltk.tag import UnigramTagger 
 
from nltk.corpus import treebank
 
# initializing training and testing set   
train_data = treebank.tagged_sents()[:3000]
test_data = treebank.tagged_sents()[3000:]
 
# Defining Tag
tag1 = DefaultTagger('NN')
 
# Tagging
tag2 = UnigramTagger(train_data, backoff = tag1)
 
# Evaluation
tag2.evaluate(test_data)

Producción : 

0.8752428232246924

Cómo funciona ? La clase SequentialBackoffTagger puede tomar un argumento de palabra clave de retroceso cuyo valor es otra instancia de SequentialBackoffTagger. En el código anterior, el etiquetador de parte del discurso de unigrama se retrocede con el etiquetador predeterminado y se entrena en el conjunto de datos treebank.tagged_sents() .   Código #2: Preparando una lista interna de etiquetadores de retroceso 

Python3

from nltk.tag import SequentialBackoffTagger
 
print (tag1._taggers == [tag1])
 
print ("\n", tag2._taggers == [tag2, tag1])

Producción : 

True

True

Cómo funciona ? 

  • Se inicializa la clase SequentialBackoffTagger, creando una lista interna de los etiquetadores de retroceso con el primer elemento siendo él mismo.
  • La lista interna de etiquetadores del etiquetador de retroceso se adjunta si se proporciona un etiquetador de retroceso.
  • La clase SequentialBackoffTagger usa _la lista de etiquetadores es la lista interna de etiquetadores de retroceso cuando se llama al método tag().
  • Llamando a choose_tag() en cada uno de ellos, revisa su lista de etiquetadores.
  • Se detiene y devuelve la etiqueta cuando se encuentra una etiqueta.
  • La etiqueta se devolverá si el etiquetador principal puede etiquetar la palabra.
  • De lo contrario, devuelve Ninguno y se prueba con el siguiente etiquetador, y así sucesivamente hasta que se encuentra una etiqueta, o de lo contrario, se devuelve Ninguno.

Código #3: Guardando y cargando un etiquetador entrenado con pickle. 

Python3

# Loading Libraries
import pickle
 
# Opening file and writing
file = open('tagger.pickle', 'wb')
pickle.dump(tagger, file)
file.close()
 
# Reading file
file = open('tagger.pickle', 'rb')
# Loading
tagger = pickle.load(f)

Producción : 

nltk.data.load('tagger.pickle') will load the file 

Publicación traducida automáticamente

Artículo escrito por Mohit Gupta_OMG 🙂 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *