PNL | Trigrams’n’Tags (TnT) Etiquetado

TnT Tagger: Es un etiquetador estadístico que funciona sobre modelos de Markov de segundo orden.

  • Es un etiquetador de parte del discurso muy eficiente que se puede entrenar en diferentes idiomas y en cualquier conjunto de etiquetas.
  • Para la generación de parámetros, el componente se entrena en corpus etiquetados. Incorpora diferentes métodos de suavizado y manejo de palabras desconocidas
  • La interpolación lineal se utiliza para suavizar, los pesos respectivos se determinan mediante la interpolación eliminada.

El etiquetador TnT tiene una API diferente a la de los etiquetadores normales. Uno puede usar explícitamente el método train() después de crearlo.

Código n.º 1: Uso del método train()

from nltk.tag import tnt
from nltk.corpus import treebank
  
# initializing training and testing set    
train_data = treebank.tagged_sents()[:3000]
test_data = treebank.tagged_sents()[3000:]
  
# initializing tagger
tnt_tagging = tnt.TnT()
  
# training
tnt_tagging.train(train_data)
  
# evaluating
a = tnt_tagging.evaluate(test_data)
  
print ("Accuracy of TnT Tagging : ", a)

Producción :

Accuracy of TnT Tagging : 0.8756313403842003

Comprender el funcionamiento del etiquetador TnT:

  • Mantiene el número de
    • DistFrecuencia Interna
    • ConditionalFreqDist, que se basa en los datos de entrenamiento.
  • La distribución de frecuencias (FreqDist) cuenta los unigramas, bigramas y trigramas.
  • Estas frecuencias se utilizan para los cálculos de las probabilidades de posibles etiquetas para cada palabra.
  • El etiquetador TnT usa todos los modelos de ngram juntos para elegir la mejor etiqueta en lugar de construir una string de retroceso de subclases de NgramTagger.
  • En función de las probabilidades de cada etiqueta posible, elige el modelo más probable para toda la oración.

Código n.º 2: Usar etiquetador para palabras desconocidas como ‘unk’

from nltk.tag import tnt
from nltk.corpus import treebank
from nltk.tag import DefaultTagger
  
# initializing training and testing set    
train_data = treebank.tagged_sents()[:3000]
test_data = treebank.tagged_sents()[3000:]
  
# initializing tagger
unk = DefaultTagger('NN')
tnt_tagging = tnt.TnT(unk = unk, Trained = True)
  
# training 
tnt_tagging.train(train_data)
  
# evaluating
a = tnt_tagging.evaluate(test_data)
  
print ("Accuracy of TnT Tagging : ", a)

Producción :

Accuracy of TnT Tagging : 0.892467083962875
  • El método tag() del etiquetador desconocido solo se llama con una oración de una sola palabra.
  • El etiquetador TnT puede pasar un etiquetador de palabras desconocidas como unk.
  • Se puede pasar Entrenado = Verdadero, si este etiquetador ya está entrenado.
  • De lo contrario, llamará a unk.train(data) con los mismos datos que se pueden pasar al método train().

Control de búsqueda de haz:

  • Otro parámetro a modificar para TnT es N , es decir, controla el número. de posibles soluciones que mantiene el etiquetador.
  • Por defecto N = 1000.
  • La cantidad de memoria aumentará si aumenta el valor de N, sin ningún aumento específico de precisión.
  • La cantidad de memoria disminuirá si disminuye el valor de N, pero puede disminuir la precisión.

Código #3: Usando N = 100

from nltk.tag import tnt
from nltk.corpus import treebank
from nltk.tag import DefaultTagger
  
# initializing training and testing set    
train_data = treebank.tagged_sents()[:3000]
test_data = treebank.tagged_sents()[3000:]
  
# initializing tagger
tnt_tagger = tnt.TnT(N = 100)
  
# training 
tnt_tagging.train(train_data)
  
# evaluating
a = tnt_tagging.evaluate(test_data)
  
print ("Accuracy of TnT Tagging : ", a)

Producción :

Accuracy of TnT Tagging : 0.8756313403842003

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 *