leveldb-naive-bayes
v1.0.0
Published
Bayes text classifier that runs on top of leveldb
Downloads
3
Readme
leveldb-naive-bayes
Naive Bayes text classifier that runs on top of leveldb. Based on the bayes module. It returns log-probabilities. Log_probaility
npm install leveldb-naive-bayes
Usage
var bayes = require('syzer-level-naive-bayes')
var nb = bayes(db) // where db is a levelup instance
nb.train('positive', 'amazing, awesome movie!! Yeah!! Oh boy.', function() {
nb.train('positive', 'this is incredibly, amazing, perfect, great!', function() {
nb.train('negative', 'terrible, shitty thing. Damn. Sucks!!', function() {
nb.classify('awesome, cool, amazing!! Yay.', function(err, out) {
console.log('category is '+out.category)
console.log('probability is '+out.match)
})
})
})
})
API
nb = bayes(db, [options])
Creates a new instance. db
should be a levelup.
Options include:
{
tokenize: function(str) {
return str.split(' ') // Pass in a custom tokenizer
},
frequency: function(tokens) {
// Pass in a custom frequency generator
var table = {}
tokens.forEach(function (token) {
table[token] = (table[token] || 0) + 1
})
return table
}
}
nb.train(category, text, cb)
Train the classifier with the given text for a category. If the text is already tokenized pass in an array of tokens instead of text
nb.classify(text, cb)
Classify the given text into a category. If the text is already tokenized pass in an array of tokens instead of text
nb.trainAsync(category, text)
Returns a promise of finished training, usage:
nb.trainAsync('positive', 'amazing, awesome movie!! Yeah!! Oh boy.').then(function () {
return nb.classify('awesome, cool, amazing!! Yay.', function (err, out) {
console.log('positive', out.category);
})
})
nb.classifyAsync(text)
Returns a promise of finished classification
var thingsToDo = [
nb.trainAsync('positive', 'Sweet, this is incredibly, amazing, perfect, great!!'),
nb.trainAsync('positive', 'amazing, awesome movie!! Yeah!! Oh boy.'),
nb.trainAsync('negative', 'terrible, shitty thing. Damn. Sucks!!')
];
q.all(thingsToDo)
.then(function () {
return nb.classifyAsync('awesome, cool, amazing!! Yay.')
})
.then(function (category) {
console.log(category, 'should be positive')
})
nb.classifyLabelsAsync(text)
Returns a promise of finished classification, usage:
var thingsToDo = [
nb.trainAsync('positive', 'Sweet, this is incredibly, amazing, perfect, great!!'),
nb.trainAsync('neutral', 'amazing, awesome movie!! Yeah!! Oh boy.'),
nb.trainAsync('negative', 'terrible, shitty thing. Damn. Sucks!!')
];
q.all(thingsToDo)
.then(() => (nb.classifyLabelsAsync('awesome, cool, amazing!! Yay.')))
.then((labels) => {
console.log(labels[0].label, 'should be neutral')
console.log(labels[0].logProb, 'should be logProbability')
console.log(labels[1].label, 'should be second guess')
console.log(labels[1].logProb, 'should be logProbability')
})
Tests
npm test
License
MIT