No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Adquiere por un año todos los cursos, escuelas y certificados por un precio especial.

Antes: $249

Currency
$219/año

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Comprar ahora

Termina en:

0D
22H
6M
30S

Entrenando un HMM en Python

8/26
Recursos

Aportes 9

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

para hacer un sort sobre estos diccionarios basados en los valores de las probabilidades encontradas.

# transition sorted
sorted_transitionprobs = sorted(transitionProbDict.items(), key = lambda x: x[1], reverse=True)
sorted_transitionprobs


# Emission sorted
sorted_emissionprobs = sorted(emissionProbDict.items(), key = lambda x: x[1], reverse=True)
sorted_emissionprobs

Para las personas que el transitionDict les da vacío, hay que hacer una pequeña corrección:

El profe define prevtag = None después de los dos ciclos for.
Por lo tanto cada vez que itero el valro de prevtag vuelve aser None y siempre se repite la primera iteración para el TransitionDict.

Para corregirlo hay que definir prevtag = None antes de los dos ciclos for.

Saludos.

Creo que en el cálculo de emissionProbDict la condicion del if debío ser:

if tagCountDict[tag]>0:

La ecuacion de Probabilidades de Emisión tiene un pequeño error, el numerador de la ecuacion debe ser el siguiente

C(word,tag) 

en lugar de

C(word|tag)

Genial esta clase!

Código corregido

<
tag_count_dict = {}
emission_dict = {}
transition_dict = {}

tagtype = 'upos'
data_file = open('UD_Spanish-AnCora/es_ancora-ud-dev.conllu', 'r', encoding='utf-8')

prevtag = None
for tokenlist in parse_incr(data_file):
    for token in tokenlist:
        
        #C(tag)
        tag = token[tagtype]
        if tag in tag_count_dict.keys():
            tag_count_dict[tag] += 1
        else:
            tag_count_dict[tag] = 1
            
        #C(word|tag) -> probabilidades de emision
        word_tag = token['form'].lower() + '|' +token[tagtype]
        if word_tag in emission_dict.keys():
            emission_dict[word_tag] += 1
        else:
            emission_dict[word_tag] = 1
            
        # C(tag|tag_previo) -> probabilidades de transición
        if prevtag is None:
            prevtag = tag
            continue
        transitiontags = tag + '|' + prevtag
        if transitiontags in transition_dict.keys():
            transition_dict[transitiontags] = transition_dict[transitiontags] + 1
        else:
            transition_dict[transitiontags] = 1
        prevtag = tag
> 

Para quienes no entiendan el concepto de “El corpus”, es un conjunto de textos suficientemente grande de muestras reales de una lengua determinada.

que bien

jejejj y asi es como un modelo equivale a dos diccionarios 😃 muy bueno