ngraminator
Version:
A utility for making ngrams from Arrays
130 lines (111 loc) • 3.66 kB
Markdown
A really small ngram generator for Node.js and the browser. Check out the [interactive demo](https://fergiemcdowall.github.io/ngraminator/demo/).
[![NPM version][npm-version-image]][npm-url]
[![NPM downloads][npm-downloads-image]][npm-url]
[](https://www.jsdelivr.com/package/npm/ngraminator)
[![Build Status][CI-image]][CI-url]
[![JavaScript Style Guide][standardjs-image]][standardjs-url]
[![MIT License][license-image]][license-url]
How the library is now required is slightly different. For CommonJS it used to be `const ngraminator = require('ngraminator')`, but now it is `const { ngraminator } = require('ngraminator')`
And UMD used to be `ngraminator()`, but is now `ngrm.ngraminator()`
<img width ="600" alt="Demo at work" src="https://user-images.githubusercontent.com/236656/63688481-d5df0580-c807-11e9-8bf6-67dac790d761.png">
```JavaScript
const { ngraminator } = require('ngraminator')
// ngraminator(wordArray, ngramLenghtArray) available
```
```JavaScript
import { ngraminator } from 'ngraminator'
// ngraminator(wordArray, ngramLenghtArray) available
```
```html
<script src="https://cdn.jsdelivr.net/npm/ngraminator/dist/ngraminator.umd.min.js"></script>
<script>
// ngrm.ngraminator(wordArray, ngramLenghtArray) available
</script>
```
```javascript
const str = "mary had a little lamb it's fleece"
// get ngrams of length 3
ngraminator(str.split(' '), [3])
// [
// ['mary', 'had', 'a'],
// ['had', 'a', 'little'],
// ['a', 'little', 'lamb'],
// ['little', 'lamb', 'it\'s'],
// ['lamb', 'it\'s', 'fleece']
// ]
// get ngrams of lengths 1 and 2
ngraminator(str.split(' '), [1, 2])
// [
// [ 'mary' ],
// [ 'had' ],
// [ 'a' ],
// [ 'little' ],
// [ 'lamb' ],
// [ 'it\'s' ],
// [ 'fleece' ],
// [ 'mary', 'had' ],
// [ 'had', 'a' ],
// [ 'a', 'little' ],
// [ 'little', 'lamb' ],
// [ 'lamb', 'it\'s' ],
// [ 'it\'s', 'fleece' ]
// ]
// get ngrams of lengths 1, 2, and 5
ngraminator(str.split(' '), [1, 2, 5])
// [
// [ 'a' ],
// [ 'a', 'little' ],
// [ 'a', 'little', 'lamb', 'it\'s', 'fleece' ],
// [ 'fleece' ],
// [ 'had' ],
// [ 'had', 'a' ],
// [ 'had', 'a', 'little', 'lamb', 'it\'s' ],
// [ 'it\'s' ],
// [ 'it\'s', 'fleece' ],
// [ 'lamb' ],
// [ 'lamb', 'it\'s' ],
// [ 'little' ],
// [ 'little', 'lamb' ],
// [ 'mary' ],
// [ 'mary', 'had' ],
// [ 'mary', 'had', 'a', 'little', 'lamb' ]
// ]
//
// get ngrams of lengths 1, 2, and 5 stringified
ngraminator(str.split(' '), [1, 2, 5]).map(item => item.join(' '))
// [
// "a",
// "a little",
// "a little lamb it's fleece",
// "fleece",
// "had",
// "had a",
// "had a little lamb it's",
// "it's",
// "it's fleece",
// "lamb",
// "lamb it's",
// "little",
// "little lamb",
// "mary",
// "mary had",
// "mary had a little lamb"
// ]
//
```
[]: http://img.shields.io/badge/license-MIT-blue.svg?style=flat
[]: LICENSE
[]: https://npmjs.org/package/ngraminator
[]: http://img.shields.io/npm/v/ngraminator.svg?style=flat
[]: http://img.shields.io/npm/dm/ngraminator.svg?style=flat
[]: https://github.com/fergiemcdowall/ngraminator/actions/workflows/tests.yml
[]: https://github.com/fergiemcdowall/ngraminator/actions/workflows/tests.yml/badge.svg
[]: https://standardjs.com
[]: https://img.shields.io/badge/code_style-standard-brightgreen.svg?style=flat-square