lo que queda es trabajo por hacer
Desambiguación y etiquetado de palabras
Introducción a la desambiguación
Etiquetado rápido en Python: español e inglés
Etiquetado rápido en Python: Stanza (Stanford NLP)
Modelos Markovianos Latentes (HMM)
Cadenas de Markov
Modelos Markovianos latentes (HMM)
Entrenando un HMM
Fases de entrenamiento de un HMM
Entrenando un HMM en Python
Algoritmo de Viterbi
El algoritmo de Viterbi
Cálculo de las probabilidades de Viterbi
Carga del modelo HMM y distribución inicial
Implementación de algoritmo de Viterbi en Python
Entrenamiento directo de HMM con NLTK
Modelos Markovianos de máxima entropía (MEMM)
Modelos Markovianos de máxima entropia (MEMM)
Algoritmo de Viterbi para MEMM
Reto: construye un MEMM en Python
Clasificación de texto con NLTK
El problema general de la clasificación de texto
Tareas de clasificación con NLTK
Modelos de clasificación en Python: nombres
Modelos de clasificación en Python: documentos
Implementación de un modelo de clasificación de texto
Naive Bayes
Naive Bayes en Python: preparación de los datos
Naive Bayes en Python: construcción del modelo
Naive Bayes en Python: ejecución del modelo
Métricas para algoritmos de clasificación
Reto final: construye un modelo de sentimientos
Aún no tienes acceso a esta clase
Crea una cuenta y continúa viendo este curso
Aportes 4
Preguntas 1
lo que queda es trabajo por hacer
Hola, dejo un código comentado para aclarar algunas dudas o como guía para la clase
def predict(self, data):
results = []
for text in data:
# tokenizamos en palabras unicas
words = set(self.tokenize(text))
scoreProb = {}
# iteramos las palabras unicas
for word in words:
# si encontramos una palabra que no esta en el vocab
# la ignoramos por que no sale en los conteos
if word not in self.vocab: continue
# aplicamos el "suavizado" Laplaciano segun la formula de arriba
for c in self.unique_clases:# ITERAMOS LAS CLASES UNICAS
log_wordClassProb = math.log( # calculamos segun la formula
# que busque la prob de la palabra, si no esta es 0.0, mas 1
(self.wordConditionalCounts[c].get(word, 0.0)+1) / (self.classCount[c] + len(self.vocab)))
# el denominador es el conteo de la clase mas la longitud del vocabulario
# esta es la primera formula, buscamos si la clase ya esta, si si esta regresa
# el valor que esta, si no la probabilidad prior(termino p de la formula). Es como
# si esl término si dijeramos que si todavía no se ha sumado pues sumalo. Por
# ultimmo le sumamos la probabilidad aplicada con el logaritmo
scoreProb[c] = scoreProb.get(c, self.log_classPriorProb[c]) + log_wordClassProb
# este termino aparece casi igual en la primera formula, agarramos el término mayor de
# scoreProb que tiene la probabilidad de que sea cada clase
arg_maxprob = np.argmax(np.array(list(scoreProb.values())))
# agregamos el resultado del texto iterado de forma que regrese la etiqueta y no la probabilidad
results.append(list(scoreProb.keys())[arg_maxprob])
return results
Creo que se puede Usar la ley de benford para dar mayor importancia a las palabras repetidas en una descripcion para un articulo en venta, asi podemos saber que esta vendiendo por ejemplo.
Había querido una clase así desde siempre, muy buena esta metodología realmente
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.