<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[TorresMxBlog - Fer Torres Blog]]></title><description><![CDATA[Thoughts, stories and ideas.]]></description><link>https://torresmx.dev//</link><image><url>https://torresmx.dev//favicon.png</url><title>TorresMxBlog - Fer Torres Blog</title><link>https://torresmx.dev//</link></image><generator>Ghost 2.9</generator><lastBuildDate>Sat, 20 Feb 2021 17:44:20 GMT</lastBuildDate><atom:link href="https://torresmx.dev//rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Nube de palabras de conferencias presidenciales]]></title><description><![CDATA[Con tantas conferencias del presidente de México, cada mañana, desde diciembre 2018, ¿te has preguntado qué palabras son las que más se mencionan en ellas? ¿Quiénes han participado y qué han dicho? 

Vamos a analizarlo...]]></description><link>https://torresmx.dev//wordcloud_conferencias_1/</link><guid isPermaLink="false">Ghost__Post__602578248e65f3001e5b8481</guid><category><![CDATA[datascience]]></category><category><![CDATA[wordcloud]]></category><category><![CDATA[python]]></category><dc:creator><![CDATA[Fernando Torres]]></dc:creator><pubDate>Thu, 11 Feb 2021 20:12:00 GMT</pubDate><media:content url="https://s3-us-west-2.amazonaws.com/torresmxbucket/2021/02/Screen-Shot-2021-02-20-at-2.21.46.png" medium="image"/><content:encoded><![CDATA[<h1/><img src="https://s3-us-west-2.amazonaws.com/torresmxbucket/2021/02/Screen-Shot-2021-02-20-at-2.21.46.png" alt="Nube de palabras de conferencias presidenciales"/><p>Con tantas conferencias presidenciales en México desde hace dos años, ¿te has preguntado <strong>qué palabras son las que más se mencionan en ellas? ¿Quiénes han participado y qué han dicho? </strong><br>Vamos a analizarlo...</br></p><hr><p>En México actualmente se realiza cada día, casi sin falta, una conferencia matutina por parte del Presidente de México, Andrés Manuel López Obrador y algunos miembros del gabinete. Las transcripciones de lo que se dice en dichas conferencias, es publicado en la página del propio gobierno <a href="https://presidente.gob.mx/sala-de-prensa/">https://presidente.gob.mx/sala-de-prensa/</a></p><p>El profesor Luis Jorge Novelo realizó un interesante análisis con dos discursos presidenciales que también se pueden encontrar en dicho sitio y lo publicó en su <a href="https://www.linkedin.com/pulse/qu%C3%A9-es-lo-que-dice-el-discurso-presidencial-an%C3%A1lisis-de-luis-jorge/">perfil de LinkedIn utilizando una <em>wordcloud</em> o <em>nube de palabras</em>.</a></p><blockquote>Una nube de palabras o nube de etiquetas es una representación visual de las palabras que conforman un texto, en donde el tamaño es mayor para las palabras que aparecen con más frecuencia. <a href="https://es.wikipedia.org/wiki/Nube_de_palabras">Wikipedia</a></blockquote><figure class="kg-card kg-image-card kg-width-wide"><img src="https://s3-us-west-2.amazonaws.com/torresmxbucket/2021/02/Screen-Shot-2021-02-11-at-14.01.58-1.png" class="kg-image" alt="Nube de palabras de conferencias presidenciales"/></figure><p>Ahora, intentaremos realizar un ejercicio similar pero con las transcripciones de las conferencias diarias comúnmente llamadas "mañaneras" y tratar de separarlo por cada interlocutor.</p><p><strong>Pruebas de extracción de información</strong></p><p>Iniciaremos el ejercicio con una sola transcripción utilizando herramientas de <em>web scraping</em>, <em>python</em> y <em>Jupyter Notebook.</em></p><p>La conferencia elegida para realizar la primer prueba y análisis será la del 22 de enero del 2021 y se encuentra publicada <a href="https://presidente.gob.mx/22-01-21-version-estenografica-de-la-conferencia-de-prensa-matutina-del-presidente-andres-manuel-lopez-obrador/">en ésta dirección</a>.</p><p>Empezamos preparando el ambiente e instalando lo necesario; abrimos un Jupyter Notebook y utilizando los paquetes de BeautifulSoup, pandas y numpy, empezamos a obtener el texto.</p><figure class="kg-card kg-image-card"><img src="https://s3-us-west-2.amazonaws.com/torresmxbucket/2021/02/Screen-Shot-2021-02-11-at-13.22.20.png" class="kg-image" alt="Nube de palabras de conferencias presidenciales"/></figure><p>Se requiere de limpieza de los datos, ya que se puede observar que obtuvimos algunos títulos y leyendas que no necesariamente son parte del discurso o algo dicho por algún interlocutor. También hay partes etiquetadas como <em>inaudibles</em></p><figure class="kg-card kg-image-card"><img src="https://s3-us-west-2.amazonaws.com/torresmxbucket/2021/02/Screen-Shot-2021-02-11-at-13.17.13.png" class="kg-image" alt="Nube de palabras de conferencias presidenciales"/></figure><p>Después de un poco de limpieza y ordenamiento, obtenemos un <em>dataframe</em> con cada párrafo y quien fue el interlocutor de esos párrafos.</p><figure class="kg-card kg-image-card"><img src="https://s3-us-west-2.amazonaws.com/torresmxbucket/2021/02/Screen-Shot-2021-02-11-at-13.26.23.png" class="kg-image" alt="Nube de palabras de conferencias presidenciales"/></figure><p>Al revisar los distintos interlocutores, encontramos que en ocasiones se les coloca el cargo/puesto, por lo que tenemos que separar los datos.</p><figure class="kg-card kg-image-card"><img src="https://s3-us-west-2.amazonaws.com/torresmxbucket/2021/02/Screen-Shot-2021-02-11-at-13.29.37.png" class="kg-image" alt="Nube de palabras de conferencias presidenciales"/></figure><p>Después de separar a los distintos interlocutores, sus cargos y asociarlos a sus propios párrafos, obtenemos el siguiente dataframe simplificado en sólo un renglón por interlocutor y discurso.</p><figure class="kg-card kg-image-card"><img src="https://s3-us-west-2.amazonaws.com/torresmxbucket/2021/02/Screen-Shot-2021-02-11-at-13.33.21.png" class="kg-image" alt="Nube de palabras de conferencias presidenciales"/></figure><p/><h2 id="generando-la-nube-de-palabras">Generando la nube de palabras</h2><p/><p>Ahora, vamos a crear la nube de palabras para el presidente.</p><p>Primero obtenemos una lista de  palabras que vamos a eliminar del conteo como son artículos, conectores, etc. (el, la, los ...) y contamos cada ocurrencia; esto genera la siguiente lista de palabras más utilizadas.</p><figure class="kg-card kg-image-card"><img src="https://s3-us-west-2.amazonaws.com/torresmxbucket/2021/02/Screen-Shot-2021-02-20-at-1.41.31.png" class="kg-image" alt="Nube de palabras de conferencias presidenciales"/></figure><p>Finalmente utilizando el paquete <a href="https://amueller.github.io/word_cloud/index.html"><strong><em>wordcloud</em></strong></a>, generamos la nube de palabras final utilizando una imagen de México como máscara.</p><p>Las palabras más utilizadas por el presidente en ésta conferencia fueron: vamos, si, entonces, vacunas, vacunación.</p><figure class="kg-card kg-image-card"><img src="https://s3-us-west-2.amazonaws.com/torresmxbucket/2021/02/Screen-Shot-2021-02-20-at-1.42.44.png" class="kg-image" alt="Nube de palabras de conferencias presidenciales"/></figure><h2 id="generando-otra-nube-de-palabras">Generando otra nube de palabras</h2><p>De la misma forma generamos la tabla y gráfica para el discurso del Dr. López Gatell.</p><figure class="kg-card kg-image-card"><img src="https://s3-us-west-2.amazonaws.com/torresmxbucket/2021/02/Screen-Shot-2021-02-20-at-2.01.48.png" class="kg-image" alt="Nube de palabras de conferencias presidenciales"/></figure><figure class="kg-card kg-image-card"><img src="https://s3-us-west-2.amazonaws.com/torresmxbucket/2021/02/Screen-Shot-2021-02-20-at-2.03.26.png" class="kg-image" alt="Nube de palabras de conferencias presidenciales"/></figure><h3 id="consideraciones-finales">Consideraciones finales</h3><p>Ahora podemos darnos una idea de las posibilidades y que podremos generalizar el ejercicio para todas las transcripciones publicadas y obtener análisis adicionales muy interesantes como separar el conteo por interlocutor, por tipo de conferencia, por fecha, etc.</p><p>El código de éste ejercicio y sus actualizaciones, lo puedes consultar en <a href="https://github.com/FernandoTorresL/scraping-conferencias">GitHub</a></p><p>En próximas publicaciones continuaremos con éste ejercicio y preparando el programa final.</p><p/><!--kg-card-begin: markdown--><h3 id="actualizacin">Actualización</h3>
<p>Con datos de la <a href="https://presidente.gob.mx/19-02-21-version-estenografica-de-la-conferencia-de-prensa-matutina-del-presidente-andres-manuel-lopez-obrador/">conferencia mañanera del 19-feb-2021</a> *:</p>
<p><img src="https://s3-us-west-2.amazonaws.com/torresmxbucket/2021/02/Screen-Shot-2021-02-20-at-11.37.47.png" alt="Nube de palabras de conferencias presidenciales"/></p>
<p><img src="https://s3-us-west-2.amazonaws.com/torresmxbucket/2021/02/Screen-Shot-2021-02-20-at-11.31.25-1.png" alt="Nube de palabras de conferencias presidenciales"/></p>
<p>* Sin tomar en cuenta los siguientes conectores/muletillas y sus frecuencias:</p>
<p>entonces: 39<br>
vamos: 32<br>
pues: 28<br>
va: 27<br>
aquí:24<br>
si: 23</br></br></br></br></br></p>
<!--kg-card-end: markdown--><h3 id="referencias-">Referencias:</h3><ul><li><a href="https://github.com/FernandoTorresL/scraping-conferencias">Repositorio en GitHub</a></li><li><a href="https://amueller.github.io/word_cloud/references.html">Documentación del paquete wordcloud</a></li><li><a href="https://github.com/amueller/word_cloud/">Repositorio del paquete wordcloud en GitHub</a></li><li><a href="https://www.linkedin.com/pulse/qu%C3%A9-es-lo-que-dice-el-discurso-presidencial-an%C3%A1lisis-de-luis-jorge/">Ejercicio Prof. Luis Jorge Novelo</a></li><li><a href="https://amueller.github.io/word_cloud/auto_examples/index.html">Ejemplos de nube de palabras</a></li></ul><p>--- </p><h4 id="fertorresmx-dev"><a href="https://www.fertorresmx.dev/">fertorresmx.dev</a> </h4><h4/><p>Twitter: <a href="https://www.twitter/fertorresmx">@fertorresmx</a></p><p/></hr>]]></content:encoded></item><item><title><![CDATA[Configura rápidamente tu Mac]]></title><description><![CDATA[Preparar tu computadora desde una instalación limpia puede ser desgastante y siempre olvidas algo. 


Con estos tips podrás realizar todo el proceso rápidamente y tenerla lista en minutos.]]></description><link>https://torresmx.dev//configura-tu-mac/</link><guid isPermaLink="false">Ghost__Post__5f5b18a3d1e457001e1af7e9</guid><category><![CDATA[macOs]]></category><category><![CDATA[setup]]></category><category><![CDATA[developer]]></category><category><![CDATA[configuración]]></category><dc:creator><![CDATA[Fernando Torres]]></dc:creator><pubDate>Sun, 18 Oct 2020 05:00:00 GMT</pubDate><media:content url="https://s3-us-west-2.amazonaws.com/torresmxbucket/2020/10/technology-785742_640.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://s3-us-west-2.amazonaws.com/torresmxbucket/2020/10/technology-785742_640.jpg" alt="Configura rápidamente tu Mac"/><p/><p>Muy bien, tu Mac se volvió lenta, algo ya no funciona bien o decidiste formatearla y empezar de cero con una instalación limpia. Esto significa volver a descargar cada uno de los programas, correr cada instalador, etc. Te llevará unas horas y te preparas para tan larga tarea. Si lo haces con frecuencia, seguro ya tienes una lista con el orden de las actividades.</p><p>Hace poco descubrí que hay una forma de realizar todo el proceso de una forma mucho más rápida. </p><!--kg-card-begin: markdown--><h2 id="primerpaso">Primer paso</h2>
<!--kg-card-end: markdown--><p>Si estás iniciando desde cero, el asistente te solicitará lo usual, tu Apple ID, tu configuración regional, la conexión a Internet, etc. No olvides instalar las actualizaciones del sistema operativo y parches de seguridad.</p><!--kg-card-begin: markdown--><h2 id="instalarhomebrew">Instalar Homebrew</h2>
<!--kg-card-end: markdown--><p>Ahora, abre una Terminal e instala <strong><a href="https://brew.sh/">Homebrew</a></strong>, un manejador de paquetes. Te permitirá instalar muchos programas directo desde la línea de comandos.</p><!--kg-card-begin: markdown--><p><code>/bin/bash -c &quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)&quot;</code></p>
<!--kg-card-end: markdown--><p>Y asegurémonos de tener la última actualización.</p><!--kg-card-begin: markdown--><p><code>brew update</code></p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h3 id="instalandoaplicaciones">Instalando aplicaciones</h3>
<!--kg-card-end: markdown--><p>Ahora empecemos por instalar git, yarn, make y travis:</p><!--kg-card-begin: markdown--><p><code>brew install  git  yarn  make  travis</code></p>
<!--kg-card-end: markdown--><p>Y aplicaciones GUI:</p><!--kg-card-begin: markdown--><p><code>brew install  visual-studio-code google-chrome firefox opera rectangle iterm2 slack spotify postman istat-menus xampp 1password dropbox</code></p>
<!--kg-card-end: markdown--><p>Te recomiendo no instales Node.js en este punto. Mira más adelante</p><!--kg-card-begin: markdown--><h2 id="shell">Shell</h2>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><p>Ahora instalemos <strong><a href="https://ohmyz.sh/">Oh My Zsh</a></strong><br>
<code>sh -c &quot;$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)&quot;</code></br></p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h2 id="node">Node</h2>
<p>Aquí vamos a utilizar <strong><a href="https://github.com/nvm-sh/nvm/blob/master/README.md">Node Version Manager(nvm)</a></strong> para controlar fácil y rápidamente las versiones de Node.js<br>
<code>curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.36.0/install.sh | bash</code></br></p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><p>Instalemos la última versión de node.<br>
<code>nvm install node</code></br></p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><p>Reinicia tu terminal y ejecuta<br>
<code>nvm use node</code></br></p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><p>Revisemos las versiones de Node.js y npm<br>
<code>node -v &amp;&amp; npm -v</code></br></p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h3 id="actualizarnvm">Actualizar nvm</h3>
<p>Más adelante, si deseas actualizar nvm utiliza<br>
<code>nvm install node --reinstall-packages-from=node</code></br></p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h3 id="cambiarentreversiones">Cambiar entre versiones</h3>
<p>Ahora puedes instalar distintas versiones de Node.js<br>
<code>nvm install vxx.xx.x</code></br></p>
<p>Por ejemplo:<br>
<code>nvm install v12.18.4</code></br></p>
<p>Para revisar la lista de versiones que tienes instaladas<br>
<code>nvm list</code></br></p>
<p>Para usar una versión en particular<br>
<code>nvm use vxx.xx.x</code></br></p>
<!--kg-card-end: markdown--><figure class="kg-card kg-image-card"><img src="https://s3-us-west-2.amazonaws.com/torresmxbucket/2020/10/Screen-Shot-2020-10-18-at-23.04.15.png" class="kg-image" alt="Configura rápidamente tu Mac"/></figure><!--kg-card-begin: markdown--><p>Y para establecer la versión por defecto<br>
<code>nvm alias default vxx.xx.x</code></br></p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h2 id="git">Git</h2>
<p>Ahora configura Git de forma global<br>
<code>touch ~/.gitconfig</code></br></p>
<p>Y captura al menos los siguientes valores en <em>user</em> y <em>github</em>. También puedes colocar los alias que necesites</p>
<!--kg-card-end: markdown--><pre><code class="language-bash">[user]
  name   = Firstname Lastname
  email  = [email protected]
[github]
  user   = username
[alias]
  a      = add
[user]
  name   = Fer Torres
  email  = [email protected]
[github]
  user   = FernandoTorresL
[alias]
  a      = add
  cm     = commit -m
  s      = status
  superlog = log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all</code></pre><!--kg-card-begin: markdown--><h3 id="generartusllavesssh">Generar tus llaves SSH</h3>
<p>Genera tu par de llaves para incluirlas en GitHub.<br>
<code>ssh-keygen -t rsa -b 4096 -C &quot;[email protected]&quot;</code></br></p>
<p>Añadelas al folder .ssh<br>
<code>ssh-add -K ~/.ssh/id_rsa</code></br></p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h2 id="preferencias">Preferencias</h2>
<p>Aquí personalizamos algunas opciones</p>
<h3 id="generales">Generales</h3>
<ul>
<li>Agregamos el folder Home a la barra lateral de Finder</li>
<li>Usamos Modo Oscuro</li>
<li>El navegador por default a Google Chrome</li>
<li>Activamos identificadores para las aplicaciones abiertas en el Dock</li>
<li>Cambiamos el nombre por defecto de la computadora</li>
<li>Nos aseguramos que está desactivado compartir archivos</li>
<li>Ejecutamos comandos adicionales para las siguientes opciones</li>
</ul>
<h4 id="cambiarlacarpetapordefectodelacapturadepantalla">Cambiar la carpeta por defecto de la captura de pantalla</h4>
<p><code>defaults write com.apple.screencapture location ~/Documents/ScreenCaptures</code></p>
<h4 id="mostrarcarpetalibrary">Mostrar carpeta Library</h4>
<p><code>chflags nohidden ~/Library</code></p>
<h4 id="mostrararchivosocultos">Mostrar archivos ocultos</h4>
<p><code>defaults write com.apple.finder AppleShowAllFiles YES</code></p>
<h4 id="mostrarelpathenlabarra">Mostrar el path en la barra</h4>
<p><code>defaults write com.apple.finder ShowPathbar -bool true</code></p>
<h4 id="mostrarlabarradeestado">Mostrar la barra de estado</h4>
<p><code>defaults write com.apple.finder ShowStatusBar -bool true</code></p>
<h4 id="prevenirquehacerswipeaizquierdayderechamuestrelanavegacinhistricaenchrome">Prevenir que hacer 'swipe' a izquierda y derecha muestre la navegación histórica en Chrome</h4>
<p><code>defaults write com.google.Chrome AppleEnableSwipeNavigateWithScrolls -bool false</code></p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h3 id="chrome">Chrome</h3>
<ul>
<li>Cambiar a modo oscuro</li>
<li>Agregar mi cuenta de Google</li>
</ul>
<p>Instalar extensiones:</p>
<ul>
<li>Instalar 1Password</li>
<li>Instalar React DevTools</li>
<li>Instalar Redux DevTools</li>
<li>Instalar JSONViewer</li>
<li>Instalar Lighthouse</li>
</ul>
<h3 id="visualstudiocode">Visual Studio Code</h3>
<ul>
<li>Usar <code>CMD + SHIFT + P</code> y selecciona &quot;Install code command in PATH&quot;</li>
<li>Instalar plugin Sync, logearme in GitHub y descargar mis preferencias (gist). Esto instala automáticamente todos mis plugins previamente almacenados</li>
<li>Configurar Wakatime</li>
</ul>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h2 id="finalmente">Finalmente...</h2>
<p>Básicamente es lo principal para empezar a trabajar y te habrá ahorrado mucho tiempo en el setup e instalaciones. Espero te sirva y te proporcione inspiración para tu propio setup.</p>
<hr>
<h3 id="fertorresmxdev"><a href="https://www.fertorresmx.dev/">fertorresmx.dev</a></h3>
<p>Twitter, Instagram: <a href="https://www.twitter/fertorresmx">@fertorresmx</a></p>
<!--kg-card-end: markdown--></hr>]]></content:encoded></item><item><title><![CDATA[Data schema]]></title><description><![CDATA[This is a data schema stub for Gatsby.js and is not used. It must exist for builds to function]]></description><link>https://demo.ghost.io/data-schema-page/</link><guid isPermaLink="false">Ghost__Post__5bbafb3cb7ec4135e42fce56</guid><category><![CDATA[Data schema primary]]></category><dc:creator><![CDATA[Data Schema Author]]></dc:creator><pubDate>Tue, 04 Dec 2018 13:59:14 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1532630571098-79a3d222b00d?ixlib=rb-0.3.5&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ&amp;s=a88235003c40468403f936719134519d" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1532630571098-79a3d222b00d?ixlib=rb-0.3.5&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=1080&fit=max&ixid=eyJhcHBfaWQiOjExNzczfQ&s=a88235003c40468403f936719134519d" alt="Data schema"/><p>This is a data schema stub for Gatsby.js and is not used. It must exist for builds to function</p>]]></content:encoded></item></channel></rss>