UNPKG

prose-js

Version:

Natural language-to-pseudocode compiler.

132 lines (109 loc) 2.94 kB
var Cleaner = require("./src/cleaner"); var Classifier = require("./src/classifier"); var Stemmer = require("./src/stemmer"); var Translator = require("./src/translator"); var LangDetector = require("./src/language-detector"); var Formatter = require("./src/formatter"); var printSteps = process && process.env.NODE_ENV === "development"; /** * Natural language-to-pseudocode compiler. * @exports prose-js */ var prose = { /* * Returns the pseudocode for the given text. * * @param {string} string - Text to parse. */ compileToPseudocode: function(parsable) { var parsed = []; var parsables = parsable.split(/\n+-+\n+/); for (var i = 0; i < parsables.length; i++) { var p = parsables[i].trim(); if (printSteps) { print("Leyendo parte #" + (i + 1)); print("Texto original", p); } // var lang = detectLanguage(parsable); var lang = "spa"; if (printSteps) { print("Lenguaje detectado", lang); } p = classify(p); if (printSteps) { print("Texto clasificado", p); } p = clean(p, lang); if (printSteps) { print("Texto limpio", p); } p = stem(p, lang); if (printSteps) { print("Texto stemmed", p); } p = translate(p); if (printSteps) { print("Texto traducido", p); } p = format(p); print("Pseudocódigo", p); if (printSteps) { printSeparator(true); } parsed.push(p); } return parsed.length === 1 ? parsed[0] : parsed.join('\n\n----------\n\n'); } }; function detectLanguage(string) { var langDetector = new LangDetector(); return langDetector.detect(string); } function clean(string, lang) { var cleaner = new Cleaner(lang); return cleaner.clean(string); } function stem(string, lang) { var stemmer = new Stemmer(lang); return stemmer.stem(string); } function classify(string) { var classifier = new Classifier(); return classifier.classify(string); } function translate(string) { var translator = new Translator(); return translator.translate(string); } function format(string) { var formatter = new Formatter(); return formatter.format(string); } function print(title, string) { console.log("\n" + title); printSeparator(); if (string) { console.log(string); } } function printSeparator(large) { if (large) { var separator = "\n\n\n\n\n================================================================================\n\n\n\n"; } else { var separator = "=========="; } console.log(separator); } if (printSteps) { console.log("Leyendo el texto natural desde input.txt...\n...\n..."); var fs = require("fs"); fs.readFile("input.txt", "utf8", function(err, data) { if (err) throw err; console.log("Procesando el texto natural...\n...\n..."); fs.writeFile("output.txt", prose.compileToPseudocode(data), function(err, data) { if (err) throw err; console.log("Proceso completo! Los resultados se guardaron en output.txt"); }); }); } module.exports = prose;