X Tutup
The Wayback Machine - https://web.archive.org/web/20201125091803/https://github.com/botpress/node-fasttext
Skip to content
master
Go to file
Code
This branch is 26 commits ahead of vunb:master.

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

node-fasttext

Nodejs binding for fasttext representation and classification.

MIT License npm version downloads Travis Appveyor

This is a link to the Facebook fastText. A Library for efficient text classification and representation learning.

  • FASTTEXT_VERSION = 12;
  • FASTTEXT_FILEFORMAT_MAGIC_INT32 = 793712314;

Installation

Using npm:

npm install fasttext --save

fastText Classifier

According to fasttext.cc. We have a simple classifier for executing prediction models about cooking from stackexchange questions:

const path = require('path')
const fastText = require('fasttext')

const model = path.resolve(__dirname, './model_cooking.bin')
const classifier = new fastText.Classifier(model)

classifier.predict('Why not put knives in the dishwasher?', 5).then(res => {
  if (res.length > 0) {
    let tag = res[0].label // __label__knives
    let confidence = res[0].value // 0.8787146210670471
    console.log('classify', tag, confidence, res)
  } else {
    console.log('No matches')
  }
})

The model haved trained before with the followings params:

const path = require('path')
const fastText = require('fasttext')

let data = path.resolve(path.join(__dirname, '../data/cooking.train.txt'))
let model = path.resolve(path.join(__dirname, '../data/cooking.model'))

let classifier = new fastText.Classifier()
let options = {
  input: data,
  output: model,
  loss: 'softmax',
  dim: 200,
  bucket: 2000000
}

classifier.train('supervised', options).then(res => {
  console.log('model info after training:', res)
  // Input  <<<<< C:\projects\node-fasttext\test\data\cooking.train.txt
  // Output >>>>> C:\projects\node-fasttext\test\data\cooking.model.bin
  // Output >>>>> C:\projects\node-fasttext\test\data\cooking.model.vec
})

Or you can train directly from the command line with fasttext builded from official source:

# Training
~/fastText/data$ ./fasttext supervised -input cooking.train -output model_cooking -lr 1.0 -epoch 25 -wordNgrams 2 -bucket 200000 -dim 50 -loss hs
Read 0M words
Number of words:  8952
Number of labels: 735
Progress: 100.0%  words/sec/thread: 1687554  lr: 0.000000  loss: 5.247591  eta: 0h0m 4m

# Testing
~/fastText/data$ ./fasttext test model_cooking.bin cooking.valid
N       3000
P@1     0.587
R@1     0.254
Number of examples: 3000

Nearest neighbor

Simple class for searching nearest neighbors:

const path = require('path')
const fastText = require('fasttext')

const model = path.resolve(__dirname, './skipgram.bin')
const query = new fastText.Query(model)

query.nn('word', 5, (err, res) => {
  if (err) {
    console.error(err)
  } else if (res.length > 0) {
    let tag = res[0].label // letter
    let confidence = res[0].value // 0.99992
    console.log('Nearest neighbor', tag, confidence, res)
  } else {
    console.log('No matches')
  }
})

Build from source

See Installation Prerequisites.

Make sure you checked-out fastText submodule: git submodule update --init

If you're building for Linux, run ./linux-build.sh before

# install dependencies and tools
npm install

# build node-fasttext from source
npm run build

# run unit-test
npm test

Contributing

Pull requests and stars are highly welcome.

For bugs and feature requests, please create an issue.

About

Nodejs binding for fasttext representation and classification.

Resources

License

Packages

No packages published
You can’t perform that action at this time.
X Tutup