fork download
  1. def lista_palabras(texto):
  2. palabras=[]
  3. palabras_tmp=texto.lower().split()
  4. for p in palabras_tmp:
  5. if p not in palabras and len(p)>2:
  6. palabras.append(p)
  7. return palabras
  8.  
  9. def entrenar (textos):
  10. c_palabras={}
  11. c_categorias={}
  12. c_textos=0
  13. c_tot_palabras=0
  14. #anadir al diccionario las categorias
  15. for t in textos:
  16. c_textos=c_textos+1
  17. if t[1] not in c_categorias:
  18. c_categorias[t[1]]=1
  19. else:
  20. c_categorias[t[1]]=c_categorias[t[1]]+1
  21. #anadir palabras al diccionario
  22. for t in textos:
  23. palabras=lista_palabras(t[0])
  24. for p in palabras:
  25. if p not in c_palabras :
  26. c_tot_palabras= c_tot_palabras +1
  27. c_palabras [p]={}
  28. for c in c_categorias:
  29. c_palabras[p][c]=0
  30. c_palabras [p][t[1]]= c_palabras [p][t[1]] +1
  31. return (c_palabras, c_categorias, c_textos, c_tot_palabras)
  32. def clasificar (texto, c_palabras, c_categorias, c_textos, c_tot_palabras):
  33. categoria=""
  34. prob_categoria=0
  35. for c in c_categorias:
  36. #probabilidad de la categoria
  37. prob_c=float(c_categorias[c]) / float(c_textos)
  38. palabras=lista_palabras(texto)
  39. prob_total_c=prob_c
  40. for p in palabras:
  41. #probabilidad de la palabra
  42. if p in c_palabras:
  43. prob_p=float(c_palabras [p] [c] ) / float (c_tot_palabras)
  44. # probabilidad P (categoria I palabra)
  45. prob_cond=prob_p/prob_c
  46. # probabilidad P (palabra I categoria)
  47. prob=(prob_cond*prob_p) / prob_c
  48. prob_total_c=prob_total_c*prob
  49. if prob_categoria<prob_total_c:
  50. categoria=c
  51. prob_categoria=prob_total_c
  52. return (categoria, prob_categoria)
  53. if __name__ == "__main__":
  54. textos=[
  55. ["Allez tout droit et prenez la prochaine rue", "frances"],
  56. ["Go straight and take the next street", "ingles"],
  57. ["Siga recto y gire en la siguiente calle", "espanol"],
  58. ["Intelligence Artificielle est une discipline tres interessante", "frances"],
  59. ["Artificial Intelligence is very interesting discipline", "ingles"],
  60. ["La Inteligencia Artificial es una disciplina muy interesante", "espanol"]
  61. ]
  62. p,c,t,tp= entrenar(textos)
  63. clase = clasificar("The straight lineto the Artificial Intelligence is a turn of our brain", p,c,t,tp)
  64. #La recta a la Inteligencia Artificial es un giro de nuestro cerebro
  65. #La ligne droite vers l'Intelligence Artificielle est un tour de notre cerveau
  66. print ("Texto clasificado como: "+ str(clase))
Success #stdin #stdout 0.02s 7160KB
stdin
hola
stdout
Texto clasificado como: ('', 0)