https://github.com/ladjs/naivebayes
A ladjs naivebayes package forked from `https://github.com/surmon-china/naivebayes`
https://github.com/ladjs/naivebayes
Last synced: 6 months ago
JSON representation
A ladjs naivebayes package forked from `https://github.com/surmon-china/naivebayes`
- Host: GitHub
- URL: https://github.com/ladjs/naivebayes
- Owner: ladjs
- License: mit
- Created: 2020-06-05T23:32:30.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-12-07T01:49:26.000Z (about 2 years ago)
- Last Synced: 2025-06-03T23:51:31.327Z (7 months ago)
- Language: JavaScript
- Size: 490 KB
- Stars: 12
- Watchers: 4
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# [**@ladjs/naivebayes**](https://github.com/ladjs/naivebayes)
[](https://travis-ci.com/shaunwarman/naivebayes)
[](https://codecov.io/gh/shaunwarman/naivebayes)
[](https://github.com/sindresorhus/xo)
[](https://github.com/prettier/prettier)
[](https://lass.js.org)
[](https://npm.im/@ladjs/naivebayes)
> A ladjs naivebayes package forked from surmon-china/naivebayes
## Table of Contents
* [What can I use this for](#what-can-i-use-this-for)
* [Install](#install)
* [npm](#npm)
* [yarn](#yarn)
* [Usage](#usage)
* [API](#api)
* [Class](#class)
* [Learn](#learn)
* [Probabilities](#probabilities)
* [Categorize](#categorize)
* [ToJson](#tojson)
* [ToJsonObject](#tojsonobject)
* [FromJson](#fromjson)
* [Debug](#debug)
* [Contributors](#contributors)
## What can I use this for
Naive-Bayes classifier for JavaScript.
`naivebayes` takes a document (piece of text), and tells you what category that document belongs to.
You can use this for categorizing any text content into any arbitrary set of **categories**. For example:
* Is an email **spam**, or **not spam** ?
* Is a news article about **technology**, **politics**, or **sports** ?
* Is a piece of text expressing **positive** emotions, or **negative** emotions?
## Install
### npm
```sh
npm install @ladjs/naivebayes
```
### yarn
```sh
yarn add @ladjs/naivebayes
```
## Usage
```javascript
const NaiveBayes = require('naivebayes')
const classifier = new NaiveBayes()
// teach it positive phrases
classifier.learn('amazing, awesome movie!! Yeah!! Oh boy.', 'positive')
classifier.learn('Sweet, this is incredibly, amazing, perfect, great!!', 'positive')
// teach it a negative phrase
classifier.learn('terrible, cruddy thing. Damn. Sucks!!', 'negative')
// now ask it to categorize a document it has never seen before
classifier.categorize('awesome, cool, amazing!! Yay.')
// => 'positive'
// serialize the classifier's state as a JSON string.
const stateJson = classifier.toJson()
// load the classifier back from its JSON representation.
const revivedClassifier = NaiveBayes.fromJson(stateJson)
```
```javascript
const NaiveBayes = require('naivebayes')
const Segment = require('segment')
const segment = new Segment()
segment.useDefault()
const classifier = new NaiveBayes({
tokenizer(sentence) {
const sanitized = sentence.replace(/[^(a-zA-Z\u4e00-\u9fa50-9_)+\s]/g, ' ')
return segment.doSegment(sanitized, { simple: true })
}
})
```
## API
### Class
```javascript
const classifier = new NaiveBayes([options])
```
Returns an instance of a Naive-Bayes Classifier.
#### Options
* `tokenizer(text)` - (type: `function`) - Configure your own tokenizer.
* `vocabularyLimit` - (type: `number` default: 0) - Reference a max word count where `0` is the default, meaning no limit.
* `stopwords` - (type: `boolean` default: false) - To remove [stopwords](https://en.wikipedia.org/wiki/Stop_words) from text
Eg.
```javascript
const classifier = new NaiveBayes({
tokenizer(text) {
return text.split(' ')
}
})
```
### Learn
```javascript
classifier.learn(text, category)
```
Teach your classifier what `category` the `text` belongs to. The more you teach your classifier, the more reliable it becomes. It will use what it has learned to identify new documents that it hasn't seen before.
### Probabilities
```javascript
classifier.probabilities(text)
```
Returns an array of `{ category, probability }` objects with probability calculated for each category. Its judgement is based on what you have taught it with `.learn()`.
### Categorize
```javascript
classifier.categorize(text ,[probability])
```
Returns the `category` it thinks `text` belongs to. Its judgement is based on what you have taught it with `.learn()`.
### ToJson
```javascript
classifier.toJson()
```
Returns the JSON representation of a classifier. This is the same as `JSON.stringify(classifier.toJsonObject())`.
### ToJsonObject
```javascript
classifier.toJsonObject()
```
Returns a JSON-friendly representation of the classifier as an `object`.
### FromJson
```javascript
const classifier = NaiveBayes.fromJson(jsonObject)
```
Returns a classifier instance from the JSON representation. Use this with the JSON representation obtained from `classifier.toJson()`.
### Debug
To run `naivebayes` in debug mode simply set `DEBUG=naivebayes` when running your script.
## Contributors
| Name | Website |
| ---------------- | -------------------------- |
| **Surmon** | |
| **Shaun Warman** | |