NgramTagger tiene 3 subclases
- UnigramTagger
- BigramTagger
- TrigramTagger
La subclase BigramTagger usa la etiqueta anterior como parte de su contexto
. La subclase TrigramTagger usa las dos etiquetas anteriores como parte de su contexto.
ngram : es una subsecuencia de n elementos.
Idea de las subclases de NgramTagger:
- Al observar las palabras anteriores y las etiquetas POS, se puede adivinar la etiqueta de parte del discurso para la palabra actual.
- Cada etiquetador mantiene un diccionario de contexto (la clase padre ContextTagger se usa para implementarlo).
- Este diccionario se usa para adivinar esa etiqueta según el contexto.
- El contexto es una cantidad de palabras etiquetadas previamente en el caso de las subclases de NgramTagger.
Código #1: Funcionamiento del etiquetador Bigram
# Loading Libraries from nltk.tag import DefaultTagger from nltk.tag import BigramTagger from nltk.corpus import treebank # initializing training and testing set train_data = treebank.tagged_sents()[:3000] test_data = treebank.tagged_sents()[3000:] # Tagging tag1 = BigramTagger(train_data) # Evaluation tag1.evaluate(test_data)
Producción :
0.11318799913662854
Código #2: Funcionamiento del etiquetador Trigram
# Loading Libraries from nltk.tag import DefaultTagger from nltk.tag import TrigramTagger from nltk.corpus import treebank # initializing training and testing set train_data = treebank.tagged_sents()[:3000] test_data = treebank.tagged_sents()[3000:] # Tagging tag1 = TrigramTagger(train_data) # Evaluation tag1.evaluate(test_data)
Producción :
0.06876753723289446
Código n.º 3: Uso colectivo del etiquetador Unigram, Bigram y Trigram.
# Loading Libraries from nltk.tag import TrigramTagger from tag_util import backoff_tagger from nltk.corpus import treebank # initializing training and testing set train_data = treebank.tagged_sents()[:3000] test_data = treebank.tagged_sents()[3000:] backoff = DefaultTagger('NN') tag = backoff_tagger(train_sents, [UnigramTagger, BigramTagger, TrigramTagger], backoff = backoff) tag.evaluate(test_sents)
Producción :
0.8806820634578028
Cómo funciona ?
- La función backoff_tagger crea una instancia de cada clase de etiquetador.
- Proporciona etiquetador anterior y train_sents como retroceso.
- El orden de las clases de etiquetador es importante: en el código anterior, la primera clase es UnigramTagger y, por lo tanto, se entrenará primero y se le dará el etiquetador de retroceso inicial (el DefaultTagger).
- Este etiquetador luego se convierte en el etiquetador de retroceso para la siguiente clase de etiquetador.
- El etiquetador final devuelto será una instancia de la última clase de etiquetador: TrigramTagger .
Código #4: Prueba
print (tagger._taggers[-1] == backoff) print ("\n", isinstance(tagger._taggers[0], TrigramTagger)) print ("\n", isinstance(tagger._taggers[1], BigramTagger))
Producción :
True True True
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