You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

781 lines
38 KiB
HTML

3 years ago
<!DOCTYPE html>
<html lang="en">
3 years ago
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
@font-face {
font-family: Serreria;
src: url({{ STATIC_DIR }}/MFI-Serreria/MFI-Serreria-Extravagante.otf) format('opentype');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: PTSerif;
src: url({{ STATIC_DIR }}/PT_Serif/PTSerif-Regular.ttf) format('truetype');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: PTSerif;
src: url({{ STATIC_DIR }}/PT_Serif/PTSerif-Italic.ttf) format('truetype');
font-weight: normal;
font-style: italic;
}
@page {
size: 210mm 297mm;
margin: 0mm 10mm 15mm 10mm;
}
@page title {
margin: 10mm 10mm 15mm 10mm;
background: green;
}
@page: left {
@bottom-left {
text-align: left;
content: counter(page);
}
}
@page: right {
@bottom-right {
text-align: right;
content: counter(page);
}
}
@page: empty {
@bottom-right {
content: '';
}
@bottom-left {
content: '';
}
}
@page title {
@bottom-right {
content: '';
}
@bottom-left {
content: '';
}
}
:root {
--font-size: 10pt;
--line-height: 15pt;
}
html,
body {
font-family: PTSerif;
font-size: var(--font-size);
line-height: var(--line-height);
}
ul {
margin: 0;
padding: 0;
}
h1 {
page: title;
color: white;
page-break-after: right;
font-family: Serreria;
font-weight: normal;
font-size: 24pt;
line-height: 30pt;
}
h1 em {
text-decoration: underline;
font-style: normal;
}
section.step {
page-break-before: always;
text-align: center;
height: 282mm;
/* position: relative; */
margin: 0;
padding: 0;
}
section.step_content {
overflow: hidden;
position: absolute;
top: 20mm;
left: 0;
right: 0;
bottom: 0mm;
}
.traces {
list-style-type: none;
display: flex;
flex-direction: row;
position: absolute;
top: 50%;
left: 0;
right: 0;
justify-content: center;
line-height: 1.2em;
margin: 0;
padding: 0;
vertical-align: text-bottom;
}
.options {
list-style-type: none;
margin: 0 4em 0 0;
}
.options li {
line-height: var(--line-height);
height: var(--line-height);
margin: 0;
padding: 0;
}
.sentence {
z-index: 1;
position: absolute;
top: 3mm;
padding: 0.5em 20mm 3em 20mm;
width: 100%;
box-sizing: border-box;
/* background: -webkit-linear-gradient(to top, rgba(255,255,255,0), white 2.5em); */
/* background: linear-gradient(to top, rgba(255,255,255,0), white 2.5em); */
/* background: white; */
}
.tree {
z-index: 1;
position: absolute;
padding: 0 20mm 0 20mm;
bottom: -10mm;
width: 100%;
box-sizing: border-box;
/* background: -webkit-linear-gradient(to top, rgba(255,255,255,0), white 2.5em); */
/* background: linear-gradient(to bottom, rgba(255,255,255,0), white 2.5em); */
/* background: white; */
}
[data-picked] {
text-decoration: underline;
position: relative;
/* font-style: italic; */
}
[data-picked]::after {
content: ' → ';
text-decoration: none;
position: absolute;
left: calc(100% + 1.5em);
top: 0;
height: 1.2em;
display: block;
}
.traces> :last-child [data-picked]::after {
display: none;
}
</style>
{% if DEBUG %}
<link href="{{ STATIC_DIR }}/pagedjs-interface.css" rel="stylesheet" type="text/css">
<script src="https://unpkg.com/pagedjs/dist/paged.polyfill.js"></script>
{% endif %}
3 years ago
</head>
3 years ago
<body>
<h1>Paseo por los árboles de Madrid con&nbsp;<em>{{ author }}</em> y&nbsp;{{ title }}</h1>
<section class="chapter">
<h2 id="introducci-n">Introducción</h2>
<p>Paseo por los árboles de Madrid es un libro en la <em>Editorial Algoliteraria: crear alianzas con los
árboles</em>.<br>El autor de este libro es el algoritmo de las cadenas de Markov. Genera simultáneamente
un poema y un paseo por los árboles del barrio de Las Letras, en el centro de Madrid.<br>El poema se crea a
partir de una novela elegida por el lector. Éste tiene la opción entre dos novelas de grandes escritores
españoles del siglo 19: </p>
<ul>
<li><em>La madre naturaleza</em> de la escritora feminista Emilia Pardo Bazán publicada en 1887. Usa en esta
obra una prosa poética y descriptiva, y en sus páginas se siente el amor que profesa al paisaje gallego,
con un conocimiento de la botánica y de las costumbres rurales muy superior al de sus contemporáneos.
</li>
<li><em>Miau</em> del escritor Benito Pérez Galdós publicada en 1888. Enmarcada en el género realista,
satiriza el Madrid burocrático de finales del siglo XIX a partir de las vicisitudes vitales de su
protagonista, Ramón Villaamil, un competente exempleado del Ministerio de Hacienda, al que una serie de
intrigas han dejado cesante.</li>
</ul>
<p>El paseo se genera a partir de la base de datos con árboles en Madrid, <a
href="http://www-2.munimadrid.es/DGPVE_WUAUA/welcome.do">Un Alcorque, un Árbol</a>. Cada palabra
significativa - sustantivo, adjetivo, verbo o adverbio - está relacionada a un árbol en el Barrio de las
Letras de Madrid. Las otras palabras crean el camino entre los diferentes árboles. Así se puede ir caminando
por el barrio recitando partes del poema a cada árbol que se encuentra en el paseo.<br>Este libro es por
definición infinito y único.<br>Está creada por Anaïs Berck. Es un seudónimo que representa una colaboración
entre humanos, algoritmos y árboles. Anaïs Berck explora las especificidades de la inteligencia humana en
compañía de las inteligencias artificiales y vegetales.<br>La Editorial Algoliteraria es una colección de
publicaciones en las cuales los algoritmos son los autores de libros inusuales. Este libro fue creado como
parte de una residencia en el centro de arte contemporáneo Medialab Prado en Madrid. La residencia fue
concedida por el programa &quot;Residencia Cultura Digital&quot; iniciado por el Gobierno Flamenco. </p>
<p>En esta obra Anaïs Berck está representadx por: </p>
<ul>
<li>el algoritmo de las cadenas de Markov del cual se encuentra una descripción en este libro,</li>
<li>los árboles de Madrid, que tienen su geolocalización entre Medialab Prado, Plaza del Sol y Atocha Renfe,
dentro de la base de datos <a href="http://www-2.munimadrid.es/DGPVE_WUAUA/welcome.do">Un Alcorque, un
Árbol</a>, </li>
<li>los seres humanos Emilia Pardo Bazán, Benito Pérez Gáldos, Jaime Munárriz, Luis Morell, An Mertens, Eva
Marina Gracia, Gijs de Heij, Ana Isabel Garrido Mártinez, Alfredo Calosci, Daniel Arribas Hedo.</li>
</ul>
</section>
{% for sentence, previous_steps, tree, traces in path %}
<section class="step">
<h2 id="poema-paseo">Poema &amp; Paseo</h2>
<section class="sentence">
{{ previous_steps }}
</section>
<section class="step_content">
<ul class="traces">
{% for word, dice, options in traces %}
<li style="margin-top: calc(-{{ dice }} * var(--line-height))">
<ul class="options">
{% for option in options %}
<li {% if loop.index0==dice %}data-picked{% endif %}>
{{ option }}
</li>
{% endfor %}
</ul>
<!-- Rolled: {{ dice }} -->
</li>
{% endfor %}
</ul>
</section>
<section class="tree">
{{ tree.properties.NOMBRE_COMUN }} en {{ tree.properties.MINTDIRECCIONAUX }}
</section>
</section>
{% endfor %}
<section class="chapter">
<h2 id="descripci-n-general-de-las-cadenas-de-markov">Descripción general de las cadenas de Markov</h2>
<h4 id="fuentes">Fuentes</h4>
<p><a
href="https://spectrum.ieee.org/andrey-markov-and-claude-shannon-built-the-first-language-generation-models">https://spectrum.ieee.org/andrey-markov-and-claude-shannon-built-the-first-language-generation-models</a>
<a href="http://langvillea.people.cofc.edu/MCapps7.pdf">http://langvillea.people.cofc.edu/MCapps7.pdf</a>
<a
href="https://www.irishtimes.com/news/science/that-s-maths-andrey-markov-s-brilliant-ideas-are-still-bearing-fruit-1.3220929">https://www.irishtimes.com/news/science/that-s-maths-andrey-markov-s-brilliant-ideas-are-still-bearing-fruit-1.3220929</a>
<a
href="http://www.alpha60.de/research/markov/DavidLink_TracesOfTheMouth_2006.pdf">http://www.alpha60.de/research/markov/DavidLink_TracesOfTheMouth_2006.pdf</a>
</p>
<h3 id="historias">Historias</h3>
<p>Andrey Andreyevich Markov fue un matemático ruso que vivió entre 1856 y 1922. Sus estudios más famosos fueron
con las cadenas de Markov, un algoritmo que permite predecir los cambios futuros una vez que se conoce el
estado actual. El primer trabajo sobre el tema se publicó en 1906. También se interesó por la literatura.
Intentó establecer un modelo matemático lingüístico mediante cadenas de Markov contando manualmente las
letras de la novela en verso de Alexander Pusjkin, Eugene Onegin. A continuación, aplicó el método a la
novela Años de infancia del nieto de Bagrov, de S.T. Aksakov. Esto vincula las cadenas de Markov
directamente con el campo de la literatura, el texto y el lenguaje. Y el vínculo vivirá firmemente a lo
largo de la historia de este algoritmo. </p>
<p>El siguiente texto se basa en el artículo de Oscar Schwartz para IEEE Spectrum, <a
href="https://spectrum.ieee.org/andrey-markov-and-claude-shannon-built-the-first-language-generation-models">Andrey
Markov &amp; Claude Shannon Counted Letters to Build the First Language-Generation Models</a>.<br>En
1913, Andrey Markov se sentó en su estudio de San Petersburgo con un ejemplar de la novela en verso del
siglo XIX de Alexander Pushkin, <a href="https://en.wikipedia.org/wiki/Eugene_Onegin">Eugene Onegin</a>, un
clásico literario de la época. Esta obra consta de casi 400 estrofas de tetrámetro yámbico. Sin embargo,
Markov no se puso a leer el famoso texto de Pushkin. Más bien, tomó un bolígrafo y un trozo de papel, y
escribió las primeras 20.000 letras del libro en una larga cadena de letras, eliminando todos los signos de
puntuación y los espacios. A continuación, dispuso estas letras en 200 cuadrículas (de 10 por 10 caracteres
cada una) y comenzó a contar las vocales en cada fila y columna, contabilizando los resultados.<br>Al
separar las vocales de las consonantes, Markov ponía a prueba una teoría de la probabilidad que había
desarrollado en 1906 y que ahora llamamos Proceso de Markov o Cadena de Markov. Hasta ese momento, el campo
de la probabilidad se había limitado principalmente a analizar fenómenos como la ruleta o el lanzamiento de
una moneda, en los que el resultado de eventos anteriores no cambia la probabilidad de los eventos actuales.
Pero Markov pensaba que la mayoría de las cosas ocurren en cadenas de causalidad y dependen de resultados
anteriores. Quería una forma de modelar estos sucesos mediante un análisis probabilístico.<br>Markov creía
que el lenguaje era un ejemplo de sistema en el que los sucesos pasados determinan en parte los resultados
presentes. Para demostrarlo, quería mostrar que en un texto como la novela de Pushkin, la probabilidad de
que una determinada letra aparezca en algún momento del texto depende, hasta cierto punto, de la letra que
la precede.<br>Para ello, Markov comenzó a contar las vocales en Eugene Onegin, y descubrió que el 43% de
las letras eran vocales y el 57% consonantes. A continuación, Markov separó las 20.000 letras en pares de
combinaciones de vocales y consonantes. Descubrió que había 1.104 pares vocal-vocal, 3.827 pares
consonante-consonante y 15.069 pares vocal-consonante y consonante-vocal. Lo que esto demostró,
estadísticamente hablando, fue que para cualquier letra del texto de Pushkin, si era una vocal, las
probabilidades eran que la siguiente letra fuera una consonante, y viceversa.<br>Markov utilizó este
análisis para demostrar que Eugene Onegin de Pushkin no era sólo una distribución aleatoria de letras, sino
que tenía algunas cualidades estadísticas subyacentes que podían modelarse. El enigmático trabajo de
investigación que surgió de este estudio, titulado <a
href="http://cs.petrsu.ru/~olbgvl/greatapp/my_project/example_eng.html">An Example of Statistical
Investigation of the Text Eugene Onegin Concerning the Connection of Samples in Chains</a>(Un ejemplo de
investigación estadística del texto Eugene Onegin sobre la conexión de muestras en cadenas), no fue muy
citado en vida de Markov, y no se tradujo al inglés hasta 2006. Markov se vio obligado a interrumpir sus
experimentos de recuento de letras, cuando había perdido casi por completo la vista debido a un glaucoma.
Aunque Markov hubiera tenido más tiempo y mejor vista para llevar a cabo sus experimentos, las extensiones
habrían sido muy difíciles de completar, dada la época preinformática en la que vivió, en la que los
esfuerzos computacionales debían pagarse en años-hombre. </p>
<p><img src="markov_1.jpeg" alt="">
<img src="markov_2.jpeg" alt=""><br>These images show Markovs original notes in computing the probabilities
needed for his Pushkin chain.
</p>
<h3 id="influencia">Influencia</h3>
<p>Algunos de los conceptos centrales de Markov en torno a la probabilidad y el lenguaje se extendieron por el
mundo entero, y acabaron encontrando su rearticulación en el enormemente influyente documento de Claude
Shannon, <a href="https://people.math.harvard.edu/~ctm/home/text/others/shannon/entropy/entropy.pdf">A
Mathematical Theory of Communication</a>, que se publicó en 1948.<br>El documento de Shannon esbozaba
una forma de medir con precisión la cantidad de información en un mensaje y, al hacerlo, sentaba las bases
de una teoría de la información que llegaría a definir la era digital. A Shannon le fascinaba la idea de
Markov de que, en un texto dado, se podía aproximar la probabilidad de que apareciera alguna letra o
palabra. Al igual que Markov, Shannon lo demostró realizando algunos experimentos textuales (en inglés) que
implicaban la elaboración de un modelo estadístico del lenguaje, y luego dio un paso más al tratar de
utilizar el modelo para generar texto de acuerdo con esas reglas estadísticas.<br>En un primer experimento
de control, empezó generando una frase eligiendo letras al azar de un alfabeto de 27 símbolos (26 letras,
más un espacio), y obtuvo el siguiente resultado: </p>
<p>XFOML RXKHRJFFJUJ ZLPWCFWKCYJ FFJEYVKCQSGHYD QPAAMKBZAACIBZLHJQD </p>
<p>La frase era ruido sin sentido, dijo Shannon, porque cuando nos comunicamos no elegimos las letras con igual
probabilidad. Como había demostrado Markov, las consonantes son más probables que las vocales. Pero a un
mayor nivel de granularidad, las E son más comunes que las S, que son más comunes que las Q. Para tener en
cuenta este hecho, Shannon modificó su alfabeto original para que se ajustara más a la probabilidad del
inglés: era un 11% más probable sacar una E del alfabeto que una Q. Cuando volvió a sacar letras al azar de
este corpus recalibrado, obtuvo una frase que se acercaba un poco más al inglés. </p>
<p>OCRO HLI RGWR NMIELWIS EU LL NBNESEBYA TH EEI ALHENHTTPA OOBTTVA NAH BRL. </p>
<p>In a series of subsequent experiments, Shannon demonstrated that as you make the statistical model even more
complex, you get increasingly more comprehensible results. Shannon, via Markov, revealed a statistical
framework for the English language, and showed that by modeling this framework—by analyzing the dependent
probabilities of letters and words appearing in combination with each other—he could actually generate
language. </p>
<p>Cuanto más complejo sea el modelo estadístico de un texto dado, más precisa será la generación del lenguaje,
o como dijo Shannon, mayor será el &quot;parecido con el texto inglés ordinario&quot;. En el experimento
final, Shannon recurrió a un corpus de palabras en lugar de letras y consiguió lo siguiente: </p>
<p>THE HEAD AND IN FRONTAL ATTACK ON AN ENGLISH WRITER THAT THE CHARACTER OF THIS POINT IS THEREFORE ANOTHER
METHOD FOR THE LETTERS THAT THE TIME OF WHO EVER TOLD THE PROBLEM FOR AN UNEXPECTED. </p>
<p>Tanto para Shannon como para Markov, la idea de que las propiedades estadísticas del lenguaje podían ser
modeladas ofrecía una forma de replantear problemas más amplios en los que estaban trabajando. Para Markov,
amplió el estudio de la estocasticidad más allá de los eventos mutuamente independientes, abriendo el camino
para una nueva era en la teoría de la probabilidad. Para Shannon, le ayudó a formular una forma precisa de
medir y codificar unidades de información en un mensaje, lo que revolucionó las telecomunicaciones y,
finalmente, la comunicación digital. Pero su enfoque estadístico en la modelación y la generación del
lenguaje también marcó el comienzo de una nueva era para el procesamiento del lenguaje natural, que se ha
ramificado en la era digital hasta nuestros días. Como señala David Link en su artículo Traces of the Mouth,
los esfuerzos de Markov en retrospectiva &quot;representan un intento temprano y trascendental de entender
el fenómeno del lenguaje en términos matemáticos&quot;. No es exagerado decir que el análisis de texto de
Markov es, en principio, similar a lo que Google y otras empresas llevan a cabo ahora de forma rutinaria y a
gran escala: analizar las palabras de los libros y los documentos de Internet, el orden en que aparecen las
palabras, analizar las frases de búsqueda, detectar el spam, etc. </p>
<h3 id="applicaciones">Applicaciones</h3>
<p>Dado que las cadenas de Markov pueden diseñarse para modelar muchos procesos del mundo real, se utilizan en
una gran variedad de situaciones. Aparecen en física y química cuando se utilizan probabilidades para
cantidades desconocidas. En el tratamiento de la información, desempeñan un papel en el reconocimiento de
patrones, el análisis y la síntesis automática del habla y la compresión de datos. Los meteorólogos,
ecologistas y biólogos los utilizan. Otras aplicaciones son el control de coches sin conductor, la
traducción automática, los patrones de colas y la predicción del crecimiento de la población, los precios de
los activos, los cambios de moneda y las crísis del mercado. También artistas han utilizado las cadenas de
Markov, como el músico Iannis Xenakis, que desarrolló la &quot;Música estocástica libre&quot; basada en las
cadenas de Markov. </p>
<p>En 2006 - el centenario del artículo de Markov - Philipp Von Hilgers y Amy Langville resumieron <a
href="http://langvillea.people.cofc.edu/MCapps7.pdf">las cinco mayores aplicaciones de las cadenas de
Markov</a>. Entre ellas se encuentra la que utilizamos la mayoría de nosotros a diario: el Page Rank de
Google. Cada vez que buscamos en Internet, la clasificación de las páginas web se basa en una solución de la
cadena de Markov masiva. Se puede decir que todas las páginas web son estados, y los enlaces entre ellas son
transiciones que poseen probabilidades específicas. En otras palabras, podemos decir que, independientemente
de lo que busques en Google, hay una probabilidad finita de que acabes en una página web concreta. Si
utilizas Gmail, habrás notado su función de autorrelleno. Esta función predice automáticamente tus frases
para ayudarte a escribir correos electrónicos rápidamente. Las cadenas de Markov ayudan considerablemente en
este sector, ya que pueden proporcionar predicciones de este tipo de forma eficaz.<br>Y por último, pero no
menos importante, ¿te has preguntado alguna vez por qué el spam tiene todas esas divertidas cadenas de
palabras sin sentido? Son construcciones bastante extrañas, no tan aleatorias como si se sacaran palabras al
azar de un sombrero, casi gramaticales la mayor parte de las veces, pero aún así son un claro galimatías.
También aquí las cadenas de Markov han asumido gran parte del trabajo. </p>
</section>
<section class="chapter">
<h2 id="descripci-n-t-cnica-de-las-cadenas-de-markov">Descripción técnica de las cadenas de Markov</h2>
<h4 id="sources-">Fuentes:</h4>
<p><a
href="https://en.wikipedia.org/wiki/Examples_of_Markov_chains">https://en.wikipedia.org/wiki/Examples_of_Markov_chains</a>
<a
href="https://higherkindedtripe.wordpress.com/2012/02/26/markov-chains-or-daddy-where-does-spam-come-from/">https://higherkindedtripe.wordpress.com/2012/02/26/markov-chains-or-daddy-where-does-spam-come-from/</a>
<a
href="https://towardsdatascience.com/predicting-the-weather-with-markov-chains-a34735f0c4df">https://towardsdatascience.com/predicting-the-weather-with-markov-chains-a34735f0c4df</a>
</p>
<p>En un proceso de Markov podemos predecir los cambios futuros una vez que conocemos el estado actual.
Wikipedia describe muy bien la diferencia entre las cadenas de Markov y otros sistemas: &quot;Un juego de
serpientes y escaleras o cualquier otro juego cuyas jugadas se determinan enteramente por los dados es una
cadena de Markov, de hecho, una cadena de Markov absorbente. Esto contrasta con los juegos de cartas, como
el blackjack, donde las cartas representan una &quot;memoria&quot; de las jugadas anteriores. Para ver la
diferencia, considere la probabilidad de un determinado evento en el juego. En los juegos de dados
mencionados, lo único que importa es el estado actual del tablero. El siguiente estado del tablero depende
del estado actual y de la siguiente tirada de dados. No depende de cómo han llegado las cosas a su estado
actual. En un juego como el blackjack, un jugador puede obtener ventaja recordando qué cartas se han
mostrado ya (y, por tanto, qué cartas ya no están en la baraja), por lo que el siguiente estado (o mano) del
juego no es independiente de los estados pasados&quot;.
Así, para un proceso de Markov, sólo el estado actual determina el siguiente estado; la historia del sistema
no tiene ningún impacto. Por eso describimos un proceso de Markov como sin memoria. Lo que ocurre a
continuación viene determinado completamente por el estado actual y las probabilidades de transición.<br>A
continuación, describimos un funcionamiento clásico de las cadenas de Markov, junto a una versión
simplificada que hemos utilizado para desarrollar un juego de Markov y el código de este libro. </p>
<h3 id="versi-n-cl-sica">Versión clásica</h3>
<p>Este ejemplo está tomado de la siguiente fuente: <a
href="https://higherkindedtripe.wordpress.com/2012/02/26/markov-chains-or-daddy-where-does-spam-come-from/">https://higherkindedtripe.wordpress.com/2012/02/26/markov-chains-or-daddy-where-does-spam-come-from/</a>
</p>
<p>Coge un texto de &quot;entrenamiento&quot;.<br>Haz una lista de todas las palabras que contiene.<br>Para cada
palabra, haga una lista de todas las demás palabras que vienen después de ella, con el número de veces que
aparece cada palabra. Así, con la frase &quot;the quick brown fox jumped over the lazy dog&quot;, acabarías
con la lista: </p>
<ol>
<li>the -&gt; (1, quick), (1, lazy) </li>
<li>quick -&gt; (1, brown)</li>
<li>brown -&gt; (1, fox)</li>
<li>fox -&gt; (1, jumped)</li>
<li>jumped -&gt; (1, over)</li>
<li>over -&gt; (1, the)</li>
<li>lazy -&gt; (1, dog)</li>
<li>dog -&gt;</li>
</ol>
<p>Convierte la lista en una matriz, en la que las filas representan las palabras &quot;principales&quot; y las
columnas representan las palabras &quot;siguientes&quot;, y cada número de la matriz dice cuántas veces
apareció la palabra siguiente después de la palabra principal. Obtendrás: </p>
<table>
<thead>
<tr>
<th style="text-align:left"></th>
<th style="text-align:center">the</th>
<th style="text-align:center">quick</th>
<th style="text-align:center">brown</th>
<th style="text-align:center">fox</th>
<th style="text-align:center">jumped</th>
<th style="text-align:center">over</th>
<th style="text-align:center">lazy</th>
<th style="text-align:right">dog</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">the</td>
<td style="text-align:center">0</td>
<td style="text-align:center">1</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">1</td>
<td style="text-align:right">0</td>
</tr>
<tr>
<td style="text-align:left">quick</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">1</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:right">0</td>
</tr>
<tr>
<td style="text-align:left">brown</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">1</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:right">0</td>
</tr>
<tr>
<td style="text-align:left">fox</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">1</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:right">0</td>
</tr>
<tr>
<td style="text-align:left">jumped</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">1</td>
<td style="text-align:center">0</td>
<td style="text-align:right">0</td>
</tr>
<tr>
<td style="text-align:left">over</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">1</td>
<td style="text-align:right">0</td>
</tr>
<tr>
<td style="text-align:left">lazy</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:right">1</td>
</tr>
<tr>
<td style="text-align:left">dog</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:right">0</td>
</tr>
</tbody>
</table>
<p>Divide cada número de la matriz por el total de su fila y verás que cada fila se convierte en una especie de
distribución de probabilidad.</p>
<table>
<thead>
<tr>
<th style="text-align:left"></th>
<th style="text-align:center">the</th>
<th style="text-align:center">quick</th>
<th style="text-align:center">brown</th>
<th style="text-align:center">fox</th>
<th style="text-align:center">jumped</th>
<th style="text-align:center">over</th>
<th style="text-align:center">lazy</th>
<th style="text-align:right">dog</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">the</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0.5</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0.5</td>
<td style="text-align:right">0</td>
</tr>
<tr>
<td style="text-align:left">quick</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">1</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:right">0</td>
</tr>
<tr>
<td style="text-align:left">brown</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">1</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:right">0</td>
</tr>
<tr>
<td style="text-align:left">fox</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">1</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:right">0</td>
</tr>
<tr>
<td style="text-align:left">jumped</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">1</td>
<td style="text-align:center">0</td>
<td style="text-align:right">0</td>
</tr>
<tr>
<td style="text-align:left">over</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">1</td>
<td style="text-align:right">0</td>
</tr>
<tr>
<td style="text-align:left">lazy</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:right">1</td>
</tr>
<tr>
<td style="text-align:left">dog</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:center">0</td>
<td style="text-align:right">0</td>
</tr>
</tbody>
</table>
<p>Se puede interpretar como que &quot;si la primera palabra es un &#39;the&#39;, hay un 50% de posibilidades de
que la siguiente palabra sea &#39;quick&#39;, y un 50% de posibilidades de que la siguiente palabra sea
&#39;lazy&#39;. Para todas las demás palabras, sólo hay una palabra posible a continuación&quot;.<br>Casi
todas las palabras tienen sólo una posible palabra siguiente porque el texto es muy corto. Pero si se
entrena con un texto más extenso y se interpretan las filas como una distribución de probabilidades, se
puede empezar a ver para cada palabra qué tipo de palabra tiende a seguirla. Esto ofrece una visión muy
interesante del carácter del texto escrito.<br>Si tomas esa gran &quot;matriz de transición&quot; que has
entrenado a partir de un texto grande, puedes usarla para generar realmente un nuevo texto de la siguiente
manera: </p>
<ol>
<li>
<p>Elija al azar una palabra &quot;semilla&quot; del texto. Para obtener los mejores resultados, utilice
una con muchas palabras siguientes posibles.</p>
</li>
<li>
<p>Encuentre la fila de la matriz correspondiente a esa palabra. Elija la siguiente palabra al azar,
ponderada según las probabilidades de la fila. Es decir, si la columna correspondiente a la palabra
&quot;azul&quot; tiene el número 0,05, tienes un 5% de posibilidades de elegir &quot;azul&quot; como
siguiente palabra, y así sucesivamente (al dividir cada número por el total de su fila nos
aseguramos de que estas probabilidades sumen 1).</p>
</li>
<li>
<p>Vuelve al paso 2 utilizando esta segunda palabra como la nueva palabra &quot;semilla&quot;. Continúe
este proceso para generar una cadena de palabras tan larga como desee. Si acaba con una palabra a la
que no le siguen otras (algo poco común cuando se entrena con una prueba grande, pero posible:
imagine que la última palabra de una novela fuera la única ocurrencia de la palabra
&quot;xilófono&quot;, o lo que sea), simplemente elija una palabra al azar.</p>
</li>
</ol>
<p>Se puede ver cómo las cadenas de palabras generadas con este método seguirán las &quot;tendencias&quot; de
los datos de entrenamiento, lo que significa que si se generara una nueva matriz de transición a partir de
las palabras generadas, ésta tendría, en promedio, el mismo aspecto que la matriz de transición original, ya
que se eligieron las palabras de acuerdo con esos pesos. Este proceso completamente mecánico puede generar
datos que se parecen, estadísticamente, a un idioma significativo. Por supuesto, no es necesariamente
gramatical, y está ciertamente desprovisto de significado superior, ya que fue generado a través de este
proceso simplista.<br>Esas &quot;cadenas&quot; de palabras construidas por el proceso anterior son un
ejemplo de cadenas de Markov. Y también son la respuesta a la pregunta &quot;¿de dónde viene el spam?&quot;.
Esas divagaciones casi gramaticales debajo de los anuncios de &quot;Viagra&quot;, generadas mediante el
proceso anterior, son la forma que tienen los creadores de spam de engañar a su filtro de spam. Incluyen
estas cadenas para dar a sus anuncios una similitud estadística con la correspondencia humana significativa.
Esto funciona porque los filtros de spam utilizan (al menos en parte) modelos probabilísticos que dependen
de las transiciones y frecuencias de las palabras para clasificar el correo electrónico entrante como spam.
Los emisores de spam y los redactores de los filtros se enzarzan en un eterno juego del gato y el ratón
generado aleatoriamente. </p>
<h3 id="versi-n-simplificada">Versión simplificada</h3>
<p>Con <a href="https://algolit.net">Algolit</a>, un grupo de investigación artística sobre código y literatura
libres con sede en Bruselas, desarrollamos un juego de cadenas de Markov con frases y cartas. Esto ocurrió
como parte del festival Désert Numérique, en La Drôme en Francia en 2014. El juego fue desarrollado por
Brendan Howell, Catherine Lenoble y An Mertens. Puedes escuchar el programa de radio: <a
href="http://desert.numerique.free.fr//archives/?id=1011&amp;ln=fr">http://desert.numerique.free.fr//archives/?id=1011&amp;ln=fr</a>.<br>A
continuación, el juego se presentó en Transmediale, en Berlín, en 2015, respetando las siguientes reglas.
</p>
<ol>
<li>
<p>Tomamos un texto, por ejemplo:</p>
<blockquote>
<p>Cqrrelations read as poetry to statisticians. Can statisticians read poetry with machines?
Cqrrelations is a practise for artists, for datatravellers, statisticians and other lovers of
machines to explore a world of blurry categorisations and crummylations. Machines correlate to
dissidents, dissidents correlate to statisticians.</p>
</blockquote>
</li>
<li>
<p>Creamos una base de datos para este texto; cada palabra es una entrada y toma la palabra siguiente
como valor posible. La entrada de &quot;Cqrrelations&quot; tendrá dos valores:</p>
<ol>
<li>read</li>
<li>is</li>
</ol>
</li>
<li>
<p>Una vez creada la base de datos, elegimos una palabra inicial para un nuevo texto, por ejemplo
Cqrrelations.</p>
</li>
<li>Tiramos el dado, los números impares darán &quot;leer&quot; como 2ª palabra de nuestro texto; los
números pares darán &quot;es&quot; como 2ª palabra.</li>
<li>Volvemos a tirar el dado y elegimos una palabra entre los valores de la palabra elegida. Esto da la
siguiente palabra de nuestra frase.</li>
<li>Continuamos 5 hasta llegar a una palabra con un punto (.)</li>
<li>Podemos repetir la regla 3 hasta la 6 hasta que estemos satisfechos con la cantidad de frases generadas
</li>
</ol>
<p>Basado en el texto de entrada el resultado en Transmediale fue: </p>
<blockquote>
<p>A world of blurry categorisations and other lovers of blurry categorisations and other lovers of blurry
categorisations and other lovers of machines. Cqrrelations read poetry to dissidents correlate to
machines. Lovers of machines to statisticians.” </p>
</blockquote>
</section>
<section class="chapter">
<h2 id="c-digo">Código</h2>
<!-- VOEG CODE TOE-->
</section>
<section class="chapter">
<h2 id="cr-ditos">Créditos</h2>
<p>Este libro es una creación de Anaïs Berck para Medialab como parte del programa &quot;Residencia Cultura
Digital&quot; iniciado por el Gobierno Flamenco.<br>En esta obra Anaïs Berck está representadx por:</p>
<ul>
<li>el algoritmo de las cadenas de Markov del cual se encuentra una descripción en este libro,</li>
<li>los árboles de Madrid, que tienen su geolocalización entre Medialab Prado, Plaza del Sol y Atocha Renfe,
dentro de la base de datos <a href="http://www-2.munimadrid.es/DGPVE_WUAUA/welcome.do">Un Alcorque, un
Árbol</a>, </li>
<li>los seres humanos Emilia Pardo Bazán, Benito Pérez Gáldos, Jaime Munárriz, Luis Morell, An Mertens, Eva
Marina Gracia, Gijs de Heij, Ana Isabel Garrido Mártinez, Alfredo Calosci, Daniel Arribas Hedo.</li>
</ul>
<p>La copia de este libro es única y el tiraje es por definición infinito.<br>
Esta copia es el número {{ edition_count }} de copias descargadas.<br>
Condiciones colectivas de (re)uso (CC4r), 2021<br>Copyleft con una diferencia: Se le
invita a copiar, distribuir y modificar esta obra bajo los términos de la <a
href="https://gitlab.constantvzw.org/unbound/cc4r">CC4r</a>.</p>
</section>
3 years ago
</body>
3 years ago
</html>