No tienes acceso a esta clase

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

No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

12 Días
5 Hrs
58 Min
8 Seg

Entrenando un HMM en Python

8/26
Recursos

Aportes 12

Preguntas 3

Ordenar por:

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

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.

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

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!

![](https://static.platzi.com/media/user_upload/image-ed9dd285-c96e-40bc-9229-8a142ecbba9a.jpg) Cada línea contiene las siguientes columnas: 1. Índice de la palabra en la oración. 2. La palabra original. 3. La forma raíz o lema de la palabra. 4. La categoría gramatical (POS). 5. La etiqueta POS detallada. 6. Otros detalles sintácticos.
Que locura todo este tema, estoy fascinado con la computación. La verdad no soy el más habilidoso en matemáticas y algoritmos, pero de lo que he ido comprendiendo me ha volado la cabeza. Por cierto, que buen profesor!

Viendo la calidad de la clase, la importancia del tema y los pocos comentarios, entiende uno por que no se sigue con este nivel de profundidad, parece que en general no son las clases con mayor acogida 😦.

Muy muy buena 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