Code Monkey home page Code Monkey logo

wink-ner's Introduction

wink-ner

Language agnostic named entity recognizer

Build Status Coverage Status Inline docs dependencies Status devDependencies Status Gitter

Recognize named entities in a sentence using wink-ner. It is a smart Gazetteer-based Named Entity Recognizer (NER), which can be easily trained to suite specific needs. For example, the wink-ner can differentiate between Manchester United & Manchester in a single sentence and tag them as a club and city respectively.

Installation

Use npm to install:

npm install wink-ner --save

Getting Started

Named Entity Recognition

// Load wink ner.
var ner = require( 'wink-ner' );
// Create your instance of wink ner & use default config.
var myNER = ner();
// Define training data.
var trainingData = [
  { text: 'manchester united', entityType: 'club', uid: 'manu' },
  { text: 'manchester', entityType: 'city' },
  { text: 'U K', entityType: 'country', uid: 'uk' }
];
// Learn from the training data.
myNER.learn( trainingData );
// Since recognize() requires tokens, use wink-tokenizer.
var winkTokenizer = require( 'wink-tokenizer' );
// Instantiate it and extract tokenize() api.
var tokenize = winkTokenizer().tokenize;
// Tokenize the sentence.
var tokens = tokenize( 'Manchester United is a football club based in Manchester, U. K.' );
// Simply Detect entities!
tokens = myNER.recognize( tokens );
console.log( tokens );
// -> [
//      { entityType: 'club', uid: 'manu', originalSeq: [ 'Manchester', 'United' ],
//        value: 'manchester united', tag: 'word' },
//      { value: 'is', tag: 'word' },
//      { value: 'a', tag: 'word' },
//      { value: 'football', tag: 'word' },
//      { value: 'club', tag: 'word' },
//      { value: 'based', tag: 'word' },
//      { value: 'in', tag: 'word' },
//      { entityType: 'city', value: 'Manchester', tag: 'word',
//        originalSeq: [ 'Manchester' ], uid: 'manchester' },
//      { value: ',', tag: 'punctuation' },
//      { entityType: 'country', uid: 'uk', originalSeq: [ 'U', '.', 'K' ],
//        value: 'u k', tag: 'word' },
//      { value: '.', tag: 'punctuation' }
//    ]

Integration with POS Tagging

The tokens returned from recognize() may be further passed down to tag() api of wink-pos-tagger for pos tagging.

Just in case you need to assign a specific pos tag to an entity, the same can be achieved by including a property pos in the entity definition and assigning it the desired pos tag (e.g. 'NNP'); the wink-pos-tagger will automatically do the needful. For details please refer to learn() api of wink-ner.

// Load pos tagger.
var tagger = require( 'wink-pos-tagger' );
// Instantiate it and extract tag api.
var tag = tagger().tag;
tokens = tag( tokens );
console.log( tokens );
// -> [ { entityType: 'club', uid: 'manu', originalSeq: [ 'Manchester', 'United' ],
//        value: 'manchester united', tag: 'word', normal: 'manchester united', pos: 'NNP' },
//      { value: 'is', tag: 'word', normal: 'is', pos: 'VBZ', lemma: 'be' },
//      { value: 'a', tag: 'word', normal: 'a', pos: 'DT' },
//      { value: 'football', tag: 'word', normal: 'football', pos: 'NN', lemma: 'football' },
//      { value: 'club', tag: 'word', normal: 'club', pos: 'NN', lemma: 'club' },
//      { value: 'based', tag: 'word', normal: 'based', pos: 'VBN', lemma: 'base' },
//      { value: 'in', tag: 'word', normal: 'in', pos: 'IN' },
//      { value: 'Manchester', tag: 'word', originalSeq: [ 'Manchester' ],
//        uid: 'manchester', entityType: 'city', normal: 'manchester', pos: 'NNP' },
//      { value: ',', tag: 'punctuation', normal: ',', pos: ',' },
//      { entityType: 'country', uid: 'uk', originalSeq: [ 'U', '.', 'K' ],
//        value: 'u k', tag: 'word', normal: 'u k', pos: 'NNP' },
//      { value: '.', tag: 'punctuation', normal: '.', pos: '.' }
//    ]

Documentation

Check out the named entity recognizer API documentation to learn more.

Need Help?

If you spot a bug and the same has not yet been reported, raise a new issue or consider fixing it and sending a pull request.

About wink

Wink is a family of open source packages for Statistical Analysis, Natural Language Processing and Machine Learning in NodeJS. The code is thoroughly documented for easy human comprehension and has a test coverage of ~100% for reliability to build production grade solutions.

Copyright & License

wink-ner is copyright 2017-20 GRAYPE Systems Private Limited.

It is licensed under the terms of the MIT License.

wink-ner's People

Contributors

sanjayaksaxena avatar prtksxna avatar kostasx avatar dependabot[bot] 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.