PNL | Etiquetas de palabras probables

nltk.probability.FreqDist se usa para encontrar las palabras más comunes contando las frecuencias de las palabras en el corpus del banco de árboles. La clase ConditionalFreqDist se crea para palabras etiquetadas, donde contamos la frecuencia de cada etiqueta para cada palabra. Estos recuentos se utilizan luego para construir un modelo de las palabras frecuentes como claves, con la etiqueta más frecuente para cada palabra como valor. Código #1: función de creación 

Python3

# Loading Libraries
from nltk.probability import FreqDist, ConditionalFreqDist
 
# Making function
def word_tag_model(words, tagged_words, limit = 200):
     
    fd = FreqDist(words)
    cfd = ConditionalFreqDist(tagged_words)
    most_freq = (word for word, count in fd.most_common(limit))
     
return dict((word, cfd[word].max())
             for word in most_freq)

  Código #2: Usar la función con UnigramTagger 

Python3

# loading libraries
from tag_util import word_tag_model
from nltk.corpus import treebank
from nltk.tag import UnigramTagger
 
# initializing training and testing set   
train_data = treebank.tagged_sents()[:3000]
test_data = treebank.tagged_sents()[3000:]
 
# Initializing the model
model = word_tag_model(treebank.words(),
                       treebank.tagged_words())
 
# Initializing the Unigram
tag = UnigramTagger(model = model)
 
print ("Accuracy : ", tag.evaluate(test_data))

Producción :

Accuracy : 0.559680552557738

  Código n.º 3: Probemos la string de retroceso 

Python3

# Loading libraries
from nltk.tag import UnigramTagger
from nltk.tag import DefaultTagger
 
default_tagger = DefaultTagger('NN')
 
likely_tagger = UnigramTagger(
        model = model, backoff = default_tagger)
 
tag = backoff_tagger(train_sents, [
        UnigramTagger, BigramTagger,
        TrigramTagger], backoff = likely_tagger)
     
print ("Accuracy : ", tag.evaluate(test_data))

Producción :

Accuracy : 0.8806820634578028

Nota: La string de retroceso aumenta la precisión. Podemos mejorar aún más este resultado usando efectivamente la clase UnigramTagger.   Código #4: Anulación manual de etiquetadores entrenados 

Python3

# Loading libraries
from nltk.tag import UnigramTagger
from nltk.tag import DefaultTagger
 
default_tagger = DefaultTagger('NN')
 
tagger = backoff_tagger(train_sents, [
        UnigramTagger, BigramTagger,
        TrigramTagger], backoff = default_tagger)
     
likely_tag = UnigramTagger(model = model, backoff = tagger)
 
print ("Accuracy : ", likely_tag.evaluate(test_data))

Producción :

Accuracy : 0.8824088063889488

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 *