Comparing version 0.0.56 to 0.0.57
@@ -23,10 +23,14 @@ /* | ||
var PorterStemmer = require('../stemmers/porter_stemmer'); | ||
var PorterStemmer = require('../stemmers/porter_stemmer'), | ||
sys = require('sys'), | ||
Classifier = require('./classifier'); | ||
var BayesClassifier = function(stemmer) { | ||
Classifier.call(this, stemmer); | ||
this.categories = {}; | ||
this.categoryTotals = {}; | ||
this.stemmer = stemmer || PorterStemmer; | ||
}; | ||
sys.inherits(BayesClassifier, Classifier); | ||
var textToTokens = function(text) { | ||
@@ -97,26 +101,11 @@ if(typeof text === 'string') | ||
var save = function(filename, callback) { | ||
var data = JSON.stringify(this); | ||
var fs = require('fs'); | ||
fs.writeFile(filename, data, encoding='utf8', callback); | ||
}; | ||
function load(filename, callback, stemmer) { | ||
var fs = require('fs'); | ||
fs.readFile(filename, encoding='utf8', function(err, data) { | ||
var classifier; | ||
if(!err) { | ||
classifier = restore(JSON.parse(data), stemmer); | ||
} | ||
if(callback) | ||
callback(err, classifier); | ||
function load(filename, callback) { | ||
Classifier.load(filename, function(err, classifier) { | ||
callback(err, restore(classifier)); | ||
}); | ||
}; | ||
} | ||
function restore(classifier, stemmer) { | ||
classifier = typeof classifier == 'string' ? JSON.parse(classifier) : classifier; | ||
classifier.prototype = BayesClassifier.prototyope; | ||
classifier.train = train; | ||
@@ -126,3 +115,2 @@ classifier.textToTokens = textToTokens; | ||
classifier.classify = classify; | ||
classifier.save = save; | ||
classifier.getClassification = getClassification; | ||
@@ -138,3 +126,2 @@ classifier.stemmer = stemmer || PorterStemmer; | ||
BayesClassifier.prototype.classify = classify; | ||
BayesClassifier.prototype.save = save; | ||
BayesClassifier.prototype.getClassification = getClassification; | ||
@@ -141,0 +128,0 @@ BayesClassifier.load = load; |
@@ -32,2 +32,3 @@ /* | ||
exports.BayesClassifier = require('./classifiers/bayes_classifier'); | ||
exports.LogisticRegressionClassifier = require('./classifiers/logistic_regression_classifier'); | ||
exports.NounInflector = require('./inflectors/noun_inflector'); | ||
@@ -34,0 +35,0 @@ exports.PresentVerbInflector = require('./inflectors/present_verb_inflector'); |
@@ -28,13 +28,19 @@ /* | ||
function get(location, callback) { | ||
var buff = new Buffer(4096); | ||
var buff = new Buffer(4096); | ||
this.open(function(err, fd, done) { | ||
WordNetFile.appendLineChar(fd, location, 0, buff, function(line) { | ||
done(); | ||
var data = line.split('| '); | ||
var tokens = data[0].split(/\s+/); | ||
var ptrs = []; | ||
for(var i = 0; i < parseInt(tokens[6], 10); i++) { | ||
ptrs.push({ | ||
done(); | ||
var data = line.split('| '); | ||
var tokens = data[0].split(/\s+/); | ||
var ptrs = []; | ||
var wCnt = parseInt(tokens[3], 10); | ||
var synonyms = []; | ||
for(var i = 0; i < wCnt; i++) { | ||
synonyms.push(tokens[4 + i * 2]); | ||
} | ||
for(var i = 0; i < parseInt(tokens[6], 10); i++) { | ||
ptrs.push({ | ||
pointerSymbol: tokens[7 + i * 4], | ||
@@ -44,20 +50,20 @@ synsetOffset: parseInt(tokens[8 + i * 4], 10), | ||
sourceTarget: tokens[10 + i * 4] | ||
}); | ||
} | ||
}); | ||
} | ||
callback({ | ||
synsetOffset: parseInt(tokens[0], 10), | ||
lexFilenum: parseInt(tokens[1], 10), | ||
pos: tokens[2], | ||
wCnt: parseInt(tokens[3], 10), | ||
lemma: tokens[4], | ||
lexId: tokens[5], | ||
ptrs: ptrs, | ||
gloss: data[1] | ||
}); | ||
}); | ||
}); | ||
synsetOffset: parseInt(tokens[0], 10), | ||
lexFilenum: parseInt(tokens[1], 10), | ||
pos: tokens[2], | ||
wCnt: wCnt, | ||
lemma: tokens[4], | ||
synonyms: synonyms, | ||
lexId: tokens[5], | ||
ptrs: ptrs, | ||
gloss: data[1] | ||
}); | ||
}); | ||
}); | ||
} | ||
var DataFile = function(dataDir, base, name) { | ||
@@ -64,0 +70,0 @@ WordNetFile.call(this, dataDir, base, 'data.' + name); |
{ | ||
"name": "natural", | ||
"description": "General natural language (tokenizing, stemming, classification, inflection, phonetics, tfidf, WordNet) facilities for node.", | ||
"version": "0.0.56", | ||
"version": "0.0.57", | ||
"engines": { | ||
@@ -6,0 +6,0 @@ "node": ">=0.2.6" |
@@ -443,2 +443,3 @@ | ||
console.log(result.lemma); | ||
console.log(result.synonyms); | ||
console.log(result.pos); | ||
@@ -458,50 +459,5 @@ console.log(result.gloss); | ||
console.log(result.gloss); | ||
console.log(result.synonyms); | ||
}); | ||
You can also lookup synonyms for all meanings of a word. | ||
var wordnet = new natural.WordNet('.'); | ||
wordnet.lookupSynonyms('device', function(results) { | ||
results.forEach(function(result) { | ||
console.log('------------------------------------'); | ||
console.log(result.synsetOffset); | ||
console.log(result.pos); | ||
console.log(result.lemma); | ||
console.log(result.pos); | ||
console.log(result.gloss); | ||
}); | ||
}); | ||
It's also possible to lookup synonyms for a single meaning. | ||
var wordnet = new natural.WordNet('.'); | ||
wordnet.lookup('entity', function(results) { | ||
wordnet.getSynonyms(results[0], function(results) { | ||
results.forEach(function(result) { | ||
console.log('------------------------------------'); | ||
console.log(result.synsetOffset); | ||
console.log(result.pos); | ||
console.log(result.lemma); | ||
console.log(result.pos); | ||
console.log(result.gloss); | ||
}); | ||
}); | ||
}); | ||
Note that getSynonyms supports query by offset and part of speech. | ||
var wordnet = new natural.WordNet('.'); | ||
wordnet.getSynonyms(4424418, 'n', function(results) { | ||
results.forEach(function(result) { | ||
console.log('------------------------------------'); | ||
console.log(result.lemma); | ||
console.log(result.pos); | ||
console.log(result.gloss); | ||
}); | ||
}); | ||
Princeton University "About WordNet." WordNet. Princeton University. 2010. <http://wordnet.princeton.edu> | ||
@@ -508,0 +464,0 @@ |
@@ -23,3 +23,3 @@ /* | ||
var natural = new require('lib/natural'); | ||
var natural = require('lib/natural'); | ||
@@ -26,0 +26,0 @@ describe('bayes classifier', function() { |
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
242190
79
4760
1
492