Hola a todos,
En el post de hoy voy a mostrar un ejemplo muy sencillo de análisis de sentimiento con typescript. No voy a usar bibliotecas, únicamente el entorno de office script.
El objetivo es detectar si una frase muestra un sentimiento Positivo, Negativo o Neutral en el mensaje que expresa.
Vamos a utilizar como ejemplo estas tres frases:
Y vamos a ejecutar el siguiente código en el editor de office script:
function main(workbook: ExcelScript.Workbook) {
var miHoja = workbook.getWorksheet("Hoja1");
var miRango = miHoja.getRange("A2:A4").getValues();;
var miMatriz = miRango.reduce((acum, val) => acum.concat(val), []);
var positivo = ["amor", "encanta", "divertido", "feliz", "maravilloso"];
var negativo = ["odio", "triste", "miedo", "aburrido", "frustrado"];
var fSentimiento = (text: string): string => {
var palabras = text.toLowerCase().replace(/[^\w\s]/gi, "").split(" ");
var casosPositivos = palabras.filter((dato) => positivo.includes(dato));
var casosNegativos = palabras.filter((dato) => negativo.includes(dato));
if (casosPositivos.length > casosNegativos.length) {
return "Positivo";
} else if (casosNegativos.length > casosPositivos.length) {
return "Negativo";
} else {
return "Neutral";
}
};
miMatriz.forEach(text => {
if (typeof text === "string") {
console.log(`El sentimiento de la frase "${text}" es: ${fSentimiento(text)}`);
}
});
}
Como podéis observar, he marcado el rango de análisis desde A2 a A4 (lo podéis modificar o automatizar su longitud), para analizar las frases que hemos escrito.
En el script se determinan una serie de palabras clave (positivas y negativas) que vamos a contar y comparar el total de palabras en la frase, lo que determinará si es o no de sentimiento positivo y negativo.
En un ejemplo más complejo le daríamos pesos a cada palabras en positivo y negativo y obtendríamos una medida más exacta, aunque para este ejemplo he creído conveniente hacerlo más simple.
El resultado lo mostraré en la consola del editor:
He construido las frases para obtener un resultado de cada categoría y como veis funciona correctamente.
Y esto es todo, espero que sea de utilidad!
¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.
¡¡Muchas gracias!!
Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies