<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: AWS UG ML Latam</title>
    <description>The latest articles on Forem by AWS UG ML Latam (@awsmllatam).</description>
    <link>https://forem.com/awsmllatam</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F5717%2F473e9de2-8136-429a-ad11-19ee6b83247d.jpeg</url>
      <title>Forem: AWS UG ML Latam</title>
      <link>https://forem.com/awsmllatam</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/awsmllatam"/>
    <language>en</language>
    <item>
      <title>Modelos sobreajustados (overfitting), desajustados (underfitting) y generalizados</title>
      <dc:creator>Max Zeballos</dc:creator>
      <pubDate>Thu, 29 Sep 2022 14:11:28 +0000</pubDate>
      <link>https://forem.com/awsmllatam/modelos-sobreajustados-overfitting-desajustados-underfitting-y-generalizados-k64</link>
      <guid>https://forem.com/awsmllatam/modelos-sobreajustados-overfitting-desajustados-underfitting-y-generalizados-k64</guid>
      <description>&lt;h2&gt;
  
  
  Motivación
&lt;/h2&gt;

&lt;p&gt;El objetivo principal de un modelo es lograr el resultado correcto para la mayor cantidad de datos nuevos. En el presente post se pretende explicar algunos detalles a tener en cuenta para lograrlo&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducción
&lt;/h2&gt;

&lt;p&gt;Despues que un modelo a sido entrenado, se desea que pueda predecir la mejor respuesta para la mayor cantidad de datos. Lograr este resultado puede ser complicado dependiendo del conjunto de datos que utilicemos para entrenar el modelo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Modelo desajustado (underfitting)
&lt;/h2&gt;

&lt;p&gt;Un modelo se encuentra desajustado cuando es demasiado simple y no se puede adaptar a la complejidad del conjunto de datos de entrenamiento.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbwrcgb7irc80y2qg7759.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbwrcgb7irc80y2qg7759.png" alt="Underfitting" width="748" height="535"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para resolver el problema podemos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Incrementar la complejidad del modelo&lt;/li&gt;
&lt;li&gt;Entrenar el modelo por un periodo mas largo de tiempo, (incrementar las épocas) para reducir el error&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Modelo sobreajustado (overfitting)
&lt;/h2&gt;

&lt;p&gt;Un modelo se encuentra sobreajustado cuando memoriza detalles específicos de la data de entrenamiento y no logra generalizar sus predicciones.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcx7sfo1qlb1b06cylg11.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcx7sfo1qlb1b06cylg11.png" alt="Overfitting" width="748" height="535"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Los modelos sobreajustados funcionan bien con el conjunto de datos de entrenamiento, pero falla con datos nuevos (datos de prueba)&lt;/p&gt;

&lt;h2&gt;
  
  
  Generalizado
&lt;/h2&gt;

&lt;p&gt;Un modelo que realiza buenas predicciones durante el entrenamiento y las pruebas (conjuntos de datos que no ha visto antes) es considerado un buen modelo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4e03nd1k8dax6ytmncbi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4e03nd1k8dax6ytmncbi.png" alt="Generalized" width="748" height="535"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;El objetivo es lograr modelos generalizados.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Como prevenir el sobreajustamiento (overfitting)?
&lt;/h2&gt;

&lt;p&gt;1.- Realizar para temprana (early stopping)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deje de entrenar el modelo cuando observe que la pérdida de validación (validation loss) aumenta mientras que la pérdida de entrenamiento (training loss) disminuye. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;2.- Hacer regularizacion&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;La regularización mejora la capacidad de generalización del modelo. Por ejemplo utilizar Regularizacion L1 (Lasso regression) o Regularizacion L2 (Ridge regression).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;3.- Agregar mas conjuntos de datos&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Si incrementa el conjunto de datos de entreamiento el modelo podria generalizar mejor&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;4.- Realizar seleccion de caracteristicas&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Eliminar las caracteristicas de poco interes podria mejorar la capacidad de generalizacion del modelo&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;5.- Utilizar boosting y bagging (ensemble learning)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Al combinar la votación de muchos modelos diferentes a través de bagging y boosting, mejorará la generalización del modelo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;6.- Agregar mas ruido&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Agregar ruido podría permitir que el modelo generalice mejor&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;7.- Usar la tecnica de expulsion (dropout technique)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;En el entrenamiento de redes neuronales artificiales, la eliminación de algunas neuronas mediante la técnica Dropout mejora la capacidad de generalización de las redes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;La generalización es la característica mas importante a lograr en nuestro modelo, para lograrlo también es muy importante la cantidad y calidad de nuestros.&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>spanish</category>
      <category>ai</category>
      <category>datascience</category>
    </item>
    <item>
      <title>Evaluación de rendimiento de un modelo de machine learning</title>
      <dc:creator>Max Zeballos</dc:creator>
      <pubDate>Fri, 08 Jul 2022 17:06:06 +0000</pubDate>
      <link>https://forem.com/awsmllatam/evaluacion-de-rendimiento-de-un-modelo-de-machine-learning-53pb</link>
      <guid>https://forem.com/awsmllatam/evaluacion-de-rendimiento-de-un-modelo-de-machine-learning-53pb</guid>
      <description>&lt;h2&gt;
  
  
  Motivación
&lt;/h2&gt;

&lt;p&gt;Es importante evaluar un modelo para determinar el rendimiento de sus predicciones en nuevos datos. Dado que las futuras predicciones retornaran un valor aun desconocido, se debe evaluar con métricas el rendimiento de un modelo en un conjunto de datos de los cuales conocemos la respuesta. Utilizaremos esta evaluación de rendimiento para decidir si el modelo es enviado o no a un ambiente de producción.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducción
&lt;/h2&gt;

&lt;p&gt;Una herramienta muy útil para realizar la evaluación de rendimiento de un modelo es la matris de confusión, que presentare a continuación.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foye2m19qn48kds4vx0xv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foye2m19qn48kds4vx0xv.png" alt="Matris de confuncion"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ahora vamos describir el significado de cada cuadrante dentro de la matris:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;True positives (TP)&lt;/em&gt;&lt;/strong&gt;: Es el caso en el que el clasificador predijo verdadero y es la respuesta correcta (Por ejemplo predecir que un paciente tiene una enfermedad)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;True negatives (TN)&lt;/em&gt;:&lt;/strong&gt; Es el caso en el que el clasificador predijo falso y es la respuesta correcta (Por ejemplo predecir que un paciente no tiene una enfermedad)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;False positives (FP) (Type I error)&lt;/em&gt;:&lt;/strong&gt; Es el caso en el que el clasificador predijo verdadero, pero no es la respuesta correcta (El paciente no tiene la enfermedad)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;False negatives (FN) (Type II error)&lt;/em&gt;:&lt;/strong&gt; Es el caso en el que el clasificador predijo como falso, pero no es la respuesta correcta (El paciente tiene la enfermedad)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;En los casos revisados con anterioridad el error Tipo II es el mas grave. El paciente puede creer que esta sano cuando realmente no lo esta y no tomara ninguna acción respectiva. En el caso del error Tipo I el paciente se someterá a mas exámenes y descubrirá que la predicción del modelo fue un error y que realmente esta sano.&lt;/p&gt;

&lt;h2&gt;
  
  
  Indicadores clave de rendimiento (KPI)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Exactitud (&lt;em&gt;Accuracy&lt;/em&gt;):&lt;/strong&gt; (TP + TN) / (TP + TN + FP + FN)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Taza de error (&lt;em&gt;Misclassification rate&lt;/em&gt;):&lt;/strong&gt;  (FP + FN) / (TP + TN + FP + FN)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Precisión:&lt;/strong&gt; TP/ (TP+FP) (Cuando el modelo predice Verdadero, ¿Con que frecuencia lo hace bien?)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exhaustividad (&lt;em&gt;Recall&lt;/em&gt;):&lt;/strong&gt; TP/ (TP+FN) (Cuando la predicción fue realmente verdadera ¿Con que frecuencia el clasificador acertó? )&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Precisión vs Exhaustividad (&lt;em&gt;Recall&lt;/em&gt;):
&lt;/h2&gt;

&lt;p&gt;Ahora vamos a ver un ejemplo para entender el objetivo de precisión y exhaustividad:&lt;/p&gt;

&lt;p&gt;Información del dataset a evaluar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;100 es el total de pacientes&lt;/li&gt;
&lt;li&gt;91 pacientes están sanos&lt;/li&gt;
&lt;li&gt;9 pacientes tienen cáncer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Despues de entrenar nuestro modelo y hacer predicciones con el dataset de prueba, construimos la siguiente matris de confusión.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg9q1dfr8o997haci702u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg9q1dfr8o997haci702u.png" alt="Presicion vs Recall"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esto significa que:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TP: El modelo predijo correctamente que 1 persona esta enferma&lt;/li&gt;
&lt;li&gt;TN: El modelo predijo correctamente que 90 personas no están enfermas&lt;/li&gt;
&lt;li&gt;FP: El modelo predijo incorrectamente que 1 persona esta enferma&lt;/li&gt;
&lt;li&gt;FN: El modelo predijo incorrectamente que 8 personas están sanas&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ahora vamos a calcular las métricas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Exactitud = (TP+TN) / (TP + TN + FP + FN) = (1 + 90) / (1 + 1 + 8 + 90 ) = 0.91 -&amp;gt; 91%&lt;/li&gt;
&lt;li&gt;Presicion = TP / (TP + FP) = 1 / (1 + 1) = 0.5 -&amp;gt; 50%&lt;/li&gt;
&lt;li&gt;Exhaustividad = = TP / (TP + FN) = 1 / (1 + 8) = 1/9 -&amp;gt; 11%&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;De las métricas de rendimiento extraemos que:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;La exactitud es generalmente engañosa y no es suficiente para
evaluar el rendimiento de un clasificador.&lt;/li&gt;
&lt;li&gt;La exhaustividad (&lt;em&gt;recall&lt;/em&gt;) es un KPI importante en situaciones en las que:

&lt;ul&gt;
&lt;li&gt;El conjunto de datos está muy desequilibrado; casos en los que los  pacientes con cáncer son mucho menor a comparación con los pacientes sanos.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Precisión
&lt;/h2&gt;

&lt;p&gt;En el ejemplo tenemos: TP / (TP + FP) = 1 / (1 + 1) = 50%&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;La precisión es una medida de Positivos Correctos, en el ejemplo, el modelo predijo que dos pacientes eran positivos
(tiene cáncer), pero sólo uno de los dos era correcto.&lt;/li&gt;
&lt;li&gt;La precisión es una métrica importante cuando los falsos positivos son importantes (cuántas veces un modelo dice que hay algo cuando realmente no hay nada alli)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Exhaustividad (&lt;em&gt;Recall&lt;/em&gt;)
&lt;/h2&gt;

&lt;p&gt;En el ejemplo tenemos: TP / (TP + FN) = 1 / (1 + 8) = 11%&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;La exhaustividad también se denomina tasa de verdaderos positivos o sensibilidad.&lt;/li&gt;
&lt;li&gt;En este ejemplo, se tuvo 9 pacientes con cáncer pero el modelo solo detectó 1 de ellos&lt;/li&gt;
&lt;li&gt;Esta métrica es importante cuando nos preocupamos por los falsos negativos&lt;/li&gt;
&lt;li&gt;Otro buen ejemplo del uso de la métrica seria la detección de fraudes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  F1 SCORE
&lt;/h2&gt;

&lt;p&gt;F1 Score = (2 * (presicion * recall) ) / (presicion + recall)&lt;/p&gt;

&lt;p&gt;o también&lt;/p&gt;

&lt;p&gt;F1 Score = (2 * TP) / (2 * TP + FP + FN)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;F1 Score&lt;/em&gt; es una medida general de la precisión de un modelo que combina precisión y exhaustividad(&lt;em&gt;recall&lt;/em&gt;). Es la media armónica de precisión y exhaustividad.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;¿Cuál es la diferencia entre F1 Score y exactitud?&lt;/p&gt;

&lt;p&gt;En conjuntos de datos desequilibrados, si tenemos una gran cantidad de verdaderos negativos (pacientes sanos), la exactitud podría ser engañosa. Por lo tanto, la puntuación F1 podría ser un mejor KPI para usar, ya que proporciona un equilibrio entre exhaustividad (&lt;em&gt;Recall&lt;/em&gt;) y precisión en presencia de conjuntos de datos desequilibrados.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;Todas estas métricas de rendimientos nos ayudaran a determinar que tan bueno es el trabajo de nuestro modelo. Es importante entender los resultados del modelo para saber si podemos enviarlo a un ambiente productivo o iterar con un nuevo conjunto de datos o usar otro algoritmo de entrenamiento.&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>spanish</category>
      <category>ai</category>
      <category>datascience</category>
    </item>
    <item>
      <title>Acelera tu carrera en AWS</title>
      <dc:creator>Max Zeballos</dc:creator>
      <pubDate>Wed, 06 Jul 2022 19:27:35 +0000</pubDate>
      <link>https://forem.com/awsmllatam/acelera-tu-carrera-en-aws-54b7</link>
      <guid>https://forem.com/awsmllatam/acelera-tu-carrera-en-aws-54b7</guid>
      <description>&lt;h2&gt;
  
  
  Motivación
&lt;/h2&gt;

&lt;p&gt;Las oportunidades para trabajar en &lt;em&gt;cloud computing&lt;/em&gt; son cada vez mayores, así como rentables. Las ofertas laborales se ven incrementadas día a día y en muchos países no se puede cubrir las vacantes disponibles. En este post te voy a compartir algunos recursos para empezar tu carrera sobre AWS y llevarla al siguiente nivel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducción
&lt;/h2&gt;

&lt;p&gt;Actualmente AWS es la empresa mas grande en cloud computing, posee la mayor cantidad de servicios a comparacion de otros proveedores de nube, esto permite resolver una amplia gama de problemas de manera sencilla y rápida.&lt;/p&gt;

&lt;p&gt;En AWS existen varias certificaciones que se alinean a diferentes lineas de carrera dentro de la industria. Teniendo las siguientes certificaciones:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cloud Practitioner (Nivel: FOUNDATIONAL)&lt;/li&gt;
&lt;li&gt;Solution architect (Nivel: ASSOCIATE)&lt;/li&gt;
&lt;li&gt;Developer (Nivel: ASSOCIATE)&lt;/li&gt;
&lt;li&gt;Sysops administrator (Nivel: ASSOCIATE)&lt;/li&gt;
&lt;li&gt;Solution architect (Nivel: PROFESSIONAL)&lt;/li&gt;
&lt;li&gt;DevOps engineer (Nivel: PROFESSIONAL)&lt;/li&gt;
&lt;li&gt;Advanced networking (Nivel: SPECIALTY)&lt;/li&gt;
&lt;li&gt;Data analytics (Nivel: SPECIALTY)&lt;/li&gt;
&lt;li&gt;Database (Nivel: SPECIALTY)&lt;/li&gt;
&lt;li&gt;Machine Learning (Nivel: SPECIALTY)&lt;/li&gt;
&lt;li&gt;Security (Nivel: SPECIALTY)&lt;/li&gt;
&lt;li&gt;Sap on AWS (Nivel: SPECIALTY)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Empieza tu camino
&lt;/h2&gt;

&lt;p&gt;La mejor forma de trabajar tu crecimiento profesional es fijarte en metas a corto y largo plazo que estén relacionadas. Supongamos que deseas convertirte en un experto en bases de datos, entonces podrías fijarte los siguientes objetivos a corto y largo plazo:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Experto en SQL (20 días de estudio) 

&lt;ul&gt;
&lt;li&gt;Aprender a realizar consultas SQL (5 días)&lt;/li&gt;
&lt;li&gt;Realizar diagramas de diseño de bases de datos (5 días)&lt;/li&gt;
&lt;li&gt;Trabajar con vistas materializadas, triggers y funciones (5 días)&lt;/li&gt;
&lt;li&gt;Aprender a administrar usuarios, roles y accesos (5 días)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Experto en RDS (20 días de estudio)

&lt;ul&gt;
&lt;li&gt;Trabajar con RDS Postgres (crear cluster, alta disponibilidad, replicas de lectura, respaldos, etc) (5 días)&lt;/li&gt;
&lt;li&gt;Trabajar con RDS Mysql (crear cluster, alta disponibilidad, replicas de lectura, respaldos, etc) (5 días)&lt;/li&gt;
&lt;li&gt;Trabajar con Aurora Postgres y Aurora Mysql (10 días)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Experto en NoSQL (MongoDB) 

&lt;ul&gt;
&lt;li&gt;Aprender a realizar consultas&lt;/li&gt;
&lt;li&gt;Diseño de tablas&lt;/li&gt;
&lt;li&gt;Administración de cluster DocumentDB&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Experto en NoSQL (DocumentDB) (20 días)

&lt;ul&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Experto en bases de datos columnares (Redshift) (20 días)

&lt;ul&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Los puntos 1, 2, 3, 4, 5 son objetivos a largo plazo y cada uno de sus items es un objetivo a corto plazo, cada objetivo a corto plazo te ayuda a lograr tu objetivo a largo plazo y al haber terminado tu plan habrás logrado convertirte en un experto en bases de datos. Esta es una forma sencilla de trabajar una meta, existen metodologías mas detalladas para trabajar con objetivos  por ejemplo la técnica SMART.&lt;/p&gt;

&lt;p&gt;Ahora que ha quedado claro la importancia de empezar a trabajar con objetivos, podríamos empezar a trazarnos metas como por ejemplo obtener tu primera certificación en AWS. Si desear convertirte en un experto en Devops, podríamos tener el siguiente plan:&lt;/p&gt;

&lt;p&gt;1 Obtener la certificación &lt;em&gt;AWS Cloud Practitioner&lt;/em&gt;&lt;br&gt;
2 Obtener la certificación &lt;em&gt;AWS Developer Associate&lt;/em&gt;&lt;br&gt;
3 Obtener la certificación &lt;em&gt;AWS DevOps Profesional&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;No es necesario tener certificaciones para ser un experto como DevOps en AWS, pero en el camino de preparación para una certificación te vas a encontrar muchos retos que estaras obligado a superar para lograr el objetivo establecido, te enfocaras en ese objetivo y esto hará que tu dominio sobre la plataforma se vea incrementado.&lt;/p&gt;

&lt;h2&gt;
  
  
  Recursos utiles
&lt;/h2&gt;

&lt;p&gt;Actualmente hay muchos recursos gratuitos y con precios bajos en internet. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Stephane Maarek ha creado varios cursos en Udemy para lograr diferentes certificaciones en AWS y las ofrece a un bajo precio. &lt;a href="https://www.udemy.com/user/stephane-maarek/"&gt;Ver aquí&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Los &lt;em&gt;AWS Workshops&lt;/em&gt; son varios talleres que ayudan a entender el uso de los diferentes servicios de AWS. &lt;a href="https://workshops.aws/"&gt;Ver aquí&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS también tiene una serie de blogs que son escritos y revisados por expertos. &lt;a href="https://aws.amazon.com/blogs/"&gt;Ver aquí&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Si quieres enterarte de las novedades lanzadas día a día en AWS te recomiendo revisar el apartado de &lt;em&gt;news&lt;/em&gt;. &lt;a href="https://aws.amazon.com/new/"&gt;Ver aquí&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Los &lt;em&gt;AWS Community builder&lt;/em&gt; son personas que han postulado a este programa en AWS y han sido aceptados, ellos contribuyen difundiendo material sobre AWS y los puedes encontrar en dev.to.  &lt;a href="https://dev.to/aws-builders"&gt;Ver aquí&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;AWS Heroe&lt;/em&gt; es el titulo que AWS otorga a personas resaltantes en la comunidad por sus aportes, en dev.to existe una comunidad donde escriben posts constantemente. &lt;a href="https://dev.to/aws-heroes"&gt;Ver aquí&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;Si llegaste hasta aquí es por que tienes la motivación, empieza a crear tus objetivos a corto y largo plaza y divertirte aprendiendo. Éxitos!&lt;/p&gt;

</description>
      <category>aws</category>
      <category>productivity</category>
      <category>cloudskills</category>
      <category>spanish</category>
    </item>
    <item>
      <title>Amazon Comprehend: Guía rápida</title>
      <dc:creator>Max Zeballos</dc:creator>
      <pubDate>Wed, 06 Jul 2022 16:43:54 +0000</pubDate>
      <link>https://forem.com/awsmllatam/amazon-comprehend-guia-rapida-j38</link>
      <guid>https://forem.com/awsmllatam/amazon-comprehend-guia-rapida-j38</guid>
      <description>&lt;h2&gt;
  
  
  Motivación
&lt;/h2&gt;

&lt;p&gt;En la actualidad las aplicaciones necesitan una mayor velocidad de desarrollo. La inclusión de funcionalidades que implican el uso de machine learning se ha vuelto cada vez mayor.&lt;/p&gt;

&lt;p&gt;Amazon Web Services a desarrollado un conjunto de servicios que te permiten rápidamente agregar características de machine learning a tus aplicaciones.&lt;/p&gt;

&lt;p&gt;Amazon Comprehend es un servicio de procesamiento de lenguaje natural (NLP) que utiliza machine learning para extraer información de datos en formato de texto.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducción
&lt;/h2&gt;

&lt;p&gt;Amazon Comprehend provee de un conjunto de APIs con las que podemos interactuar y obtener resultados sobre el análisis de textos. Estas APIs retornan como respuesta la inferencia que realiza sobre los datos que le enviamos a modelos entrenados por los expertos que trabajan en AWS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Características
&lt;/h2&gt;

&lt;p&gt;En esta sección vamos a revisar las capacidades del servicio y su uso a través de Python. Para los siguientes ejemplos utilizaremos el siguiente texto:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sample_text = '''
Hello Zhang Wei. Your AnyCompany Financial Services, LLC credit card account 1111-0000-1111-0000 has a minimum payment of $24.53 that is due by July 31st. Based on your autopay settings, we will withdraw your payment on the due date from your bank account XXXXXX1111 with the routing number XXXXX0000. 
Your latest statement was mailed to 100 Main Street, Anytown, WA 98121. 
After your payment is received, you will receive a confirmation text message at 206-555-0100. 
If you have questions about your bill, AnyCompany Customer Service is available by phone at 206-555-0199 or email at support@anycompany.com.
'''
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  1 Detección del idioma dominante
&lt;/h2&gt;

&lt;p&gt;Con esta API podemos examinar el texto y determinar el idioma dominante, debido a que un texto puede contener palabras o frases en diferentes idiomas. A continuación presentare el código en Python&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;comprehend = boto3.client('comprehend')

detected_language = comprehend.detect_dominant_language(
   Text=sample_text
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En la variable &lt;em&gt;detected_language&lt;/em&gt; tendremos la respuesta a la API, si imprimíos el contenido de la variable veremos el siguiente resultado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "Languages": [
        {
            "LanguageCode": "en",
            "Score": 0.9913273453712463
        }
    ],
    "ResponseMetadata": {
        "HTTPHeaders": {
            "content-length": "64",
            "content-type": "application/x-amz-json-1.1",
            "date": "Wed, 06 Jul 2022 03:38:30 GMT",
            "x-amzn-requestid": "38e68cdc-c3a3-4b1c-897d-c86f9c5f0f63"
        },
        "HTTPStatusCode": 200,
        "RequestId": "38e68cdc-c3a3-4b1c-897d-c86f9c5f0f63",
        "RetryAttempts": 0
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Observamos que el lenguaje detectado fue ingles(en) con un puntaje de 99.1%&lt;/p&gt;

&lt;h2&gt;
  
  
  2 Detección de entidades
&lt;/h2&gt;

&lt;p&gt;Con la API de detección de entidades podemos extraer los siguientes tipos de entidades:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tipo&lt;/th&gt;
&lt;th&gt;Descripción&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;COMMERCIAL_ITEM&lt;/td&gt;
&lt;td&gt;Un producto de marca&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FECHA&lt;/td&gt;
&lt;td&gt;Una fecha completa (por ejemplo, 25/11/2017), día (martes), mes (mayo) u hora (8:30 a.m.).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;EVENT&lt;/td&gt;
&lt;td&gt;Un evento, como un festival, un concierto, una elección, etc.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LOCATION&lt;/td&gt;
&lt;td&gt;Una ubicación específica, como un país, una ciudad, un lago, un edificio, etc.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ORGANIZACIÓN&lt;/td&gt;
&lt;td&gt;Organizaciones grandes, como un gobierno, una empresa, una religión, un equipo deportivo, etc.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OTHER&lt;/td&gt;
&lt;td&gt;Entidades que no encajan en ninguna de las otra categorías.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PERSON&lt;/td&gt;
&lt;td&gt;Individuos, grupos de personas, apodos, personajes ficticios.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QUANTITY&lt;/td&gt;
&lt;td&gt;Importe cuantificado, como moneda, porcentajes, números, bytes, etc.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TITLE&lt;/td&gt;
&lt;td&gt;Nombre oficial dado a cualquier creación o obra creativa, como películas, libros, canciones, etc.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Ahora vamos a revisar el código en python&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;comprehend = boto3.client('comprehend')

detected_entities = comprehend.detect_entities(
   Text=sample_text,
   LanguageCode='en'
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En la variable &lt;em&gt;detected_entities&lt;/em&gt; tenemos la respuesta de la API si revisamos el contenido de la variable tendremos el siguiente contenido:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "Entities": [
        {
            "BeginOffset": 7,
            "EndOffset": 16,
            "Score": 0.9993807077407837,
            "Text": "Zhang Wei",
            "Type": "PERSON"
        },
        {
            "BeginOffset": 23,
            "EndOffset": 57,
            "Score": 0.9996546506881714,
            "Text": "AnyCompany Financial Services, LLC",
            "Type": "ORGANIZATION"
        },
        {
            "BeginOffset": 78,
            "EndOffset": 97,
            "Score": 0.9905166029930115,
            "Text": "1111-0000-1111-0000",
            "Type": "OTHER"
        },
        ...
    ],
    "ResponseMetadata": {
        "HTTPHeaders": {
            "content-length": "1276",
            "content-type": "application/x-amz-json-1.1",
            "date": "Wed, 06 Jul 2022 03:14:41 GMT",
            "x-amzn-requestid": "0c7eefa0-c332-4f82-a93c-ab18cd47a15f"
        },
        "HTTPStatusCode": 200,
        "RequestId": "0c7eefa0-c332-4f82-a93c-ab18cd47a15f",
        "RetryAttempts": 0
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dentro de &lt;em&gt;Entities&lt;/em&gt; tenemos cada una de las entidades detectadas. Cada entidad tiene los siguientes atributos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;BeginOffset: Posición donde inicia la palabra en el texto&lt;/li&gt;
&lt;li&gt;EndOffset: Posición donde termina la palabra en el texto&lt;/li&gt;
&lt;li&gt;Score: Puntaje de certeza de detección de entidad&lt;/li&gt;
&lt;li&gt;Text: El nombre de la entidad&lt;/li&gt;
&lt;li&gt;Type: El tipo de entidad&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3 Deteccion de frases clave
&lt;/h2&gt;

&lt;p&gt;Puedes utilizar esta API para buscar frases clave en el documento. Por lo general, consiste en un sustantivo y los modificadores que lo distinguen. Por ejemplo, "día" es un sustantivo; "un día hermoso" es una frase sustantiva que incluye un artículo ("un") y un adjetivo ("hermoso").&lt;/p&gt;

&lt;p&gt;A continuación revisaremos el código en python&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;comprehend = boto3.client('comprehend')

detected_key_phrases = comprehend.detect_key_phrases(
   Text=sample_text, 
   LanguageCode='en'
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Revisando la variable &lt;em&gt;detected_key_phrases&lt;/em&gt; tendremos la siguiente respuesta:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "KeyPhrases": [
        {
            "BeginOffset": 1,
            "EndOffset": 16,
            "Score": 0.8426344990730286,
            "Text": "Hello Zhang Wei"
        },
        {
            "BeginOffset": 18,
            "EndOffset": 52,
            "Score": 0.9881375432014465,
            "Text": "Your AnyCompany Financial Services"
        },
        {
            "BeginOffset": 54,
            "EndOffset": 97,
            "Score": 0.8444651961326599,
            "Text": "LLC credit card account 1111-0000-1111-0000"
        },
        {
            "BeginOffset": 102,
            "EndOffset": 119,
            "Score": 0.9999476075172424,
            "Text": "a minimum payment"
        },
        ...
    ],
    "ResponseMetadata": {
        "HTTPHeaders": {
            "content-length": "2096",
            "content-type": "application/x-amz-json-1.1",
            "date": "Wed, 06 Jul 2022 04:19:43 GMT",
            "x-amzn-requestid": "d772098b-c82d-49b8-b4fe-029ac108b375"
        },
        "HTTPStatusCode": 200,
        "RequestId": "d772098b-c82d-49b8-b4fe-029ac108b375",
        "RetryAttempts": 0
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Como se observa en la respuesta, la API nos retorna todas las frases clave.&lt;/p&gt;

&lt;h2&gt;
  
  
  4 Determinar el sentimiento
&lt;/h2&gt;

&lt;p&gt;Con esta API podemos determinar si el sentimiento es positivo, negativo, neutral o mixto. Por ejemplo, se puede utilizar el análisis de sentimientos para analizar los comentarios en un blog y saber si a los lectores les gusto la publicación.&lt;/p&gt;

&lt;p&gt;Ahora revisaremos el código en python&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;comprehend = boto3.client('comprehend')

detected_sentiment = comprehend.detect_sentiment(
   Text=sample_text, 
   LanguageCode='en'
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Si revelamos el contenido de la variable &lt;em&gt;detected_sentiment&lt;/em&gt; tendremos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "ResponseMetadata": {
        "HTTPHeaders": {
            "content-length": "163",
            "content-type": "application/x-amz-json-1.1",
            "date": "Wed, 06 Jul 2022 04:27:42 GMT",
            "x-amzn-requestid": "ca289ed1-65f4-4e6f-87e4-468b5a88ae60"
        },
        "HTTPStatusCode": 200,
        "RequestId": "ca289ed1-65f4-4e6f-87e4-468b5a88ae60",
        "RetryAttempts": 0
    },
    "Sentiment": "NEUTRAL",
    "SentimentScore": {
        "Mixed": 9.69591928878799e-06,
        "Negative": 0.016147520393133163,
        "Neutral": 0.9832557439804077,
        "Positive": 0.0005869901506230235
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En &lt;em&gt;Sentiment&lt;/em&gt; tenemos el sentimiento detectado y en &lt;em&gt;SentimentScore&lt;/em&gt; tendremos el puntaje de las otras opciones.&lt;/p&gt;

&lt;h2&gt;
  
  
  5 Analisis de la sintaxis
&lt;/h2&gt;

&lt;p&gt;Con esta API podemos identificar los sustantivos, verbos, adjetivos, etc. en el documento. Amazon Comprehend puede identificar 17 tipos de Tokens.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Token&lt;/th&gt;
&lt;th&gt;Parte del discurso&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ADJ&lt;/td&gt;
&lt;td&gt;Adjetivo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ADP&lt;/td&gt;
&lt;td&gt;Adposición&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ADV&lt;/td&gt;
&lt;td&gt;Adverbio&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AUX&lt;/td&gt;
&lt;td&gt;Auxiliary&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CONJ&lt;/td&gt;
&lt;td&gt;Coordinación de la conjunción&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DET&lt;/td&gt;
&lt;td&gt;Determinador&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;INTJ&lt;/td&gt;
&lt;td&gt;Interjección&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SUSTANTIVO&lt;/td&gt;
&lt;td&gt;Nombre&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NUM&lt;/td&gt;
&lt;td&gt;Numérico&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;td&gt;Otros&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PART&lt;/td&gt;
&lt;td&gt;Partícula&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PRON&lt;/td&gt;
&lt;td&gt;Pronombre&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PROPÓN&lt;/td&gt;
&lt;td&gt;Nombre adecuado&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PUNTAR&lt;/td&gt;
&lt;td&gt;Puntuación&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SCONJ&lt;/td&gt;
&lt;td&gt;conjunción subordinante&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SYM&lt;/td&gt;
&lt;td&gt;Símbolo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VERB&lt;/td&gt;
&lt;td&gt;Verbo&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A continuación presento el código en python&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;comprehend = boto3.client('comprehend')

detected_syntax = comprehend.detect_syntax(
   Text=sample_text, 
   LanguageCode='en'
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Revelando el contenido de la variable &lt;em&gt;detected_syntax&lt;/em&gt; tendremos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "ResponseMetadata": {
        "HTTPHeaders": {
            "content-length": "12896",
            "content-type": "application/x-amz-json-1.1",
            "date": "Wed, 06 Jul 2022 04:31:16 GMT",
            "x-amzn-requestid": "21f94838-5820-4223-a015-9685a31902cf"
        },
        "HTTPStatusCode": 200,
        "RequestId": "21f94838-5820-4223-a015-9685a31902cf",
        "RetryAttempts": 0
    },
    "SyntaxTokens": [
        {
            "BeginOffset": 1,
            "EndOffset": 6,
            "PartOfSpeech": {
                "Score": 0.9888805150985718,
                "Tag": "INTJ"
            },
            "Text": "Hello",
            "TokenId": 1
        },
        {
            "BeginOffset": 7,
            "EndOffset": 12,
            "PartOfSpeech": {
                "Score": 0.9991546273231506,
                "Tag": "PROPN"
            },
            "Text": "Zhang",
            "TokenId": 2
        },
        {
            "BeginOffset": 13,
            "EndOffset": 16,
            "PartOfSpeech": {
                "Score": 0.9982988238334656,
                "Tag": "PROPN"
            },
            "Text": "Wei",
            "TokenId": 3
        },
        ...
    ]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En la respuesta observamos que para cada una de las palabras se ha identificado su respectiva Etiqueta.&lt;/p&gt;

&lt;h2&gt;
  
  
  6 Detección de información de identificación personal (PII)
&lt;/h2&gt;

&lt;p&gt;Con esta API podemos detectar entidades en el texto que contienen información de identificación personal (PII).  Una entidad PII es una referencia textual a datos personales que podrían utilizarse para identificar a una persona, como una dirección, un número de cuenta bancaria o un número de teléfono.&lt;/p&gt;

&lt;p&gt;Amazon Comprehend reconoce los siguientes tipos de entidades:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ADDRESS&lt;/li&gt;
&lt;li&gt;AGE&lt;/li&gt;
&lt;li&gt;AWS_ACCESS_KEY&lt;/li&gt;
&lt;li&gt;AWS_SECRET_KEY&lt;/li&gt;
&lt;li&gt;BANK_ACCOUNT_NUMBER&lt;/li&gt;
&lt;li&gt;BANK_ROUTING&lt;/li&gt;
&lt;li&gt;CREDIT_DEBIT_CVV&lt;/li&gt;
&lt;li&gt;CREDIT_DEBIT_EXPIRY&lt;/li&gt;
&lt;li&gt;CREDIT_DEBIT_NUMBER&lt;/li&gt;
&lt;li&gt;DATE_TIME&lt;/li&gt;
&lt;li&gt;DRIVER_ID&lt;/li&gt;
&lt;li&gt;EMAIL&lt;/li&gt;
&lt;li&gt;IP_ADDRESS&lt;/li&gt;
&lt;li&gt;MAC_ADDRESS&lt;/li&gt;
&lt;li&gt;NAME&lt;/li&gt;
&lt;li&gt;PASSPORT_NUMBER&lt;/li&gt;
&lt;li&gt;PASSWORD&lt;/li&gt;
&lt;li&gt;PHONE&lt;/li&gt;
&lt;li&gt;PIN&lt;/li&gt;
&lt;li&gt;SSN&lt;/li&gt;
&lt;li&gt;URL&lt;/li&gt;
&lt;li&gt;USERNAME&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para trabajar con la API usamos el siguiente código en python&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;comprehend = boto3.client('comprehend')

detected_pii_labels = comprehend.contains_pii_entities(
   Text=sample_text, 
   LanguageCode='en'
)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ahora revisamos el contenido de la variable &lt;em&gt;detected_pii_labels&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "Labels": [
        {
            "Name": "EMAIL",
            "Score": 1.0
        },
        {
            "Name": "DATE_TIME",
            "Score": 1.0
        },
        {
            "Name": "BANK_ROUTING",
            "Score": 0.8962613940238953
        },
        {
            "Name": "NAME",
            "Score": 0.7186043858528137
        },
        {
            "Name": "PHONE",
            "Score": 1.0
        }
    ],
    "ResponseMetadata": {
        "HTTPHeaders": {
            "content-length": "197",
            "content-type": "application/x-amz-json-1.1",
            "date": "Wed, 06 Jul 2022 04:51:25 GMT",
            "x-amzn-requestid": "f13ed239-eb0c-428d-b7ea-4d26f2568309"
        },
        "HTTPStatusCode": 200,
        "RequestId": "f13ed239-eb0c-428d-b7ea-4d26f2568309",
        "RetryAttempts": 0
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En la respuesta observamos cada una de las PII encontradas en el texto&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;Amazon Comprehend permite acelerar el desarrollo de aplicaciones donde es necesario el uso de análisis de textos. El uso de esta herramienta no requiere una curva de aprendizaje elevada, solamente requiere leer un poco de documentación y revisar algunos ejemplos. No hay necesidad de tener conocimientos en inteligencia artificial para su uso.&lt;/p&gt;

&lt;p&gt;Este blog es parte de una serie: &lt;a href="https://dev.to/awsmllatam/machine-learning-para-desarrolladores-en-aws-4l59"&gt;Ir al menu&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>python</category>
      <category>spanish</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Amazon Rekognition: Guía rápida</title>
      <dc:creator>Max Zeballos</dc:creator>
      <pubDate>Tue, 05 Jul 2022 18:17:44 +0000</pubDate>
      <link>https://forem.com/awsmllatam/amazon-rekognition-guia-rapida-5cl5</link>
      <guid>https://forem.com/awsmllatam/amazon-rekognition-guia-rapida-5cl5</guid>
      <description>&lt;h2&gt;
  
  
  Motivación
&lt;/h2&gt;

&lt;p&gt;En la actualidad las aplicaciones necesitan una mayor velocidad de desarrollo. La inclusión de funcionalidades que implican el uso de &lt;em&gt;machine learning&lt;/em&gt; se ha vuelto cada vez mayor.&lt;/p&gt;

&lt;p&gt;Amazon Web Services a desarrollado un conjunto de servicios que te permiten rápidamente agregar características de &lt;em&gt;machine learning&lt;/em&gt; a tus aplicaciones.&lt;/p&gt;

&lt;p&gt;Con Amazon Rekognition puedes integrar de manera sencilla y rápida el análisis de imágenes y video a tus aplicaciones. Este servicio utiliza &lt;em&gt;deep learning&lt;/em&gt; para el entrenamiento de sus algoritmos, pero no requiere conocimientos en inteligencia artificial para su uso.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducción
&lt;/h2&gt;

&lt;p&gt;Amazon Rekognition provee de un conjunto de APIs con las que podemos interactuar y obtener resultados sobre el análisis de imágenes y videos. Estas APIs retornan como respuesta la inferencia que realiza sobre los datos que le enviamos a modelos entrenados por los expertos que trabajan en AWS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Características
&lt;/h2&gt;

&lt;p&gt;En esta sección vamos a revisar las capacidades del servicio y su uso a través de Python&lt;/p&gt;

&lt;h2&gt;
  
  
  1 Detección de objetos
&lt;/h2&gt;

&lt;p&gt;A través de esta api podemos obtener información acerca de los objetos dentro de imagenes y videos, así como también los limites cartesianos dentro de los cuales se encuentra contenido el objeto en la imagen, los llamados &lt;em&gt;bounding box&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;A continuación presentare un ejemplo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff5x0dily3ujcp1y3susv.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff5x0dily3ujcp1y3susv.jpg" alt="Deteccion de objectos"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para lograr este resultado tenemos que enviar la imagen original a la api de Rekognition especificado su localización en Amazon S3, a continuación presentare el código en python haciendo uso de boto3 (la librería oficial para trabajar con python)&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

rekognition = boto3.client('rekognition')

detectLabelsResponse = rekognition.detect_labels(
    Image={
        'S3Object': {
            'Bucket': bucketName,
            'Name': imageName,
        }
    }
)


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;En la variable &lt;em&gt;detectLabelsResponse&lt;/em&gt; tendremos la respuesta de la API, con las etiquetas correspondientes y las coordenadas de los &lt;em&gt;bounding box&lt;/em&gt; correspondientes. Con la información de los &lt;em&gt;bounding box&lt;/em&gt; y el uso de una librería de python como PIL podemos dibujar los cuadrados sobre la imagen y tener la imagen del ejemplo.&lt;/p&gt;

&lt;h2&gt;
  
  
  2 Moderación de contenido
&lt;/h2&gt;

&lt;p&gt;Con la api de moderación de contenido podemos detectar el contenido no seguro o inapropiado, a través de las etiquetas que retorna el API junto a un porcentaje de confiabilidad. Dentro de las categorías principales tenemos las siguientes etiquetas: &lt;em&gt;Explicit Nudity&lt;/em&gt;, &lt;em&gt;Suggestive&lt;/em&gt;, &lt;em&gt;Violence&lt;/em&gt;, &lt;em&gt;Visually Disturbing&lt;/em&gt;, &lt;em&gt;Rude Gestures&lt;/em&gt;, &lt;em&gt;Drugs&lt;/em&gt;, &lt;em&gt;Tobacco&lt;/em&gt;, &lt;em&gt;Alcohol&lt;/em&gt;, &lt;em&gt;Gambling&lt;/em&gt;, &lt;em&gt;Hate Symbols&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Para invocar esta api utilizaremos el siguiente codigo en Python:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

rekognition = boto3.client('rekognition')

detectModerationLabelsResponse = rekognition.detect_moderation_labels(
   Image={
       'S3Object': {
           'Bucket': bucketName,
           'Name': imageName,
       }
   }
)


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;En la variable &lt;em&gt;detectModerationLabelsResponse&lt;/em&gt; tendremos la respuesta a la API que contendrá las etiquetas principales mencionadas con anterioridad con algunas etiquetas secundarias y su porcentaje de confiabilidad.&lt;/p&gt;

&lt;h2&gt;
  
  
  3 Reconocimiento de celebridades
&lt;/h2&gt;

&lt;p&gt;Con la API de reconocimiento de celebridades puede rápidamente identificar personas famosas en imágenes y video. La API tiene la capacidad de detectar a una o varias celebridades dentro de una imagen o frame de video. Por ejemplo podría enviarle al API la siguiente imagen&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fan4xzcdnxdxw10fils1b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fan4xzcdnxdxw10fils1b.png" alt="Reconocimiento de celebridades"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;La API me retornara como resultado el nombre del famoso, en este caso sera Dwayne Johnson, mas conocido como "La roca". A continuación presentare el código en python.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

rekognition = boto3.client('rekognition')

recognizeCelebritiesResponse = rekognition.recognize_celebrities(
    Image={
        'S3Object': {
            'Bucket': bucketName,
            'Name': imageName,
        }
    }
)


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;En la variable &lt;em&gt;recognizeCelebritiesResponse&lt;/em&gt; obtendremos el nombre del famoso junto con un porcentaje de confianza, en esta caso sera: Dwayne Johnson (99.1% confidence).&lt;/p&gt;

&lt;h2&gt;
  
  
  4 Busquedas de rostros
&lt;/h2&gt;

&lt;p&gt;La Busqueda de rostros te permite reconocer personas dentro de una colección de rostros preestablecido. Esta colección de rostros debe ser creado antes de realizar el llamado a la API. Para que la api de una respuesta correcta el nuevo rostro a reconocer debe pertenecer al de una persona que se encuentra en nuestra colección de rostros, teniendo en cuenta que la imagen a reconocer no necesariamente tiene que ser una existente en nuestra colección de rostros.&lt;/p&gt;

&lt;p&gt;La api puede reconocer uno o mas rostros dentro de una imagen como en el ejemplo a continuación donde mostramos los rostros reconocidos dentro de un &lt;em&gt;bounding box&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F691jm3qcyvowrg2pgj3a.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F691jm3qcyvowrg2pgj3a.jpg" alt="Reconocimiento de rostros"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para trabajar con esta api es necesario primero crear una colección de rostros, es recomendable tener como mínimo 3 rostros por persona.&lt;/p&gt;

&lt;p&gt;Para crear una colección usaremos el siguiente código en python:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

rekognition = boto3.client('rekognition')

rekognition.create_collection(
    CollectionId='face-collection'
)


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Para agregar rostros a nuestra coleccion:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

rekognition.index_faces(
    CollectionId='face-collection',
    Image={
        'S3Object': {
            'Bucket': bucketName,
            'Name': imageName,
        }
    },
    ExternalImageId=personId,
    DetectionAttributes=[
        'DEFAULT',
        ],
    MaxFaces=1,
    QualityFilter='AUTO'
)


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Todos los rostros de la misma persona deben tener el mismo &lt;em&gt;ExternalImageId&lt;/em&gt;, MaxFaces es el numero máximo de rostros que se va indexar, QualityFilter es el valor de calidad de la imagen, en caso el valor sea AUTO entonces Rekognition decidira si utiliza o no la imagen, DetectionAttributes son los atributos que deseas que se retornen en la API. Puedes encontrar el detalle de estos parametros &lt;a href="https://docs.aws.amazon.com/es_es/rekognition/latest/dg/API_IndexFaces.html" rel="noopener noreferrer"&gt;aqui&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finalmente para realizar un reconocimiento facial en una nueva imagen utilizamos el siguiente código:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

searchFacesResponse = rekognition.search_faces_by_image(
    CollectionId='face-collection',
    Image={
        'S3Object': {
            'Bucket': bucketName,
            'Name': imageName,
        }
    },
    MaxFaces=2,
    FaceMatchThreshold=95
)


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;En &lt;em&gt;searchFacesResponse&lt;/em&gt; tendremos la respuesta de la API con un máximo de 2 rostros reconocidos a un 95% de confiabilidad.&lt;/p&gt;

&lt;h2&gt;
  
  
  5 Detección de texto
&lt;/h2&gt;

&lt;p&gt;Las imágenes y videos pueden venir acompañados de texto, poder convertir el texto de una imagen o video en caracteres de texto puede ser muy útil en muchas aplicaciones, como por ejemplo detectar imágenes con textos que tengan contenido explicito, otra aplicación es reconocer valores dentro de un texto como vouchers de pago o números de recibos, etc.&lt;/p&gt;

&lt;p&gt;Por ejemplo en la siguiente imagen se ha podido reconocer una serie de palabras a través de la API de rekognition.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo1mq3iaw88htm7k9gh9z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo1mq3iaw88htm7k9gh9z.png" alt="Deteccion de texto"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para utilizar la API de Rekognition usaremos el siguiente código:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

rekognition = boto3.client('rekognition')

detectTextResponse = rekognition.detect_text(
    Image={
        'S3Object': {
            'Bucket': bucketName,
            'Name': imageName,
        }
      },
      Filters={
        'WordFilter': {
            'MinConfidence': 90
        }
      }
)


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;En la variable &lt;em&gt;detectTextResponse&lt;/em&gt; tendremos los textos encontrados con una confiabilidad superior al 90%.&lt;/p&gt;

&lt;h2&gt;
  
  
  6 Detección de equipo de protección personal
&lt;/h2&gt;

&lt;p&gt;En muchas industrias el tema de la seguridad es importante, llevar el equipo de protección adecuado puede salvar vidas. Otro uso importante que se le dio a esta característica es llevar el equipo de protección necesario para evitar el contagio del COVID-19. Esto demuestra como la tecnología nos puede ayudar al cuidado y protección de la salud.&lt;/p&gt;

&lt;p&gt;Aquí les muestro un ejemplo de la detección de equipos de protección:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8g6m93d26u9flphcc985.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8g6m93d26u9flphcc985.png" alt="Deteccion de equipos de proteccion"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para usar la api utilizaremos el siguiente código:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

detectPPEResponse = rekognition.detect_protective_equipment(
        Image={
            'S3Object': {
                'Bucket': bucketName,
                'Name': imageName
            }
        },
        SummarizationAttributes={
            'MinConfidence': 90,
            'RequiredEquipmentTypes': [
                'FACE_COVER',
                'HEAD_COVER',
                'HAND_COVER',
            ]
        }
    )


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;En la variable &lt;em&gt;detectPPEResponse&lt;/em&gt; tendremos el resultado a la API, en la imagen se buscara si el rostro, cabeza y manos están cubiertas con un 90% de confiabilidad.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;Amazon Rekognition permite acelerar el desarrollo de aplicaciones donde es necesario el uso de análisis sobre imágenes y videos. El uso de esta herramienta no requiere una curva de aprendizaje elevada, solamente requiere leer un poco de documentación y revisar algunos ejemplos. No hay necesidad de tener conocimientos en inteligencia artificial para su uso.&lt;/p&gt;

&lt;p&gt;Este blog es parte de una serie: &lt;a href="https://dev.to/awsmllatam/machine-learning-para-desarrolladores-en-aws-4l59"&gt;Ir al menu&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>python</category>
      <category>spanish</category>
      <category>machinelearning</category>
    </item>
  </channel>
</rss>
