La creación de contenido es una de las herramientas más poderosas para conectar con audiencias a nivel global. Sin embargo, más allá de las palabras que elegimos, el sentimiento que esas palabras transmiten es crucial para el impacto del mensaje. Aquí es donde entra en juego el análisis de contenido, una técnica que permite evaluar el tono emocional de un texto, ya sea positivo o negativo. Entender el sentimiento detrás de un contenido no solo ayuda a mejorar la comunicación, sino que también puede ser clave para el éxito de campañas de marketing, la gestión de la reputación en línea y la creación de estrategias de contenido más efectivas.
El análisis de sentimientos, también conocido como minería de opiniones, es el proceso de identificar y categorizar las emociones expresadas en un cuerpo de texto. Esta técnica se utiliza ampliamente en redes sociales, blogs y sitios web para comprender cómo los usuarios se sienten respecto a una marca, producto o tema en particular. La automatización de este proceso a través de código permite a los creadores de contenido, desarrolladores y especialistas en marketing realizar un seguimiento continuo del tono de sus textos, optimizando así su impacto.
En este artículo, exploraremos cómo puedes implementar tu propio análisis de sentimientos utilizando un código personalizado. Te guiaré a través de los conceptos básicos, desde cómo se estructuran las listas de palabras positivas y negativas, hasta cómo el código evalúa un texto y determina su tono emocional. Ya seas un desarrollador en busca de nuevas herramientas para optimizar tus proyectos o un creador de contenido interesado en mejorar la resonancia de tus textos, esta guía te proporcionará las bases para comenzar a analizar el sentimiento de tus contenidos de manera efectiva.

El siguiente código tienes que agregarlo en el functions.php de tu tema hijo o utilizar un plugin como CODE SNIPPETS.
// Función para analizar los sentimientos del contenido
function analizar_sentimientos($texto) {
// Listas ajustadas de palabras positivas y negativas
$positivas = array(
'abundancia', 'aceptación', 'admirable', 'afecto', 'afortunado', 'alegría', 'altruismo',
'amistad', 'amor', 'apasionado', 'apertura', 'apoyo', 'armónico', 'ascenso',
'asombroso', 'autenticidad', 'aventura', 'bienestar', 'bondad', 'brillante',
'calidez', 'calma', 'cariño', 'carisma', 'celebración', 'claridad',
'colaboración', 'compasión', 'competente', 'complacido', 'comprensión',
'confianza', 'constancia', 'contento', 'creativo', 'cuidado', 'curiosidad',
'decisión', 'deleite', 'deseo', 'determinación', 'dignidad', 'dinámico',
'disciplina', 'diversión', 'éxito', 'empatía', 'entusiasmo', 'equilibrio',
'esfuerzo', 'esperanza', 'estabilidad', 'excelencia', 'exclusivo',
'expansión', 'felicidad', 'fiabilidad', 'fortaleza', 'generosidad',
'genuino', 'gratitud', 'guía', 'habilidad', 'hermosura', 'honestidad',
'honor', 'humildad', 'ilusión', 'impecable', 'importante', 'iniciativa',
'innovación', 'inspiración', 'inteligente', 'integridad', 'intensidad',
'intuición', 'juventud', 'lealtad', 'libertad', 'liderazgo', 'logro',
'luminoso', 'madurez', 'magnífico', 'majestuoso', 'maravilloso', 'mérito',
'motivación', 'optimismo', 'orgullo', 'paciencia', 'paz', 'perfección',
'perseverancia', 'placer', 'plenitud', 'positivo', 'poder', 'precisión',
'progreso', 'prosperidad', 'protección', 'prudencia', 'pureza',
'radiante', 'realización', 'reconocimiento', 'refrescante', 'relajación',
'rendimiento', 'resiliencia', 'responsabilidad', 'reverencia', 'riqueza',
'sabiduría', 'seguridad', 'sensatez', 'serenidad', 'sinceridad',
'solidaridad', 'sorpresa', 'suave', 'sublime', 'suceso', 'satisfacción',
'talento', 'ternura', 'tesoro', 'tranquilidad', 'triunfo', 'valentía',
'valor', 'vibrante', 'victoria', 'virtud', 'vitalidad', 'voluntad',
'zelo', 'zen', 'admiración', 'aventurero', 'afabilidad', 'amabilidad',
'aspiración', 'atractivo', 'atrevimiento', 'belleza', 'beneficio',
'benevolencia', 'bravura', 'calidez', 'campeón', 'caridad', 'certeza',
'champión', 'claridad', 'coherencia', 'compañerismo', 'comunicación',
'confianza', 'conocimiento', 'coraje', 'creatividad', 'credibilidad',
'cualidad', 'cuidado', 'curiosidad', 'decoro', 'deseable', 'desarrollo',
'diligencia', 'discernimiento', 'disfrute', 'distinción', 'don',
'durabilidad', 'efectividad', 'eficiencia', 'elegancia', 'elocuencia',
'empoderamiento', 'energía', 'entendimiento', 'equidad', 'esmero',
'esplendor', 'espontaneidad', 'estilo', 'éxito', 'fabuloso', 'fascinante',
'felicitación', 'festivo', 'firmeza', 'flexibilidad', 'fortaleza',
'fraternidad', 'frescura', 'generosidad', 'genial', 'gloria', 'gratitud',
'grandeza', 'habilidad', 'hermoso', 'honradez', 'humanidad', 'idealismo',
'identidad', 'iglesia', 'imaginación', 'imparcialidad', 'ímpetu',
'imponente', 'independencia', 'iniciativa', 'innovador', 'inocencia',
'inspirador', 'integridad', 'inteligencia', 'jovialidad', 'justicia',
'lealtad', 'liberación', 'luminosidad', 'madurez', 'maestro', 'magnánimo',
'majestad', 'maternidad', 'mérito', 'misericordia', 'motivación',
'nobleza', 'optimismo', 'oratoria', 'orden', 'originalidad', 'paz',
'percepción', 'perfección', 'perseverancia', 'piedad', 'plenitud',
'potencial', 'poder', 'positivismo', 'pragmatismo', 'precaución',
'precisión', 'prestigio', 'privilegio', 'progreso', 'protección',
'pureza', 'puntualidad', 'radiante', 'racionalidad', 'realismo',
'recompensa', 'rectitud', 'refinamiento', 'reflexión', 'regeneración',
'relajación', 'rendimiento', 'renovación', 'respeto', 'resplandor',
'resurrección', 'revelación', 'rigor', 'sagacidad', 'sabiduría',
'satisfacción', 'seguridad', 'sensibilidad', 'sentido', 'serenidad',
'seriedad', 'sinceridad', 'solidaridad', 'sublimación', 'suavidad',
'sublime', 'superación', 'superioridad', 'talento', 'templanza',
'tenacidad', 'ternura', 'tesoro', 'tolerancia', 'tranquilidad',
'trascendencia', 'triunfo', 'unidad', 'valentía', 'valor', 'veneración',
'verdad', 'vibración', 'victoria', 'virtud', 'voluntad', 'zelo',
'zen', 'ambición', 'amigable', 'animado', 'armónico', 'atención',
'atractivo', 'aventura', 'bendición', 'bravura', 'calidad', 'capacidad',
'celebración', 'clarividencia', 'compasivo', 'complaciente', 'conciliación',
'confidencialidad', 'consciencia', 'consistencia', 'consideración',
'contemplación', 'contentamiento', 'contribución', 'cortesía',
'credibilidad', 'crecimiento', 'cristalino', 'cualificado', 'deseado',
'deseoso', 'dignificación', 'dinamismo', 'diseño', 'distinguido',
'divertido', 'don', 'duradero', 'educación', 'eficacia', 'eficaz',
'elástico', 'elevación', 'elogio', 'encanto', 'encantador', 'energía',
'enfocado', 'entereza', 'entusiasmo', 'equilibrio', 'escrupulosidad',
'esfuerzo', 'espiritualidad', 'esplendor', 'espléndido', 'espontáneo',
'estabilidad', 'estrella', 'euforia', 'extraordinario', 'facilidad',
'fantasía', 'fascinación', 'favorable', 'felicitación', 'feliz',
'firmeza', 'flexibilidad', 'flor', 'fortaleza', 'franqueza', 'fructífero',
'fuerza', 'garantía', 'generación', 'generosidad', 'genuino', 'gloria',
'grandeza', 'gratitud', 'guiado', 'habilidad', 'héroe', 'hilaridad',
'honorabilidad', 'humanismo', 'humor', 'ideal', 'idilio', 'iluminación',
'impacto', 'imparcial', 'impecable', 'impresionante', 'impulso',
'increíble', 'iniciativa', 'inspirador', 'integral', 'intensidad',
'interesante', 'interior', 'invención', 'júbilo', 'justeza',
'juventud', 'liderazgo', 'lógica', 'logro', 'longevidad', 'luminoso',
'madurez', 'magistral', 'magnífico', 'majestuoso', 'mágico',
'maternidad', 'mérito', 'mirada', 'motivación', 'natural', 'nobleza',
'optimismo', 'ordenado', 'original', 'orientación', 'paz', 'percepción',
'perfeccionista', 'perseverancia', 'perspicacia', 'plenitud', 'poderoso',
'positivo', 'preciso', 'preparado', 'prestigio', 'privilegio', 'progreso',
'protección', 'puntualidad', 'radiante', 'realidad', 'receptividad',
'recompensa', 'rectitud', 'refinamiento', 'reflexión', 'regeneración',
'relajación', 'rendimiento', 'renovación', 'respeto', 'resplandor',
'responsabilidad', 'reverencia', 'rigor', 'sabiduría', 'satisfacción',
'seguridad', 'sensatez', 'serenidad', 'servicio', 'sinceridad', 'solidaridad',
'superación', 'superioridad', 'talento', 'templanza', 'tenacidad', 'ternura',
'tesoro', 'tolerancia', 'tranquilidad', 'trascendencia', 'triunfo',
'unidad', 'valentía', 'valor', 'veneración', 'verdad', 'vibrante',
'victoria', 'virtud', 'voluntad', 'zen', 'adelanto', 'amistoso',
'atento', 'auténtico', 'belleza', 'bienestar', 'brillantez', 'calidez',
'cariñoso', 'celebración', 'cómodo', 'compañerismo', 'complaciente',
'comprensión', 'confianza', 'contento', 'creativo', 'delicia',
'destacado', 'diligencia', 'distinguir', 'divino', 'educación',
'efectivo', 'elogio', 'encantador', 'esfuerzo', 'excelencia',
'exquisito', 'felicitación', 'feliz', 'fiable', 'firmeza', 'fuerza',
'generosidad', 'gloria', 'gratitud', 'hábil', 'hilaridad', 'honor',
'iluminado', 'impacto', 'impecable', 'increíble', 'inspirador',
'integridad', 'intensidad', 'inteligencia', 'interesante', 'logro',
'luminoso', 'magnífico', 'majestuoso', 'motivación', 'optimismo',
'orgullo', 'paz', 'perfección', 'placentero', 'poder', 'positivo',
'prestigio', 'radiante', 'realización', 'refinamiento', 'relevante',
'renovación', 'resplandor', 'sabiduría', 'seguridad', 'sensatez',
'serenidad', 'sinceridad', 'talento', 'tenacidad', 'ternura',
'tranquilidad', 'triunfo', 'valentía', 'valor', 'verdad', 'victoria',
'vitalidad', 'zen'
);
$negativas = array(
'aburrido', 'abatido', 'aflicción', 'agobio', 'agresión', 'agresividad', 'aislamiento',
'alarmante', 'alboroto', 'angustia', 'ansiedad', 'apático', 'arrogancia', 'asco',
'aversión', 'averso', 'bizarro', 'caos', 'cansancio', 'claustrofobia', 'colérico',
'confusión', 'crítico', 'crueldad', 'debilidad', 'decepcionado', 'desaliento',
'desamparo', 'desánimo', 'desastre', 'desdicha', 'desesperanza', 'desesperado',
'desgaste', 'desgracia', 'desilusión', 'desinterés', 'desolado', 'despreciado',
'desprecio', 'destrucción', 'desventura', 'devastador', 'difícil', 'dolor',
'dolorido', 'enfado', 'enfermedad', 'enfermo', 'envidia', 'escalofríos',
'estrés', 'fatiga', 'fobia', 'frustración', 'furia', 'horrible', 'horrorizado',
'impaciencia', 'impotencia', 'incertidumbre', 'indignado', 'inseguridad',
'insufrible', 'irritable', 'lamento', 'lágrimas', 'maldad', 'malestar',
'melancolía', 'miedo', 'molestia', 'nerviosismo', 'odioso', 'oscuridad',
'pánico', 'paranoia', 'pesimista', 'pesimismo', 'pesadilla', 'preocupación',
'queja', 'rabia', 'rechazo', 'remordimiento', 'resentimiento', 'retorcido',
'ridículo', 'soledad', 'sufrimiento', 'temblor', 'temor', 'tensión',
'terror', 'tragedia', 'tristeza', 'turbulento', 'vacío', 'vergüenza',
'vulnerable', 'desolación', 'aflicción', 'agonía', 'alienación', 'angustioso',
'ansioso', 'apatía', 'arrogante', 'asustado', 'aversión', 'brutal',
'desamor', 'desánimo', 'desconcierto', 'desconsuelo', 'desesperación',
'desgarrador', 'desolador', 'destruido', 'dolor', 'doloroso', 'egoísmo',
'enfermedad', 'exclusión', 'frustrado', 'fúnebre', 'furioso', 'incómodo',
'insensible', 'insoportable', 'lacerante', 'lamentable', 'melancólico',
'molesto', 'mortificado', 'nostalgia', 'odioso', 'oscuro', 'patético',
'penuria', 'perdido', 'pesadumbre', 'preocupado', 'rencor', 'resentido',
'ruina', 'temeroso', 'trágico', 'traición', 'triste', 'venganza',
'vulnerabilidad', 'abominable', 'agitado', 'amargo', 'angustiado',
'aniquilación', 'animosidad', 'anormal', 'ansia', 'apestado', 'asfixiante',
'asustado', 'aterrorizado', 'aversión', 'brutalidad', 'crítico', 'debilitado',
'decepción', 'desagravio', 'desamparado', 'desasosiego', 'desconfianza',
'desdichado', 'desengaño', 'desgarrado', 'desgraciado', 'desilusión',
'desolación', 'despertar', 'despiadado', 'desprecio', 'destrozado',
'desventurado', 'devastado', 'difícil', 'dolorido', 'dócil', 'enfurecido',
'enloquecido', 'ensombrecido', 'exasperado', 'extenuado', 'fútil', 'hostilidad',
'humillación', 'impotente', 'inadaptado', 'inapropiado', 'incapaz',
'indiferencia', 'inquietud', 'insuficiencia', 'iracundo', 'irascible',
'irritable', 'lamentable', 'lastimado', 'macabro', 'maldecido', 'maltrecho',
'miserable', 'molesto', 'mortificado', 'nauseabundo', 'necesitado',
'nocivo', 'ofendido', 'oscurecido', 'pesimista', 'perturbado', 'quebrado',
'quebrantado', 'quebrantado', 'recelo', 'rechazado', 'remordimiento',
'resentimiento', 'retorcido', 'revuelto', 'rígido', 'sin esperanza',
'solitario', 'sufrimiento', 'tembloroso', 'temeroso', 'tenso', 'traicionado',
'triste', 'tumultuoso', 'vacío', 'vergonzoso', 'vulnerable', 'abandonado',
'aberrante', 'abismal', 'aborrecible', 'abrumador', 'acosador', 'adverso',
'agobiante', 'alienante', 'alocado', 'angustiante', 'anormal', 'ansioso',
'apático', 'asfixiado', 'atormentado', 'atrasado', 'avergonzado', 'aversivo',
'azotado', 'caótico', 'claustrofóbico', 'cobarde', 'colapsado', 'colérico',
'corrompido', 'cruel', 'dañino', 'deficiente', 'degradante', 'delirante',
'desalentado', 'desalmado', 'desanimado', 'desarticulado', 'desastroso',
'descalabrado', 'descompuesto', 'desconsolado', 'descontento', 'desdichado',
'desesperado', 'desfasado', 'desfigurado', 'desganado', 'desgarrado',
'desgaste', 'desintegrado', 'desmotivado', 'despreciable', 'desprotegido',
'desquiciado', 'destrozado', 'desvalido', 'desventurado', 'devastado',
'disminuido', 'distorsionado', 'dolorido', 'enardecido', 'enfurecido',
'enfermizo', 'enfermo', 'enfurecido', 'enloquecido', 'ensombrecido',
'estresado', 'extenuado', 'extinguido', 'extravío', 'exuberante',
'fatal', 'fóbico', 'frustrado', 'furioso', 'grave', 'herido', 'horrendo',
'horrible', 'hostil', 'humillado', 'inaguantable', 'incapacitado',
'inclemente', 'incomprendido', 'inconforme', 'increíble', 'indefenso',
'indiferente', 'indignado', 'indolente', 'ineficaz', 'ineficiente',
'inepto', 'inestable', 'insoportable', 'irascible', 'irritante',
'lamentable', 'lastimero', 'macabro', 'maldito', 'malicioso', 'malogrado',
'malsano', 'melancólico', 'mentiroso', 'miedoso', 'miserable', 'molesto',
'mortificado', 'nocivo', 'opresivo', 'oscuro', 'paranoico', 'patético',
'penoso', 'perjudicial', 'perturbador', 'pesimista', 'preocupado',
'quebrantado', 'rencoroso', 'resentido', 'retorcido', 'sin esperanza',
'sufriente', 'tembloroso', 'temeroso', 'tormentoso', 'traicionero',
'trágico', 'turbulento', 'vacío', 'venenoso', 'vergonzoso', 'vulnerable'
);
// Convertir el texto a minúsculas para la comparación
$texto = strtolower($texto);
// Inicializar contadores
$puntuacion_positiva = 0;
$puntuacion_negativa = 0;
// Contar palabras positivas
foreach ($positivas as $palabra) {
$puntuacion_positiva += substr_count($texto, $palabra);
}
// Contar palabras negativas
foreach ($negativas as $palabra) {
$puntuacion_negativa += substr_count($texto, $palabra);
}
// Evaluar el resultado
if ($puntuacion_positiva > $puntuacion_negativa) {
return 'Positivo';
} else {
return 'Negativo';
}
}
// Agregar un metabox en la pantalla de edición para mostrar el análisis de sentimientos
function agregar_metabox_analisis_sentimientos() {
add_meta_box(
'sentimientos_metabox', // ID único
'Análisis de Sentimientos', // Título del metabox
'mostrar_metabox_analisis_sentimientos', // Función que muestra el contenido
['post', 'page', 'product', 'event'], // Tipos de contenido donde se mostrará (añade otros CPTs aquí)
'side', // Contexto (donde se muestra)
'high' // Prioridad
);
}
add_action('add_meta_boxes', 'agregar_metabox_analisis_sentimientos');
function mostrar_metabox_analisis_sentimientos($post) {
// Obtener el contenido
$contenido = get_post_field('post_content', $post->ID);
// Realizar el análisis
$resultado = analizar_sentimientos($contenido);
// Mostrar el resultado
echo '<p><strong>Resultado del Análisis: </strong>' . $resultado . '</p>';
}
// Añadir columna personalizada para mostrar el análisis de sentimientos en la lista de posts/páginas/CPTs
function agregar_columna_sentimientos($columns) {
$columns['sentimientos'] = 'Análisis de Sentimientos';
return $columns;
}
// Llenar la columna personalizada con el resultado del análisis de sentimientos
function mostrar_columna_sentimientos($column, $post_id) {
if ($column === 'sentimientos') {
$contenido = get_post_field('post_content', $post_id);
$resultado = analizar_sentimientos($contenido);
echo $resultado;
}
}
// Añadir las funciones para entradas, páginas, productos, y otros CPTs
add_filter('manage_post_posts_columns', 'agregar_columna_sentimientos');
add_action('manage_post_posts_custom_column', 'mostrar_columna_sentimientos', 10, 2);
add_filter('manage_page_posts_columns', 'agregar_columna_sentimientos');
add_action('manage_page_posts_custom_column', 'mostrar_columna_sentimientos', 10, 2);
// Añade aquí otros CPTs que quieras cubrir, por ejemplo 'product', 'event', etc.
add_filter('manage_product_posts_columns', 'agregar_columna_sentimientos');
add_action('manage_product_posts_custom_column', 'mostrar_columna_sentimientos', 10, 2);
add_filter('manage_event_posts_columns', 'agregar_columna_sentimientos');
add_action('manage_event_posts_custom_column', 'mostrar_columna_sentimientos', 10, 2);
Lenguaje del código: PHP (php)
Entendiendo el Código
Función de Análisis de Sentimientos: La función principal del código es analizar el contenido textual y determinar si el sentimiento general es positivo o negativo. Esto se logra utilizando dos listas separadas de palabras: una lista de palabras positivas y otra de palabras negativas. Cada vez que una palabra del texto coincide con una palabra en estas listas, se incrementa una puntuación correspondiente, positiva o negativa.
Listas de Palabras Positivas y Negativas: Estas listas contienen palabras que son comúnmente asociadas con emociones positivas o negativas. La lista positiva puede incluir términos como «feliz», «éxito» o «maravilloso», mientras que la negativa puede contener palabras como «triste», «fracaso» o «horrible». Estas listas pueden ser personalizadas para adaptarse al tono y estilo de contenido que se desea analizar, y son fundamentales para la precisión del análisis.
Normalización del Texto: Antes de realizar el análisis, el código convierte todo el texto a minúsculas. Esto asegura que las coincidencias de palabras no se vean afectadas por las diferencias de capitalización, garantizando un análisis más preciso.
Contadores de Palabras: El código emplea contadores para medir la cantidad de palabras positivas y negativas que aparecen en el texto. Cada vez que una palabra del texto coincide con una palabra en una de las listas, el contador correspondiente se incrementa. Este enfoque permite cuantificar el tono del texto de manera clara y objetiva.
Evaluación del Resultado: Después de contar las palabras positivas y negativas, el código compara ambos contadores para determinar el tono general del texto. Si el contador positivo es mayor que el negativo, el sentimiento del texto se clasifica como positivo. Si es menor, se clasifica como negativo. Este resultado se utiliza para generar una conclusión sobre el sentimiento predominante en el contenido.
Visualización del Análisis: Finalmente, el código está diseñado para integrarse en el entorno de edición de contenido, mostrando el resultado del análisis de sentimientos directamente en la pantalla de edición. Esto permite a los creadores de contenido recibir retroalimentación instantánea sobre el tono de su texto y realizar ajustes en tiempo real para mejorar su impacto.
Nos vemos en el siguiente tutorial.
Un saludo.




Deja tus opiniones o dudas en los comentarios.