<?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 "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"</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 "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"</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 && 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 "[email protected]"</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 "Install code command in PATH"</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&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=1080&fit=max&ixid=eyJhcHBfaWQiOjExNzczfQ&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>