Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dzucconi/humanization
To err is human
https://github.com/dzucconi/humanization
chatbot ergonomics humanization humanize language
Last synced: 6 days ago
JSON representation
To err is human
- Host: GitHub
- URL: https://github.com/dzucconi/humanization
- Owner: dzucconi
- License: mit
- Created: 2019-06-12T14:45:45.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-09-27T06:48:33.000Z (about 1 month ago)
- Last Synced: 2024-10-04T13:38:26.108Z (about 1 month ago)
- Topics: chatbot, ergonomics, humanization, humanize, language
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/humanization
- Size: 678 KB
- Stars: 17
- Watchers: 1
- Forks: 0
- Open Issues: 43
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# humanization
[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release) [![npm](https://img.shields.io/npm/v/humanization)](https://www.npmjs.com/package/humanization) [![Build Status](https://travis-ci.org/dzucconi/humanization.svg?branch=master)](https://travis-ci.org/dzucconi/humanization)
`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.
## Getting started
```javascript
import { humanize } from "humanization";humanize("All their equipment and instruments are alive.").toString();
// => "All thei5 eqjipmetn and insfrmuents rAe alIve."
``````javascript
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!!!"
```## Development
- `yarn install`
- `yarn watch`### Testing
- `yarn test` or `yarn test --watch`
### Building
- `yarn compile`