-
Notifications
You must be signed in to change notification settings - Fork 2
/
language_classifier.js
43 lines (37 loc) · 1.07 KB
/
language_classifier.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
"use strict";
var fs = require('fs');
var Q = require('q');
class LanguageClassifier {
constructor() {
const Classifier = require('classifier');
this.clf = new Classifier.Bayesian();
this.languages = ["english", "french", "italian"]
}
/* uses trainLanguage to train each single supported language */
trainLanguages() {
let self=this;
return Q.all(this.languages.map((language)=>{
return self.trainLanguage(language);
}));
}
/* Laods the txt and splits it in phrases, one each line.
* Each phrase il will be used to train the language label
*/
trainLanguage(language) {
let self = this;
let deferred = Q.defer();
let path = `training_data/${language}.txt`;
fs.readFile(path,(err,data)=>{
var phrases = data.toString().split("\n");
phrases.forEach((phrase)=>{
self.clf.train(phrase,language);
});
console.log(phrases.length + " phrases in "+language);
deferred.resolve()
});
return deferred.promise;
}
/* returnes the result as label */
classify(phrase) { return this.clf.classify(phrase) }
}
module.exports = LanguageClassifier;