compromise-plugin

author and compress nlp-compromise plugins

:sunglasses::sunglasses::sunglasses::sunglasses:

make a plugin for compromise

compromiseworks by compressing its data in lots of weird ways. With compromise-plugin, you can ship thousands, or tens-of-thousands of custom words and patterns to the client-side, for any natural-language-processing behaviour you'd like.
//take this plugin,
var plugin = {
  name:'compromise-dinosaur',
  words: {
    brontosaurus:'Dinosaur',
    trex: 'Dinosaur'
  },
  tags: {
    Dinosaur: {
      isA: 'Animal'
    },
    Animal: {
      isA: 'Noun'
    }
  },
  regex: {
    '.osaurus$': 'Dinosaur',
    'uuu+': 'Exaggeration'
  }
};

var pack = require('compromise-plugin');
var tinyPlugin= pack(plugin) //CRAZY_SMALL!


//then load it in nlp-compromise (it unpacks automatically)
nlp.plugin(tinyPlugin);
var doc = nlp('i saw a HUUUUGE trex').debug()
/*
  'i'           - Pronoun, Noun, Singular
  'saw'         - PastTense, Verb, VerbPhrase
  'a'           - Determiner
  'HUUUUGE'     - Exaggeration
  'trex'        - Dinosaur, Animal, Noun, Singular
*/

the cool thing about this process is that the pack() step can be as slow as we'd like. It can do all-sorts of laborious things up-front, to ensure the plugin can 'pop' back into uncompressed form very quickly.

CLI

if you prefer, you can integrate compromise-plugininto your workflow from the command-line:

npm i -g compromise-plugin
#pack it..
compromise-pack ./path/to/myPlugin.js | ./plugin.min.js

#unpack it..
compromise-unpack ./path/to/plugin.min.js

Compatibility

the compromise plugin spec will change over time, and to avoid having to remember which versions line-up, we will try to use the same major-version numbers as compromise.

so if you want a plugin to work with comprimise v12, publish it with compromise-plugin@12.*.*

Other examples

//military-words
{
  plurals:{
    barracks:'barracks'
  },
  patterns:{
    "#Ordinal infantry? division":'Noun',
    "major (general|lieutenant|#Person)":'Person',
    "#Posessive six":'Noun',
    "over$":'Expression'
  },
  words:{
    'niner':'Value',
    'buck sergeant':'Person'
  }
}

MIT

Repository

https://github.com/nlp-compromise/compromise-plugin


上一篇:efrt
下一篇:理解CSS布局和块格式化上下文

相关推荐

  • 错误ocurredjsplugin.3005

    Nanoselvakumar(https://stackoverflow.com/users/2217462/nano)提出了一个问题:An error has ocurredJSPlugin.300...

    2 年前
  • 详解html-webpack-plugin用法全解

    htmlwebpackplugin 可能用过的 webpack 的童鞋都用过这个 plugin ,就算没用过可能也听过。我们在学习webpack的时候,可能经常会看到这样的一段代码。

    2 年前
  • 编写你的第一个 Babel Plugin

    现在我们用 React 和 Vue 开发项目时,package.json 文件都会有 babel 的依赖,还会依赖于一些插件。什么是 babel,怎么样写一个 babel 插件呢,看完你就明白了。

    5 个月前
  • 深入理解 Eslint (手把手教你撸一个plugin)

    前言 虽然现在已经有很多实用的 ESHint 插件了,但随着项目不断迭代发展,你可能会遇到已有 ESHint 插件不能满足现在团队开发的情况。这时候,你需要自己来创建一个 ESHint 插件。

    8 个月前
  • 深入webpack打包原理,loader和plugin的实现

    本文讨论的核心内容如下: webpack进行打包的基本原理 如何自己实现一个loader和plugin 注: 本文使用的webpack版本是v4.43.0, webpackcli版本是v3.3.1...

    1 个月前
  • 浅谈webpack之plugin,webpack-manifest-plugin源码解读

    先简单说一下这个插件的功能,生成一份资源清单的json文件,如下 clipboard.png(https://img.javascriptcn.com/ed89d383b19ac08d5bf4856...

    1 年前
  • 有人可以解释的commonschunkplugin WebPACK '

    Dimitris Karagiannis(https://stackoverflow.com/users/4651083/dimitriskaragiannis)提出了一个问题:Can someone...

    2 年前
  • 手把手教你开发一个babel-plugin

    需求 在最近的开发过程中,不同的项目、不同的页面都需要用到某种UI控件,于是很自然的将这些UI控件拆出来,单独建立了一个代码库进行维护。下面是我的组件库大致的目录结构如下: 整个组件库的出口...

    2 年前
  • 实用webpack插件之ProvidePlugin

    现代化前端的全局引入是一个很有趣的东西。 先来看下以下几个场景: 在webpack中,我们可以在resolve的alias中定义一个层级较高的目录为一个自定义变量。

    1 个月前
  • 如何使用 extract-text-webpack-plugin 导出多个文件

    最近写 Vue 遇到了问题,来自于这里 自定义块(https://vueloader.vuejs.org/zhcn/configurations/customblocks.html); 简单来说,我...

    2 年前

官方社区

扫码加入 JavaScript 社区