Referencia: Ross 2.2 p25, Telex, TTY o teletipo(Wikipedia)
Funciones de Matriz de transición de alfabeto
Es posible determinar la matriz de transición entre las letras del alfabeto continuando con el ejercicio de Funciones de probabilidad o masa.
Para procesar el texto se usa como entrada un archivo en formato .txt, analizando por línea, por símbolo y contando las veces que hay transición desde una letra del alfabeto.
Nota: Considere solo el total de letras, no el total de símbolos (no incluye «,;.!?» etc.)
El resultado que se obtiene es la matriz en los archivo adjuntos:
pueden ser importados para otro algoritmo, programa u hoja electrónica
matriz de conteo: [[ 1 318 440 874 14 31 56 59 8 20 0 729 314 631 27 0 78 43 749 745 210 85 64 1 27 67 38] [ 134 0 0 0 86 0 0 0 153 8 0 184 0 2 0 56 0 0 167 67 3 40 0 0 0 1 0] [ 427 0 69 0 318 1 0 135 1064 0 2 63 0 0 0 877 0 0 82 0 174 394 0 0 0 0 0] [ 677 0 0 0 1872 0 8 1 513 1 0 1 20 0 0 689 0 2 36 0 4 71 5 0 0 0 0] [ 155 82 416 229 12 53 134 3 21 60 17 655 340 1921 12 34 112 18 1328 1479 138 27 61 24 139 37 40] [ 45 0 0 0 111 0 0 0 194 0 0 18 0 0 0 48 0 0 25 0 0 160 0 0 0 0 0] [ 90 0 0 0 104 0 1 0 108 0 1 22 2 30 0 114 0 0 105 2 1 146 0 0 0 0 0] [ 261 0 0 0 99 0 0 0 15 0 0 0 3 3 0 183 0 0 1 1 7 42 0 1 0 0 0] [ 499 165 439 546 473 123 155 3 0 6 0 143 371 778 4 326 60 12 281 326 285 2 162 0 1 0 37] [ 29 0 0 0 48 0 0 0 6 0 0 0 0 0 0 46 0 0 0 0 0 29 0 0 0 0 0] [ 19 0 0 0 12 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0] [1299 0 19 20 513 3 53 0 281 0 1 172 46 2 0 560 5 28 4 27 97 152 12 0 0 3 0] [ 379 80 0 0 531 0 0 0 374 0 0 0 6 2 0 588 312 0 12 1 1 66 0 0 0 1 0] [ 501 2 447 379 361 63 86 0 385 6 1 0 33 13 0 541 1 16 2 214 1034 100 38 1 0 0 34] [ 20 0 0 0 3 0 0 0 0 0 0 0 0 0 0 22 0 0 0 0 0 0 0 0 0 0 0] [ 0 108 116 197 43 28 54 4 10 12 0 165 404 768 3 0 125 2 628 1356 97 6 18 0 5 11 5] [ 334 0 32 0 310 0 0 2 116 0 0 193 0 0 0 560 1 0 412 1 29 222 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 692 0 0 0 0 0] [1058 16 74 111 774 22 57 0 486 1 1 40 93 35 0 522 21 13 105 129 191 39 24 0 0 3 51] [ 306 2 118 31 576 40 0 2 694 0 2 2 92 0 0 333 150 5 0 4 731 374 2 1 0 0 0] [ 840 0 4 0 954 0 1 8 429 0 0 3 0 3 0 771 0 0 475 1 6 150 0 0 0 0 4] [ 232 50 100 54 976 9 25 1 134 5 0 166 82 758 0 12 69 0 115 166 83 0 9 0 0 38 9] [ 112 0 0 0 272 0 0 0 168 0 0 0 0 0 0 68 0 0 1 0 0 10 0 0 0 0 0] [ 0 0 0 0 9 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 21 0 0 0 0 0 0] [ 14 0 13 0 0 0 0 0 81 0 0 0 0 0 0 0 46 0 0 0 21 0 0 0 0 0 0] [ 33 0 0 0 22 0 0 0 0 0 0 0 0 2 0 36 0 0 0 0 0 2 0 0 0 0 0] [ 117 0 7 0 0 0 3 0 0 0 0 0 0 0 0 22 0 0 0 0 2 3 0 0 0 0 0]]
matriz de conteo: [[ 1.77e-04 5.64e-02 7.81e-02 1.55e-01 2.48e-03 5.50e-03 9.94e-03 1.04e-02 1.42e-03 3.55e-03 0.00e+00 1.29e-01 5.57e-02 1.12e-01 4.79e-03 0.00e+00 1.38e-02 7.63e-03 1.33e-01 1.32e-01 3.73e-02 1.51e-02 1.13e-02 1.77e-04 4.79e-03 1.19e-02 6.75e-03] [ 1.48e-01 0.00e+00 0.00e+00 0.00e+00 9.54e-02 0.00e+00 0.00e+00 0.00e+00 1.69e-01 8.87e-03 0.00e+00 2.04e-01 0.00e+00 2.21e-03 0.00e+00 6.21e-02 0.00e+00 0.00e+00 1.85e-01 7.43e-02 3.32e-03 4.43e-02 0.00e+00 0.00e+00 0.00e+00 1.10e-03 0.00e+00] [ 1.18e-01 0.00e+00 1.91e-02 0.00e+00 8.81e-02 2.77e-04 0.00e+00 3.74e-02 2.95e-01 0.00e+00 5.54e-04 1.74e-02 0.00e+00 0.00e+00 0.00e+00 2.43e-01 0.00e+00 0.00e+00 2.27e-02 0.00e+00 4.82e-02 1.09e-01 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.00e+00] ... [ 7.59e-01 0.00e+00 4.54e-02 0.00e+00 0.00e+00 0.00e+00 1.94e-02 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.00e+00 1.42e-01 0.00e+00 0.00e+00 0.00e+00 0.00e+00 1.29e-02 1.94e-02 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.00e+00]]
Instrucciones en Python
# procesar un archivo de texto # Determinar la matriz de transición # para las letras del alfabeto(incluye ñ) import numpy as np # INGRESO # archivo=input('archivo a leer.txt: ') nombrearchivo =' eureka_poe_edgar_allan.txt' # PROCEDIMIENTO alfabeto = 'abcdefghijklmnñopqrstuvwxyz' k = len(alfabeto) matriz = np.zeros(shape=(k,k),dtype=int) transicion = np.zeros(shape=(k,k),dtype=float) total = 0 # procesa el archivo archivo = open(nombrearchivo,'r') unalinea = archivo.readline() while not(unalinea == ''): unalinea = unalinea.strip('\n') unalinea = unalinea.lower() m = len(unalinea) for j in range(0,m-1,1): unsimbolo = unalinea[j] donde = alfabeto.find(unsimbolo) siguiente = unalinea[j+1] dondesig = alfabeto.find(siguiente) if (donde>=0 and dondesig>=0): #Si no encuentra es negativo matriz[donde][dondesig] = matriz[donde][dondesig]+1 total = total + 1 unalinea = archivo.readline() archivo.close() # Determina matriz de transicion for i in range(0,k,1): suma = np.sum(matriz[i,:]) transicion[i]=matriz[i,:]/suma # Salida print('matriz de conteo: ') print(matriz) print('matriz de transición:') print(transicion) np.savetxt('transicionletras.txt',matriz, fmt='%d') np.savetxt('transicionletrasfreq.txt',transicion)