Skip to content

Instantly share code, notes, and snippets.

@lakefox
Created October 4, 2020 21:33
Show Gist options
  • Save lakefox/3e46c19424a2e287c308e0fd9f5c1cf2 to your computer and use it in GitHub Desktop.
Save lakefox/3e46c19424a2e287c308e0fd9f5c1cf2 to your computer and use it in GitHub Desktop.
Free article spinner/paraphraser also available on runkit as a free api.
const synonyms = require("synonyms");
const WordPOS = require('wordpos'),
wordpos = new WordPOS();
var cors = require('cors');
var express = require("@runkit/runkit/express-endpoint/1.0.0");
var app = express(exports);
app.use(cors());
app.get('/', async function(request, response, next) {
let text = request.query.text;
let rate = parseFloat(request.query.rate);
let result = await rewrite(text, rate);
response.send(result);
});
async function rewrite(text, rate) {
text = text.split(" ");
for (var i = 0; i < text.length; i++) {
let word = text[i].replace(/[^a-zA-Z ]/g, "");
let others = synonyms(word, await POS(word)) || [word];
let new_word = others[~~(Math.random()*others.length)] || word;
if (Math.random() > rate) {
new_word = word;
}
text[i] = text[i].replace(word,new_word);
}
return text.join(" ");
}
async function isNoun(word) {
let promise = new Promise((resolve, reject) => {
wordpos.isNoun(word,(r)=>{resolve(r)});
});
let result = await promise;
return result;
}
async function isVerb(word) {
let promise = new Promise((resolve, reject) => {
wordpos.isVerb(word,(r)=>{resolve(r)});
});
let result = await promise;
return result;
}
async function isAdjective(word) {
let promise = new Promise((resolve, reject) => {
wordpos.isAdjective(word,(r)=>{resolve(r)});
});
let result = await promise;
return result;
}
async function isAdverb(word) {
let promise = new Promise((resolve, reject) => {
wordpos.isAdverb(word,(r)=>{resolve(r)});
});
let result = await promise;
return result;
}
async function POS(word) {
if (await isAdverb(word)) {
return "r";
} else
if (await isAdjective(word)) {
return "s";
} else
if (await isNoun(word)) {
return "n";
} else
if (await isVerb(word)) {
return "v";
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment