🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
DemoInstallSign in
Socket

markovian-nlp

Package Overview
Dependencies
Maintainers
1
Versions
40
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

markovian-nlp

NLP tools generate Markov sentences & models.

2.2.3
Source
npm
Version published
Weekly downloads
14
366.67%
Maintainers
1
Weekly downloads
 
Created
Source

markovian-nlp

license npm bundle size (minified) npm bundle size (minified + gzip) npm current version

Quick start

As an isomorphic JavaScript package, there are multiple ways for clients, servers, and bundlers to start using this library. Several methods do not require installation.

RunKit

RunKit provides one of the least difficult ways to get started:

  • test with RunKit

CodePen

Declare imports in the JS section to get started:

import {
  ngramsDistribution,
  sentences,
} from 'https://unpkg.com/markovian-nlp@latest?module';
const sentence = sentences('oh me, oh my');
console.log(sentence());
// example output: 'oh me oh me oh my'

Browsers

Insert the following element within the <head> tag of an HTML document:

<script src="https://unpkg.com/markovian-nlp@latest"></script>

After the script is loaded, the markovian browser global is exposed:

const sentence = markovian.sentences('oh me, oh my');
console.log(sentence());
// example output: 'oh me oh me oh my'

Node.js

With npm installed, run terminal command:

npm i markovian-nlp

Once installed, declare method imports at the top of each JavaScript file they will be used.

ES2015

Recommended

import {
  ngramsDistribution,
  sentences,
} from 'markovian-nlp';

CommonJS

const {
  ngramsDistribution,
  sentences,
} = require('markovian-nlp');

Usage

Markov text generation

Generate text sentences from a Markov process.

Potential applications: Natural language generation

In these examples, document is text from this source:

const document = 'That there is constant succession and flux of ideas in our minds...';
const oneSentence = sentences(document);
Generate a random sentence

By default, a nondeterministic sentence is generated without providing a seed:

oneSentence();
// output: 'i have observed in the chief yet we might be able by a one...'
oneSentence();
// output: 'this is not angry chiding or so easy to them from running away...'
Generate a repeatable sentence

Optionally providing a seed generates a deterministic sentence:

oneSentence(1);
// output: 'i would promote introduce a constant succession and hindering the path...'
oneSentence(1);
// output: 'i would promote introduce a constant succession and hindering the path...'
Generate multiple sentences

Optionally providing a seed generates deterministic sentences:

sentences({
  document,
  count: 3,
  seed: 1,
});

// output: [
//   'i would promote introduce a constant succession and hindering the path...',
//   'he that train they seem to be glad to be done as may be avoided of our thoughts...',
//   'this wandering of attention and yet for ought i know this wandering thoughts i would promote...',
// ]

View n-grams distribution

View the n-grams distribution of text.

Potential applications: Markov models

ngramsDistribution('birds have featured in culture and art since prehistoric times');

// output: {
//   and: { _end: 0, _start: 0, art: 1 },
//   art: { _end: 0, _start: 0, since: 1 },
//   birds: { _end: 0, _start: 1, have: 1 },
//   culture: { _end: 0, _start: 0, and: 1 },
//   featured: { _end: 0, _start: 0, in: 1 },
//   have: { _end: 0, _start: 0, featured: 1 },
//   in: { _end: 0, _start: 0, culture: 1 },
//   prehistoric: { _end: 0, _start: 0, times: 1 },
//   since: { _end: 0, _start: 0, prehistoric: 1 },
//   times: { _end: 1, _start: 0 },
// }

Each number represents the sum of occurrences.

startgramendgrambigrams
"birds""times"all remaining keys ("have featured", "featured in", etc.)

API

ngramsDistribution(document)

Input
user-defined parametertypeimplementsintermediate transformations
documentStringcompromise(document)normalization, rule-based text parsing
Return value
typedescription
Objectdistributions of unigrams to startgrams, endgrams, and following bigrams
// pseudocode signature representation (does not run)
ngramsDistribution(document) => ({
  ...unigrams: {
    ...{ ...bigram: bigramsDistribution },
    _end: endgramsDistribution,
    _start: startgramsDistribution,
  },
});

sentences(document)(seed)

sentences({ document[, count][, seed] })

Input
user-defined parametertypeoptionaldefault valueimplementsdescription
document, options.documentStringfalsecompromise(document)Text.
seed, options.seedNumbertrueundefinedChance(seed)Leave undefined (default) for nondeterministic results, or specify seed for deterministic results.
optionsObjecttrue
options.countNumbertrue1Number of sentences to output.
Return value
typedescription
Array[Strings...]generated sentences

Glossary

Learn more about computational linguistics and natural language processing (NLP) on Wikipedia.

The following terms are used in the API documentation:

termdescription
bigram2-gram sequence
deterministicrepeatable, non-random
endgramfinal gram in a sequence
n-gramcontiguous gram (word) sequence
startgramfirst gram in a sequence
unigram1-gram sequence

Keywords

computational linguistics

FAQs

Package last updated on 11 Oct 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts