Created
October 4, 2020 21:33
-
-
Save lakefox/3e46c19424a2e287c308e0fd9f5c1cf2 to your computer and use it in GitHub Desktop.
Free article spinner/paraphraser also available on runkit as a free api.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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