Git Product home page Git Product logo

retext's Introduction

retext

Build Status Coverage Status Code Climate

retext is an extensible natural language processor with support for multiple languages. retext provides a pluggable system for analysing and manipulating natural language in JavaScript. It works on Node and in the Browser.

Rather than being a do-all library for Natural Language Processing (such as NLTK or OpenNLP), retext aims to be useful for more practical use cases (such as checking for insensitive words or decoding emoticons) instead of more academic goals (research purposes). retext is inherently modular—it uses plugins (similar to remark for markdown) instead of providing everything out of the box (such as Natural). This makes retext a viable tool for use on the web.

Installation

npm:

npm install retext

retext is also available as an AMD, CommonJS, and globals module, uncompressed and compressed.

Usage

The following example uses retext-emoji to show emoji and retext-smartypants for smart punctuation.

Require dependencies:

var retext = require('retext');
var emoji = require('retext-emoji');
var smartypants = require('retext-smartypants');

Create an instance using retext-emoji and -smartypants:

var processor = retext().use(smartypants).use(emoji, {
    'convert' : 'encode'
});

Process a document:

var doc = processor.process([
    'The three wise monkeys [. . .] sometimes called the three mystic',
    'apes--are a pictorial maxim. Together they embody the proverbial',
    'principle to ("see no evil, hear no evil, speak no evil"). The',
    'three monkeys are Mizaru (:see_no_evil:), covering his eyes, who',
    'sees no evil; Kikazaru (:hear_no_evil:), covering his ears, who',
    'hears no evil; and Iwazaru (:speak_no_evil:), covering his mouth,',
    'who speaks no evil.'
].join('\n'));

Yields (you need a browser which supports emoji to see them):

The three wise monkeys […] sometimes called the three mystic
apes—are a pictorial maxim. Together they embody the proverbial
principle to (“see no evil, hear no evil, speak no evil”). The
three monkeys are Mizaru (🙈), covering his eyes, who
sees no evil; Kikazaru (🙉), covering his ears, who
hears no evil; and Iwazaru (🙊), covering his mouth,
who speaks no evil.

API

retext.use(plugin[, options])

Change the way retext works by using a plugin.

Signatures

  • processor = retext.use(plugin, options?);
  • processor = retext.use(plugins).

Parameters

  • plugin (Function) — A Plugin;

  • plugins (Array.<Function>) — A list of Plugins;

  • options (Object?) — Passed to the plugin. Specified by its documentation.

Returns

Object — an instance of Retext: The returned object functions just like retext (it has the same methods), but caches the used plugins. This provides the ability to chain use calls to use multiple plugins, but ensures the functioning of the retext module does not change for other dependents.

retext.process(value[, done])

Parse a text document, apply plugins to it, and compile it into something else.

Parameters

  • value (VFile or string) — Text document;

  • done (Function, optional).

Returns

string?: A document. Formatted in whatever plugins generate. The result is null if a plugin is asynchronous, in which case the callback done should’ve been passed (don’t worry: plugin creators make sure you know its async).

function done(err, file, doc)

Callback invoked when the output is generated with either an error, or the processed document (represented as a virtual file and a string).

Parameters

  • err (Error?) — Reason of failure;
  • file (VFile?) — Virtual file;
  • doc (string?) — Generated document.

Plugin

function attacher(retext[, options])

A plugin is a function, which takes the Retext instance a user attached the plugin on as a first parameter and optional configuration as a second parameter.

A plugin can return a transformer.

function transformer(node, file[, next])

A transformer changes the provided document (represented as a node and a virtual file).

Transformers can be asynchronous, in which case next must be invoked (optionally with an error) when done.

List of Plugins

List of Utilities

The following projects are useful when working with the syntax tree, NLCST:

In addition, see wooorm/unist for other utilities which work with retext nodes, but also with other nodes.

And finally, see wooorm/vfile for a list of utilities which work with virtual files.

List of Products

The following products use retext:

CLI

  • wooorm/alex — Catch insensitive, inconsiderate writing.

Node

Related

License

MIT © Titus Wormer

retext's People

Contributors

blakeembrey avatar dunckr avatar jlburkhead avatar joshwyatt avatar marionebl avatar wooorm avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.