<!DOCTYPE html>
<html lang="en">

<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;
		}

		@font-face {
			font-family: "Fira mono";
			src: url({{ STATIC_DIR }}/fira-mono/FiraMono-Regular.ttf) format("truetype");
			font-weight: 400;
			font-style: normal;
		}

		@font-face {
			font-family: "Fira mono";
			src: url({{ STATIC_DIR }}/fira-mono/FiraMono-Medium.ttf) format("truetype");
			font-weight: 500;
			font-style: normal;
		}

		@font-face {
			font-family: "Fira mono";
			src: url({{ STATIC_DIR }}/fira-mono/FiraMono-Bold.ttf) format("truetype");
			font-weight: 600;
			font-style: bold;
		}

		@page {
			size: 210mm 297mm;
			margin: 10mm 20mm 15mm 20mm;
		}

		@page chain {
			margin: 0mm 10mm 15mm 10mm;
		}

		@page title {
			background: green;
			margin: 10mm 10mm 15mm 10mm;
		}

		@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: '';
			}
		}

		#chapter-chain {
			page: chain;
		}
		
		:root {
			--font-size: 10pt;
			--line-height: 15pt;
		}

		html,
		body {
			font-family: PTSerif;
			font-size: var(--font-size);
			line-height: var(--line-height);
		}

		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;
		}

		h2 {
			font-family: Serreria;
			font-size: 18pt;
			line-height: 24pt;
		}

		ul {
			margin: 0 0 0 1.1em;
			padding: 0;
			list-style-type: none;
		}

		ul li:before {
			content: '– ';
			position: absolute;
			margin-left: -1.1em;
		}

		section.step {
			page-break-before: always;
			text-align: center;
			height: 282mm;
			/* position: relative; */
			margin: 0;
			padding: 0;
		}

		section.step.first {
			page-break-before: right;
		}

		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;
		}

		.traces li:before,
		.options li:before {
			content: '';
		}

		.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; */
		}

		.last-word-previous-step [data-picked] {
			text-decoration: none;
		}

		[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;
		}

		.chapter {
			page-break-before: right;
		}

		.chapter#chapter-introduction,
		.chapter#chapter-description,
		.chapter#chapter-technical-description,
		.chapter#chapter-credits  {
			width: 65%;
		}

		.pagedjs_right_page .chapter#chapter-introduction,
		.pagedjs_right_page .chapter#chapter-description,
		.pagedjs_right_page .chapter#chapter-technical-description,
		.pagedjs_right_page .chapter#chapter-credits {
			margin-left: 30%;
		}

		.pagedjs_right_page .sources {
			float: left;
			margin-left: calc(-1 * (40% + 3em));
			width: 40%;
		}


		.pagedjs_left_page .sources {
			float: left;
			margin-right: calc(-1 * (100% + 3em));
			width: 40%;
		}

		.sources a {
			word-break: break-all;
		}

		a {
			text-decoration: underline dotted;
			color: currentColor;
		}

		pre, code, table {
			font-family: "Fira mono";
			font-size: .8rem;
		}

		th {
			font-weight: normal;
		}

		h4 {
			font-size: 1rem;
		}

		h4:first-child {
			margin-top: 0;
		}


		.pagedjs_right_page p.images {
			margin-left: -25%;
		}

		.pagedjs_left_page p.images {
			margin-right: -25%;
		}

		img {
			display: inline-block;
			max-width: 45%;
			vertical-align: top;
		}

		.complete_sentence {
			height: 282mm;
			text-align: center;
			display: flex;
			flex-direction: column;
			justify-content: center;
			page-break-before: right;
			page-break-after: left;
			padding-left: 15mm;
			padding-right: 15mm;
		}
	</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 %}
</head>

<body>
	<h1>Paseo por los árboles de Madrid con&nbsp;<em>{{ author }}</em> y&nbsp;{{ title }}</h1>

	<section class="chapter" id="chapter-chain">
		<h2 id="poema-paseo">Paseo por los árboles de Madrid con&nbsp;<em>{{ author }}</em> y&nbsp;{{ title }}</h2>
		{% for sentence, previous_steps, tree, traces, last_word_previous_step in path %}
		<section class="step{% if loop.first %} first{% endif %}">
			<section class="sentence">
				{{ previous_steps }}
			</section>
			<section class="step_content">
				<ul class="traces">
					{% if last_word_previous_step %}
					<li class="last-word-previous-step">
						<ul class="options">
							<li data-picked>{{ last_word_previous_step}}</li>
						</ul>
					</li>
					{% endif %}
					{% 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="complete_sentence">
			{{ complete_sentence }}
		</section>
	</section>

	<section class="chapter" id="chapter-introduction">
		<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>

	<section class="chapter" id="chapter-description">
		<h2 id="descripci-n-general-de-las-cadenas-de-markov">Descripción general de las cadenas de Markov</h2>
		<section class="sources">
			<h4 id="fuentes">Fuentes</h4>
			<ul>
				<li>
					<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>
				</li>
				<li><a href="http://langvillea.people.cofc.edu/MCapps7.pdf">http://langvillea.people.cofc.edu/MCapps7.pdf</a></li>
				<li>
					<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>
				</li>
				<li>
					<a
						href="http://www.alpha60.de/research/markov/DavidLink_TracesOfTheMouth_2006.pdf">http://www.alpha60.de/research/markov/DavidLink_TracesOfTheMouth_2006.pdf</a>
				</li>
			</ul>
		</section>
		<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 class="images"><img src="{{ STATIC_DIR }}/images/markov_1.jpeg" alt="">
			<img src="{{ STATIC_DIR }}/images/markov_2.jpeg" alt=""><br>
			Estas imágenes muestran las notas originales de Markov al calcular las probabilidades necesarias para su
			cadena Pushkin.
		</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" id="chapter-technical-description">
		<h2 id="descripci-n-t-cnica-de-las-cadenas-de-markov">Descripción técnica de las cadenas de Markov</h2>
		<section class="sources">
			<h4>Fuentes:</h4>
			<ul>
				<li>
					<a
						href="https://en.wikipedia.org/wiki/Examples_of_Markov_chains">https://en.wikipedia.org/wiki/Examples_of_Markov_chains</a>
				</li>
				<li>
					<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>
				</li>
				<li>
					<a
						href="https://towardsdatascience.com/predicting-the-weather-with-markov-chains-a34735f0c4df">https://towardsdatascience.com/predicting-the-weather-with-markov-chains-a34735f0c4df</a>
				</li>
			</ul>
		</section>
		<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" id="chapter-code">
		<h2 id="c-digo">Código</h2>
		{% for path, source in sources %}
			<h3>{{ path }}</h3>
			<pre>{{ source }}</pre>
		{% endfor %}
	</section>

	<section class="chapter" id="chapter-credits">
		<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>

</body>

</html>