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