Fondo
Tengo un archivo json llamado Dictionary.js , contiene objetos de palabras. A cada palabra se le asigna un valor entero en función de si es positivo o negativo. Si la palabra es positiva, su valor debe ser mayor que 0; si es negativo, el valor asignado a esa palabra debe ser menor que 0. Si no se encuentra una palabra en esta matriz, se le asigna un valor predeterminado de 0. El archivo javascript que tengo resume todos los valores de las palabras y da una puntuación resultante que debo usar para analizar si el sentimiento del comentario fue negativo, neutral o positivo.
Implementación
Después de enterarme de que no puedo leer el archivo de notación de objetos de JavaScript directamente, decidí usar require.js para poder usar requirejs(['path.json'],function(data){}) para leerlo.
Agregué un detector de eventos onkeydown() a la entrada de entrada que acepta los comentarios del usuario y adjunté una función de javascript llamada sentiments que se supone que debe alertar a la puntuación a medida que el usuario continúa escribiendo palabras. Hay muchas funciones lambda para manejar el procesamiento de textos desde el objeto json, pero mi código no funciona por alguna razón, por favor ayuda...
<!--dependency for require.js--> <head> <script src='require.js'></script> </head> <body> <input type="text" id="user_comment" onkeydown="sentiments()"/> <script> let comment=document.getElementById("user_comment").value; function sentiments(){ requirejs(["Dictionary.json"],function(data){ let AFINN=json.parse(data); const tokenize = text => text.toLowerCase().split(" "); const deleteUselessChars = word => word.replace(/[^\w]/g, ""); const rateWord = word => (word in AFINN ? AFINN[word] : 0); const sum = (x, y) => x + y; const analyseText = text => tokenize(text) .map(deleteUselessChars) .map(rateWord) .reduce(sum); }); //supposed to get integer alerts from this alert(analyseText(comment)); } </script> </body>