<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Análisis de texto on Bastián Olea</title>
    <link>https://bastianolea.rbind.io/tags/an%C3%A1lisis-de-texto/</link>
    <description>Recent content in Análisis de texto on Bastián Olea</description>
    <generator>Hugo</generator>
    <language>es-ES</language>
    <lastBuildDate>Sat, 06 Jun 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://bastianolea.rbind.io/tags/an%C3%A1lisis-de-texto/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Búsquedas de texto por ranking de relevancia con R usando el algoritmo BM25</title>
      <link>https://bastianolea.rbind.io/blog/buscar_texto/</link>
      <pubDate>Sat, 06 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://bastianolea.rbind.io/blog/buscar_texto/</guid>
      <description>&lt;div style=&#34;display: flex; align-items: center; gap: 15px; padding: 14px; &#xA;            /*background-color: #A985C650;*/&#xA;            background-color: #DEC4F2;&#xA;            border-radius: 6px;&#xA;            margin: 20px 40px 20px 40px;&#34;&gt;&#xA;  &#xA;  &lt;div style=&#34;flex-shrink: 0;&#34;&gt;&#xA;    &lt;i class=&#34;fas fa-info-circle&#34; style=&#34;font-size: 130%; margin-left: 2px; opacity: 1; color: #9069C0;&#34;&gt;&lt;/i&gt;&#xA;  &lt;/div&gt;&#xA;  &#xA;  &lt;aside style = &#34;font-size: 90%;&#34;&gt;&#xA;    Hice este post porque actualicé el &#xA;&lt;a href=&#34;https://bastianolea.rbind.io/blog/buscador/&#34;&gt;buscador de mi blog&lt;/a&gt; que puedes &#xA;&lt;a href=&#34;https://bastianolea.rbind.io/buscar/&#34;&gt;usar aquí&lt;/a&gt; para que ahora entregue mejores resultados, y lo mejor: ordenados por relevancia. Puedes ver su código &#xA;&lt;a href=&#34;https://github.com/bastianolea/blog_buscador&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;en este repositorio.&lt;/a&gt;&#xA;  &lt;/aside&gt;&#xA;  &#xA;&lt;/div&gt;&#xA;&lt;p&gt;Cuando tenemos datos que contienen mucho texto, usualmente necesitamos filtrar las observaciones dependiendo de si contienen o no uno o más términos.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Extracción de datos estructurados desde texto usando IA</title>
      <link>https://bastianolea.rbind.io/blog/datos_estructurados_llm/</link>
      <pubDate>Sat, 07 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://bastianolea.rbind.io/blog/datos_estructurados_llm/</guid>
      <description>&lt;div style=&#34;display: flex; align-items: center; gap: 15px; padding: 14px; &#xA;            background-color: #493365;&#xA;            border-radius: 6px;&#xA;            margin: 20px 40px 20px 40px;&#34;&gt;&#xA;  &#xA;  &lt;div style=&#34;flex-shrink: 0;&#34;&gt;&#xA;    &lt;i class=&#34;fas fa-triangle-exclamation&#34; style=&#34;font-size: 130%; margin-left: 2px; opacity: 1; color: #EAD2FA;&#34;&gt;&lt;/i&gt;&#xA;  &lt;/div&gt;&#xA;  &#xA;  &lt;aside style = &#34;font-size: 90%; color: #EAD2FA;&#34;&gt;&#xA;    Este tutorial lo hice con los aprendizajes que obtuve del excelente &#xA;&lt;a href=&#34;https://thisisnic.github.io/rainbowrworkshop/code.html&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;workshop &lt;em&gt;LLMs in R for Data Analysis&lt;/em&gt;&lt;/a&gt; impartido por &#xA;&lt;a href=&#34;https://niccrane.com&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Nic Crane&lt;/a&gt; en la fabulosa &#xA;&lt;a href=&#34;https://conference.rainbowr.org&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;conferencia de RainbowR 2026&lt;/a&gt;&#xA;  &lt;/aside&gt;&#xA;  &#xA;&lt;/div&gt;&#xA;&lt;p&gt;Los modelos de lenguaje (LLMs, también llamados coloquialmente &lt;em&gt;inteligencia artificial&lt;/em&gt;) nos pueden ayudar a &lt;strong&gt;transformar textos de cualquier tipo en datos estructurados&lt;/strong&gt;. Esto significa que puedes convertir &lt;strong&gt;entrevistas, reseñas, opiniones, correos, noticias y más&lt;/strong&gt; en &lt;strong&gt;bases de datos&lt;/strong&gt; con la información que necesitas debidamente ordenada en filas y columnas.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Video: Taller Medición y Análisis de la Corrupción en Chile desde el Análisis de Datos y Herramientas Abiertas</title>
      <link>https://bastianolea.rbind.io/blog/taller_corrupcion_cesi/</link>
      <pubDate>Wed, 23 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://bastianolea.rbind.io/blog/taller_corrupcion_cesi/</guid>
      <description>&lt;p&gt;Taller online que impartí para el &lt;em&gt;Congreso Estudiantil de Sociología Interdisciplinaria.&lt;/em&gt; En este taller introduje a estudiantes de sociología al lenguaje de programación R, explicando los beneficios del análisis de datos desarrollado en flujos de trabajo basados en la programación, y las posibilidades que se abren para producir estudios y obtener resultados usando código. Puse énfasis en el uso de tecnologías y datos abiertos, y en el principal beneficio de la programación (en mi opinión): el poder actualizar resultados, aplicaciones y visualizaciones automáticamente.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Visualizando texto como nubes de palabras en R</title>
      <link>https://bastianolea.rbind.io/blog/nubes_de_palabras/</link>
      <pubDate>Sat, 05 Jul 2025 00:00:00 +0000</pubDate>
      <guid>https://bastianolea.rbind.io/blog/nubes_de_palabras/</guid>
      <description>&lt;p&gt;Una de las formas más intuitivas de visualizar datos de texto son las nubes de palabras. En las nubes de palabras seleccionamos un subconjunto de las palabras del texto que queremos analizar y las distribuimos en un gráfico, donde las palabras que aparecen más frecuentemente aparecen más grandes, y usualmente al centro. Sirven para ver rápidamente los conceptos clave de un documento o un corpus de documentos.&lt;/p&gt;&#xA;&lt;p&gt;En este post veremos dos formas de crear nubes de palabras con R: con &lt;code&gt;{wordcloud2}&lt;/code&gt; y con &lt;code&gt;{ggplot2}&lt;/code&gt;. Para empezar, necesitamos una base de datos que tenga información de texto; por ejemplo, una base donde cada fila contenga una respuesta abierta de una encuesta, una reseña de un producto, un párrafo de un texto, un capítulo de un libro, o un libro completo.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Predecir género a partir de nombres usando un modelo de lenguaje en R</title>
      <link>https://bastianolea.rbind.io/blog/genero_nombres_llm/</link>
      <pubDate>Wed, 19 Feb 2025 00:00:00 +0000</pubDate>
      <guid>https://bastianolea.rbind.io/blog/genero_nombres_llm/</guid>
      <description>&lt;p&gt;&#xA;&lt;a href=&#34;https://bastianolea.rbind.io/blog/introduccion_llm_mall/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Hace poco&lt;/a&gt; conocí &#xA;&lt;a href=&#34;https://mlverse.github.io/mall/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;el paquete &lt;code&gt;{mall}&lt;/code&gt;&lt;/a&gt;, que facilita mucho el uso de un un modelo de lenguaje (LLM) local como una herramienta cotidiana para el análisis y procesamiento de datos.&lt;/p&gt;&#xA;&lt;p&gt;El paquete incluye varias funciones para usar un modelo LLM local en las columnas de un dataframe. &lt;code&gt;{mall}&lt;/code&gt; te puede ayudar a :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;clasificar el contenido de una variable&lt;/li&gt;&#xA;&lt;li&gt;resumir textos&lt;/li&gt;&#xA;&lt;li&gt;extraer sentimiento a partir del texto&lt;/li&gt;&#xA;&lt;li&gt;extraer información desde el texto&lt;/li&gt;&#xA;&lt;li&gt;confirmar si algo es verdadero o falso a partir de un texto&lt;/li&gt;&#xA;&lt;li&gt;y también a aplicar cualquier &lt;em&gt;prompt&lt;/em&gt; a una variable.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div style=&#34;display: flex; align-items: center; gap: 15px; padding: 14px; &#xA;            /*background-color: #A985C650;*/&#xA;            background-color: #DEC4F2;&#xA;            border-radius: 6px;&#xA;            margin: 20px 40px 20px 40px;&#34;&gt;&#xA;  &#xA;  &lt;div style=&#34;flex-shrink: 0;&#34;&gt;&#xA;    &lt;i class=&#34;fas fa-info-circle&#34; style=&#34;font-size: 130%; margin-left: 2px; opacity: 1; color: #9069C0;&#34;&gt;&lt;/i&gt;&#xA;  &lt;/div&gt;&#xA;  &#xA;  &lt;aside style = &#34;font-size: 90%;&#34;&gt;&#xA;    Puedes encontrar instrucciones detalladas sobre configurar el uso de IA en R &#xA;&lt;a href=&#34;https://bastianolea.rbind.io/blog/ellmer/&#34;&gt;en esta publicación.&lt;/a&gt;&#xA;  &lt;/aside&gt;&#xA;  &#xA;&lt;/div&gt;&#xA;&lt;p&gt;Recientemente lo usé para un caso real, donde tenía una columna de casi 2.000 nombres, y necesitaba asignarle un género a cada una de estas personas, solamente a partir de sus nombres y apellidos.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Resumir textos usando modelos de lenguaje (LLM) locales en R</title>
      <link>https://bastianolea.rbind.io/blog/resumir_texto_llm/</link>
      <pubDate>Sat, 08 Feb 2025 00:00:00 +0000</pubDate>
      <guid>https://bastianolea.rbind.io/blog/resumir_texto_llm/</guid>
      <description>&lt;p&gt;Los modelos de lenguaje (LLM) son herramientas muy útiles para analizar texto, y usarlos en tus análisis de datos con R es sencillo. Previamente en este blog ya he explicado cómo usar LLMs para &#xA;&lt;a href=&#34;../../../blog/analisis_sentimiento_llm/&#34;&gt;análisis de sentimiento&lt;/a&gt; y &#xA;&lt;a href=&#34;../../../tags/inteligencia-artificial/&#34;&gt;otros usos&lt;/a&gt;. En este tutorial, te enseño a utilizar modelos de lenguaje locales, instalados en tu propio computador, para obtener resúmenes de textos. Esto puede servir por si estás analizando una base de datos de texto que contenga textos de extensión larga, para los cuales sería conveniente tener una versión más breve. Por ejemplo, al analizar resultados de &#xA;&lt;a href=&#34;../../../tags/web-scraping/&#34;&gt;web scraping&lt;/a&gt;, conjuntos de &#xA;&lt;a href=&#34;../../../blog/2024-12-31/&#34;&gt;datos periodísticos o de noticias&lt;/a&gt;, datos de entrevistas, respuestas abiertas en encuestas, etc.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Análisis de sentimiento usando modelos de lenguaje (LLM) locales en R</title>
      <link>https://bastianolea.rbind.io/blog/analisis_sentimiento_llm/</link>
      <pubDate>Sun, 22 Dec 2024 00:00:00 +0000</pubDate>
      <guid>https://bastianolea.rbind.io/blog/analisis_sentimiento_llm/</guid>
      <description>&lt;p&gt;El análisis de sentimientos es una técnica de análisis de texto donde se aplican distintos algoritmos para poder clasificar textos de distinta longitud y complejidad en un conjunto preestablecido de categorías relacionadas al sentimiento de dichos textos. Con el &lt;em&gt;sentimiento&lt;/em&gt; de los textos nos referimos a la información subjetiva que entregan estos textos, así como los afectos que producen. Por ejemplo, &amp;ldquo;odio a mi gato&amp;rdquo; versus &amp;ldquo;mi gatita es tan tierna&amp;rdquo; son dos textos que expresan distintos niveles de negatividad/positividad, agresividad, ternura, etcétera. Las categorías del análisis del sentimiento suelen ser &lt;em&gt;positivo, neutro&lt;/em&gt; y &lt;em&gt;negativo,&lt;/em&gt; u otras más complejas, como agrado (agradable/desagradable), activación (activo/pasivo), entre otros.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Usando inteligencia artificial (LLM) para analizar datos de texto en R</title>
      <link>https://bastianolea.rbind.io/blog/inteligencia_artificial_mall/</link>
      <pubDate>Tue, 29 Oct 2024 00:00:00 +0000</pubDate>
      <guid>https://bastianolea.rbind.io/blog/inteligencia_artificial_mall/</guid>
      <description>&lt;p&gt;&#xA;&lt;a href=&#34;https://mlverse.github.io/mall/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;El paquete &lt;code&gt;{mall}&lt;/code&gt;&lt;/a&gt; facilita el uso de un LLM &lt;em&gt;(large language model)&lt;/em&gt; o modelo de lenguaje de gran tamaño para analizar texto con IA en un &lt;em&gt;dataframe.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;a href=&#34;r_ia_mall_featured.png&#34; target=&#34;_blank&#34;&gt;&#xA;&#xA;  &lt;img src=&#34;r_ia_mall_featured.png&#34; style=&#34;border-radius: 5px; width: 80%; max-width: 700px; display: block; margin: auto; margin-bottom: 8px; margin-top: 8px;&#34;&gt;&#xA;  &#xA;&lt;/a&gt;&#xA;&lt;p&gt;Esto significa que, para cualquier dataframe que tengamos, podemos aplicar un modelo de IA a una de sus columnas y recibir sus resultados en una columna nueva.&lt;/p&gt;&#xA;&lt;div style=&#34;display: flex; align-items: center; gap: 15px; padding: 14px; &#xA;            /*background-color: #A985C650;*/&#xA;            background-color: #DEC4F2;&#xA;            border-radius: 6px;&#xA;            margin: 20px 40px 20px 40px;&#34;&gt;&#xA;  &#xA;  &lt;div style=&#34;flex-shrink: 0;&#34;&gt;&#xA;    &lt;i class=&#34;fas fa-info-circle&#34; style=&#34;font-size: 130%; margin-left: 2px; opacity: 1; color: #9069C0;&#34;&gt;&lt;/i&gt;&#xA;  &lt;/div&gt;&#xA;  &#xA;  &lt;aside style = &#34;font-size: 90%;&#34;&gt;&#xA;    Puedes encontrar instrucciones más detalladas sobre configurar el uso de IA en R &#xA;&lt;a href=&#34;https://bastianolea.rbind.io/blog/ellmer/&#34;&gt;en esta publicación.&lt;/a&gt;&#xA;  &lt;/aside&gt;&#xA;  &#xA;&lt;/div&gt;&#xA;&lt;p&gt;Para poder hacer ésto, primero necesitamos tener un modelo LLM configurado en R. &#xA;&lt;a href=&#34;../../../blog/ellmer/&#34;&gt;Sigue las instrucciones en este tutorial&lt;/a&gt; para lograrlo.&lt;/p&gt;</description>
    </item>
    <item>
      <title>App: Análisis de prensa chilena</title>
      <link>https://bastianolea.rbind.io/blog/app_prensa_chile/</link>
      <pubDate>Thu, 08 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://bastianolea.rbind.io/blog/app_prensa_chile/</guid>
      <description>&lt;p&gt;Proyecto de ciencia de datos desarrollado en R para analizar texto de noticias chilenas. Comprende módulos para realizar web scraping de sitios web de prensa para obtener el texto de sus noticias, procesos para transformar ese texto en palabras (tokens), y procesos para analizar dicho corpus de palabras usando distintas técnicas estadísticas.&lt;/p&gt;&#xA;&lt;p&gt;Actualmente, el corpus de noticias obtenido supera las 800.000 noticias individuales, las cuales suman un total de 140 millones (!) de palabras, abarcando más de 30 fuentes periodísticas distintas.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
