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