{"id":1612,"date":"2012-11-15T09:00:00","date_gmt":"2012-11-15T08:00:00","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1612"},"modified":"2017-03-01T07:39:01","modified_gmt":"2017-03-01T15:39:01","slug":"fun-couchbase-and-markov-chains","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/fun-couchbase-and-markov-chains\/","title":{"rendered":"Diversi\u00f3n con Couchbase y las cadenas de Markov"},"content":{"rendered":"<p>He o\u00eddo hablar de <a href=\"https:\/\/en.wikipedia.org\/wiki\/Markov_chain\">Cadenas de Markov<\/a> Ya era hora de que aprendiera m\u00e1s sobre ellas y desarrollara una sencilla y divertida aplicaci\u00f3n de cadenas de Markov. Estoy seguro de que no quieres estancarte en los detalles matem\u00e1ticos de las cadenas de Markov - \u00a1aprender construyendo una aplicaci\u00f3n es donde est\u00e1 toda la diversi\u00f3n!<\/p>\n<p dir=\"ltr\">En este blog, mostraremos c\u00f3mo crear una aplicaci\u00f3n <strong>\"Marky\"<\/strong> que utiliza cadenas de Markov para generar tuits sin sentido basados en tu historial de Twitter. Utiliza Couchbase Server para almacenar y procesar los datos para generar estos tweets.<\/p>\n<p><strong>Marky utiliza Couchbase Server <a href=\"https:\/\/www.couchbase.com\/blog\/es\/docs\/couchbase-manual-2.0\/couchbase-views.html\/\">vistas<\/a> procesar datos<\/strong><br \/>La funci\u00f3n de mapa de Marky es :<\/p>\n<div class=\"geshifilter\">\n<div class=\"javascript geshifilter-javascript\" style=\"font-family:monospace;\"><span style=\"color: #003366; font-weight: bold;\">funci\u00f3n<\/span> <span style=\"color: #009900;\">(<\/span>doc<span style=\"color: #339933;\">,<\/span> meta<span style=\"color: #009900;\">)<\/span> <span style=\"color: #009900;\">{<\/span><br \/>\u00a0 \u00a0<span style=\"color: #000066; font-weight: bold;\">si<\/span><span style=\"color: #009900;\">(<\/span>doc.<span style=\"color: #660066;\">cuerpo<\/span><span style=\"color: #009900;\">)<\/span> <span style=\"color: #009900;\">{<\/span><br \/>\u00a0 \u00a0 \u00a0 \u00a0<span style=\"color: #003366; font-weight: bold;\">var<\/span> palabras <span style=\"color: #339933;\">=<\/span> doc.<span style=\"color: #660066;\">cuerpo<\/span>.<span style=\"color: #660066;\">dividir<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #009966; font-style: italic;\">\/s+\/<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span><br \/>\u00a0 \u00a0 \u00a0 \u00a0<span style=\"color: #000066; font-weight: bold;\">si<\/span> <span style=\"color: #009900;\">(<\/span>palabras.<span style=\"color: #660066;\">longitud<\/span> <span style=\"color: #339933;\">>=<\/span> <span style=\"color: #CC0000;\">1<\/span><span style=\"color: #009900;\">)<\/span> <span style=\"color: #009900;\">{<\/span><br \/>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0emite<span style=\"color: #009900;\">(<\/span><span style=\"color: #009900;\">[<\/span><span style=\"color: #003366; font-weight: bold;\">null<\/span><span style=\"color: #339933;\">,<\/span> palabras<span style=\"color: #009900;\">[<\/span><span style=\"color: #CC0000;\">0<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #339933;\">,<\/span> <span style=\"color: #CC0000;\">1<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span><br \/>\u00a0 \u00a0 \u00a0 \u00a0<span style=\"color: #009900;\">}<\/span><br \/>\u00a0 \u00a0 \u00a0 \u00a0<span style=\"color: #000066; font-weight: bold;\">para<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #003366; font-weight: bold;\">var<\/span> i <span style=\"color: #339933;\">=<\/span> <span style=\"color: #CC0000;\">0<\/span><span style=\"color: #339933;\">;<\/span> i <span style=\"color: #339933;\"><<\/span> <span style=\"color: #009900;\">(<\/span>palabras.<span style=\"color: #660066;\">longitud<\/span> <span style=\"color: #339933;\">&#8211;<\/span> <span style=\"color: #CC0000;\">1<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span> i<span style=\"color: #339933;\">++<\/span><span style=\"color: #009900;\">)<\/span> <span style=\"color: #009900;\">{<\/span><br \/>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span style=\"color: #003366; font-weight: bold;\">var<\/span> par <span style=\"color: #339933;\">=<\/span> <span style=\"color: #009900;\">[<\/span>palabras<span style=\"color: #009900;\">[<\/span>i<span style=\"color: #009900;\">]<\/span><span style=\"color: #339933;\">,<\/span> palabras<span style=\"color: #009900;\">[<\/span>i<span style=\"color: #339933;\">+<\/span><span style=\"color: #CC0000;\">1<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #009900;\">]<\/span><span style=\"color: #339933;\">;<\/span><br \/>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0emite<span style=\"color: #009900;\">(<\/span>par<span style=\"color: #339933;\">,<\/span> <span style=\"color: #CC0000;\">1<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span><br \/>\u00a0 \u00a0 \u00a0 \u00a0<span style=\"color: #009900;\">}<\/span><br \/>\u00a0 \u00a0<span style=\"color: #009900;\">}<\/span><br \/><span style=\"color: #009900;\">}<\/span><\/div>\n<\/div>\n<p>A alto nivel, divide el texto en trozos m\u00e1s peque\u00f1os utilizando una ventana deslizante sobre 2 palabras consecutivas e intenta reagrupar estos trozos en el orden correcto para formar frases bas\u00e1ndose en un peso estad\u00edstico. Al final, se obtiene un texto sin sentido que resulta divertido de leer.<\/p>\n<p>Por ejemplo: Dado el texto de entrada \"En este blog, le mostraremos c\u00f3mo construir una aplicaci\u00f3n\", emitir\u00e1 los pares Clave,Valor -<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family:monospace;\">Valor clave<\/p>\n<p>[null, \"En\"] 1<br \/>[\"En\", \"este\"] 1<br \/>[\"este\", \"blog,\"] 1<br \/>[\"blog,\", \"nosotros\"] 1<br \/>[\"nosotros\", \"haremos\"] 1<br \/>[\"will\", \"show\"] 1<br \/>[\"show\", \"you\"] 1<br \/>[\"t\u00fa\", \"c\u00f3mo\"] 1<br \/>[\"c\u00f3mo\", \"a\"] 1<br \/>[\"a\", \"construir\"] 1<br \/>[\"build\", \"an\"] 1<br \/>[\"an\", \"aplicaci\u00f3n\"] 1<\/div>\n<\/div>\n<p dir=\"ltr\">Para generar una palabra, consultamos la vista utilizando la \u00faltima palabra que hemos generado. Por ejemplo, para obtener candidatos a una palabra que siga a \"el\", utilizamos los par\u00e1metros startkey=[\"el\"]&amp;endkey=[\"el\",{}]&amp;group_level=2&amp;reduce=true<\/p>\n<p dir=\"ltr\">Esto obtendr\u00e1 todos los pares de palabras que empiecen por \"el\", agrupar\u00e1 los pares que sean iguales y ejecutar\u00e1 la funci\u00f3n de reducci\u00f3n de la vista en cada grupo. Marky utiliza la funci\u00f3n de reducci\u00f3n _sum, que sumar\u00e1 los valores que se le den. Ejecutando esto en la base de datos dkatz_ebooks se obtiene:<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family:monospace;\">Valor clave<br \/>[\"el\", \"#1\u2033] 1<br \/>[\"el\", \"100\u2033] 1<br \/>[\"el\", \"2\u2033] 1<br \/>[\"la\", \"capacidad\"] 3<br \/>[\"el\", \"absoluto\"] 1<br \/>[\"la\", \"respuesta\"] 1<br \/>[\"la\", \"aplicaci\u00f3n\"] 1<br \/>[\"la\", \"aplicaci\u00f3n\"] 1<br \/>[\"el\", \"\u00e1rea,\"] 1<br \/>[\"el\", \"fondo.\"] 1<\/div>\n<\/div>\n<p>Para elegir la palabra que sale despu\u00e9s de \"la\", elegimos una palabra que le sigue al azar, pero ponderamos nuestra elecci\u00f3n en funci\u00f3n de la frecuencia con la que aparece el par de palabras en la entrada. Esto significa que damos a \"capacidad\" una probabilidad de 3\/12 o 25% de ser elegida aqu\u00ed, mientras que el resto de las palabras tienen cada una una probabilidad de 1\/12 o 8,3%.<\/p>\n<p dir=\"ltr\">Puesto que al principio de una frase emparejamos la primera palabra con null (por ejemplo: [null, \"In\"] en el ejemplo anterior), podemos hacer la misma consulta con null para empezar una nueva salida y obtener palabras que probablemente inicien un pensamiento, o un tuit, o lo que fuera nuestra entrada. Tambi\u00e9n tenemos que hacer esto si no tenemos suerte y no obtenemos ninguna palabra candidata de la primera consulta. Esto podr\u00eda ocurrir si la palabra de la consulta s\u00f3lo apareciera al final de los textos de entrada que procesamos.<\/p>\n<p><\/p>\n<p><strong>Aplicaci\u00f3n Marky<\/strong><\/p>\n<p dir=\"ltr\">Marky utiliza un <a href=\"https:\/\/github.com\/apage43\/cbdrawer\">simple clojure wrapper<\/a> construido por la comunidad. Para configurar marky, crea un archivo marky-config.clj y dir\u00edgelo a tu cluster de Couchbase Server y a tu cuenta de twitter. A\u00f1ade algunos datos semilla, cuentas de usuario de twitter o atom feeds y estar\u00e1s listo para lanzar la aplicaci\u00f3n.<\/p>\n<p><\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family:monospace;\">{:bucket \"por defecto\"<br \/>:pass \"\"<br \/>:cburl \"https:\/\/localhost:8091\/\"<br \/>:twitter {:app-key \"XXXXXXXXX\"<br \/>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 :app-secret \"XXXXXXXXXX\"<br \/>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 :user-token \"XXXXXXXX\"<br \/>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 :user-secret \"XXXXXXXX\"}<br \/>:jobs<br \/>[:period, :after est\u00e1n en segundos, :ttl est\u00e1 en d\u00edas.<br \/>\u00a0{:type :twitter :user \"user-handle1\" :period 3600 :ttl 60}<br \/>\u00a0{:type :twitter :user \"user-handle2\" :period 3600 :ttl 60}<br \/>\u00a0{:type :send-tweet :period 3600 :after 600}<br \/>\u00a0{:type :atom :url \"https:\/\/some-domain\/rssfeed.php\" :period 86400 :ttl 60}]}<\/div>\n<\/div>\n<p>He aqu\u00ed algunos divertidos tweets de Marky -<\/p>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/www.couchbase.com\/blog\/sites\/default\/files\/uploads\/all\/Screen%20Shot%202012-11-15%20at%2012.24.14%20PM.png\" style=\"width:529px;height:100px;\" \/><\/p>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/www.couchbase.com\/blog\/sites\/default\/files\/uploads\/all\/Screen%20Shot%202012-11-15%20at%2012.36.41%20PM.png\" style=\"width:530px;height:114px;\" \/><\/p>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/www.couchbase.com\/blog\/sites\/default\/files\/uploads\/all\/Screen%20Shot%202012-11-15%20at%2012.41.21%20PM.png\" style=\"width:530px;height:93px;\" \/><\/p>\n<p><img decoding=\"async\" alt=\"\" src=\"https:\/\/www.couchbase.com\/blog\/sites\/default\/files\/uploads\/all\/Screen%20Shot%202012-11-15%20at%2012.41.46%20PM.png\" style=\"width:530px;height:113px;\" \/><\/p>\n<p>\u00bfQuieres conseguir a Marky?<\/p>\n<p>Puede descargar el c\u00f3digo fuente de Marky <a href=\"https:\/\/github.com\/couchbaselabs\/marky\">aqu\u00ed<\/a><br \/>Tambi\u00e9n puede contribuir al proyecto clojure wrapper <a href=\"https:\/\/github.com\/apage43\/cbdrawer\">aqu\u00ed<\/a><\/p>\n<p>\u00a1Divi\u00e9rtete!<\/p>\n<p>&#8212;-<\/p>\n<p>Gracias a Aaron por elaborar el c\u00f3digo en clojure.<\/p>","protected":false},"excerpt":{"rendered":"<p>I\u2019ve been hearing about Markov chains for long enough \u2013 it was time that I learned more about them and develop a simple fun markov chain application. I\u2019m sure that you don\u2019t want to get bogged down by the mathematical [&hellip;]<\/p>","protected":false},"author":2,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"ppma_author":[8968],"class_list":["post-1612","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Fun with Couchbase and Markov Chains - The Couchbase Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/es\/fun-couchbase-and-markov-chains\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Fun with Couchbase and Markov Chains\" \/>\n<meta property=\"og:description\" content=\"I\u2019ve been hearing about Markov chains for long enough \u2013 it was time that I learned more about them and develop a simple fun markov chain application. I\u2019m sure that you don\u2019t want to get bogged down by the mathematical [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/fun-couchbase-and-markov-chains\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2012-11-15T08:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-03-01T15:39:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/couchbase-nosql-dbaas.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"The Couchbase Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"The Couchbase Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minuto\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/fun-couchbase-and-markov-chains\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fun-couchbase-and-markov-chains\/\"},\"author\":{\"name\":\"The Couchbase Team\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/764f4a6771ee19bc7af70b70a326fb93\"},\"headline\":\"Fun with Couchbase and Markov Chains\",\"datePublished\":\"2012-11-15T08:00:00+00:00\",\"dateModified\":\"2017-03-01T15:39:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fun-couchbase-and-markov-chains\/\"},\"wordCount\":138,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fun-couchbase-and-markov-chains\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/fun-couchbase-and-markov-chains\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/fun-couchbase-and-markov-chains\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/fun-couchbase-and-markov-chains\/\",\"name\":\"Fun with Couchbase and Markov Chains - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fun-couchbase-and-markov-chains\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fun-couchbase-and-markov-chains\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2012-11-15T08:00:00+00:00\",\"dateModified\":\"2017-03-01T15:39:01+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fun-couchbase-and-markov-chains\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/fun-couchbase-and-markov-chains\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/fun-couchbase-and-markov-chains\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/fun-couchbase-and-markov-chains\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Fun with Couchbase and Markov Chains\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/764f4a6771ee19bc7af70b70a326fb93\",\"name\":\"The Couchbase Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/7befc37d02226b59499817eafdec60c3\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b4c18c758421903398e84d6c9560f319f39c665798d7d23e6a6f9dff8a8f984e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b4c18c758421903398e84d6c9560f319f39c665798d7d23e6a6f9dff8a8f984e?s=96&d=mm&r=g\",\"caption\":\"The Couchbase Team\"},\"description\":\"Jennifer Garcia is a Senior Web Manager at Couchbase Inc. As the website manager, Jennifer has overall responsibility for the website properties including design, implementation, content, and performance.\",\"sameAs\":[\"https:\/\/www.couchbase.com\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/jennifer-garcia\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Fun with Couchbase and Markov Chains - The Couchbase Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/es\/fun-couchbase-and-markov-chains\/","og_locale":"es_MX","og_type":"article","og_title":"Fun with Couchbase and Markov Chains","og_description":"I\u2019ve been hearing about Markov chains for long enough \u2013 it was time that I learned more about them and develop a simple fun markov chain application. I\u2019m sure that you don\u2019t want to get bogged down by the mathematical [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/es\/fun-couchbase-and-markov-chains\/","og_site_name":"The Couchbase Blog","article_published_time":"2012-11-15T08:00:00+00:00","article_modified_time":"2017-03-01T15:39:01+00:00","og_image":[{"width":1800,"height":630,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/couchbase-nosql-dbaas.png","type":"image\/png"}],"author":"The Couchbase Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"The Couchbase Team","Est. reading time":"1 minuto"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/fun-couchbase-and-markov-chains\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/fun-couchbase-and-markov-chains\/"},"author":{"name":"The Couchbase Team","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/764f4a6771ee19bc7af70b70a326fb93"},"headline":"Fun with Couchbase and Markov Chains","datePublished":"2012-11-15T08:00:00+00:00","dateModified":"2017-03-01T15:39:01+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/fun-couchbase-and-markov-chains\/"},"wordCount":138,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/fun-couchbase-and-markov-chains\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Uncategorized"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/fun-couchbase-and-markov-chains\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/fun-couchbase-and-markov-chains\/","url":"https:\/\/www.couchbase.com\/blog\/fun-couchbase-and-markov-chains\/","name":"Fun with Couchbase and Markov Chains - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/fun-couchbase-and-markov-chains\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/fun-couchbase-and-markov-chains\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2012-11-15T08:00:00+00:00","dateModified":"2017-03-01T15:39:01+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/fun-couchbase-and-markov-chains\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/fun-couchbase-and-markov-chains\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/fun-couchbase-and-markov-chains\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/fun-couchbase-and-markov-chains\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Fun with Couchbase and Markov Chains"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"El blog de Couchbase","description":"Couchbase, la base de datos NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/764f4a6771ee19bc7af70b70a326fb93","name":"El equipo de Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/7befc37d02226b59499817eafdec60c3","url":"https:\/\/secure.gravatar.com\/avatar\/b4c18c758421903398e84d6c9560f319f39c665798d7d23e6a6f9dff8a8f984e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b4c18c758421903398e84d6c9560f319f39c665798d7d23e6a6f9dff8a8f984e?s=96&d=mm&r=g","caption":"The Couchbase Team"},"description":"Jennifer Garcia es Gerente Senior de Web en Couchbase Inc. Como responsable del sitio web, Jennifer tiene la responsabilidad general de las propiedades del sitio web, incluido el dise\u00f1o, la implementaci\u00f3n, el contenido y el rendimiento.","sameAs":["https:\/\/www.couchbase.com"],"url":"https:\/\/www.couchbase.com\/blog\/es\/author\/jennifer-garcia\/"}]}},"authors":[{"term_id":8968,"user_id":2,"is_guest":0,"slug":"jennifer-garcia","display_name":"The Couchbase Team","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/b4c18c758421903398e84d6c9560f319f39c665798d7d23e6a6f9dff8a8f984e?s=96&d=mm&r=g","author_category":"","last_name":"Garcia","first_name":"Jennifer","job_title":"","user_url":"https:\/\/www.couchbase.com","description":"Jennifer Garcia es Gerente Senior de Web en Couchbase Inc. Como responsable del sitio web, Jennifer tiene la responsabilidad general de las propiedades del sitio web, incluido el dise\u00f1o, la implementaci\u00f3n, el contenido y el rendimiento."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/1612","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=1612"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/1612\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=1612"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=1612"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=1612"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=1612"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}