humanization
is a library that seeks to simulate human patterns of mistakes when typing text. It can be thought of as a way of 'distressing' text or serve as a kind of ergonomic layer for automated chatbots to make them feel more human.
import { humanize } from "humanization";
humanize("All their equipment and instruments are alive.").toString();
// => "All thei5 eqjipmetn and insfrmuents rAe alIve."
import {
humanize,
mistakes,
process,
isProcessedWord,
ProcessedCharacter,
Applicable
} from "humanization";
const [thx] = process("thx");
const print = (input: ProcessedCharacter[]) =>
input.map(({ source }) => source).join("");
const thanks = (input: Applicable): Applicable => {
// Only re-write words that match 'thanks':
if (isProcessedWord(input) && /thanks/i.test(print(input))) {
return [
// Replace entire word with "thx"
...thx,
// Leaves punctuation intact
...input.filter(processedCharacter =>
/[,.?!\-]/.test(processedCharacter.source)
)
];
}
return input;
};
humanize("hey thanks so much!", {
seed: "1234",
mistakes: [
// Mistakes are applied in order from top to bottom
{ apply: mistakes.capitalize, probability: 0.5 },
{ apply: thanks, probability: 1 },
{
apply: input =>
mistakes.repeat(input, {
"!": 1,
x: 1
}),
probability: 1
}
]
}).toString();
// => "hEY thxxxxxxxxx SO mUCh!!!"
yarn install
yarn watch
yarn test
oryarn test --watch
yarn compile