New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

natural-content

Package Overview
Dependencies
Maintainers
1
Versions
23
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

natural-content - npm Package Compare versions

Comparing version 1.0.9 to 1.0.10

.eslintrc

351

index.js

@@ -1,24 +0,23 @@

var _ = require('underscore');
var diacritics = require('./lib/diacritics.js');
var WORD_SEPARATOR = " ";
var STATEMENT_SEPARATOR = "##";
var EMPTY = "";
const _ = require('underscore');
const diacritics = require('./lib/diacritics.js');
const WORD_SEPARATOR = ' ';
const STATEMENT_SEPARATOR = '##';
/**
* Get all statements
*
* @param Text or HTML content (String)
* @return an array of statements
*/
function getStatements (text) {
return text.replace(/[\n\r]/g, WORD_SEPARATOR) // Convert end of line
* getStatements - Get all statements from a text
*
* @param {string} text the text from which we want to extract the statements
* @returns {Array} an array of statements
*/
function getStatements(text) {
return text.replace(/[\n\r]/g, WORD_SEPARATOR) // Convert end of line
.replace(/[\t]/g, WORD_SEPARATOR) // Remove Tabs
.replace(/ /gi,WORD_SEPARATOR)// remove HTML entities, only non breaking space
.replace(/(<([^>]+)>)/ig, WORD_SEPARATOR) // remove HTML tags
.replace(/&nbsp;/gi, WORD_SEPARATOR)// remove HTML entities, only non breaking space
.replace(/(<([^>]+)>)/ig, WORD_SEPARATOR) // remove HTML tags
.replace(/ +/g, WORD_SEPARATOR) // remove multiple spaces
.replace(/[.]/g, "." + STATEMENT_SEPARATOR)
.replace(/[!]/g, "!" + STATEMENT_SEPARATOR)
.replace(/[?]/g, "?" + STATEMENT_SEPARATOR)
.replace(/[.]/g, `.${ STATEMENT_SEPARATOR }`)
.replace(/[!]/g, `!${ STATEMENT_SEPARATOR }`)
.replace(/[?]/g, `?${ STATEMENT_SEPARATOR }`)
.split(STATEMENT_SEPARATOR);

@@ -28,38 +27,37 @@ }

/**
* Remove all special caracters, symbols & digits
* removeSpecials - Remove specials caracters from a text
*
* @param a text as a String
* @return The text without special caracters
* @param {string} text the text
* @returns {string} the same text without specials caracters
*/
function removeSpecials(text) {
var cleanText = text.replace(/[\t]/g, WORD_SEPARATOR) // Remove Tabs
const cleanText = text.replace(/[\t]/g, WORD_SEPARATOR) // Remove Tabs
.replace(/[\n\r]/g, WORD_SEPARATOR)
.replace(/&nbsp;/gi,WORD_SEPARATOR)// remove HTML entities, only non breaking space
.replace(/(<([^>]+)>)/ig,WORD_SEPARATOR) // remove HTML tags
.replace(/&nbsp;/gi, WORD_SEPARATOR)// remove HTML entities, only non breaking space
.replace(/(<([^>]+)>)/ig, WORD_SEPARATOR) // remove HTML tags
.replace(/[|&’«»'"\/(\/)\/!\/?\\-]/g, WORD_SEPARATOR);
const lower = cleanText.toLowerCase();
const upper = cleanText.toUpperCase();
var lower = cleanText.toLowerCase();
var upper = cleanText.toUpperCase();
let result = '';
var result = "";
for(var i=0; i<lower.length; ++i) {
if(lower[i] !== upper[i] || lower[i].trim() === ''){
result += cleanText[i];
}
for (let i = 0; i < lower.length; ++i) {
if (lower[i] !== upper[i] || lower[i].trim() === '') {
result += cleanText[i];
}
}
// remove multiple spaces
result = result.replace(/\s+/g, WORD_SEPARATOR);
result = result.replace(/\s+/g, WORD_SEPARATOR); // remove multiple spaces
return result;
return result;
}
/**
* Remove all diacritics from a text
*
*
* @param a text as a String
* @return the text without diacritics
*/
* removeDiacritics - Remove all diacritics from a text
*
* @param {string} text the text
* @returns {string} the same text without diacritics
*/
function removeDiacritics(text) {

@@ -76,11 +74,19 @@ return diacritics.remove(text);

* @param the iso code for the target language
* @return an array of words (string)
* @returns an array of words (string)
*/
function getWords (text, withStopWords, language) {
var words = text.replace(/[\n\r]/g, WORD_SEPARATOR) // Convert end of line
/**
* getWords - Get all words from a Text
*
* @param {string} text the text
* @param {boolean} withStopWords if the stop words will be remove
* @param {string} language language code (fr, en, ...)
* @returns {string} an array of words
*/
function getWords(text, withStopWords, language) {
const words = text.replace(/[\n\r]/g, WORD_SEPARATOR) // Convert end of line
.replace(/[\t]/g, WORD_SEPARATOR) // Remove Tabs
.replace(/&nbsp;/gi,WORD_SEPARATOR) // remove HTML entities, only non breaking space
.replace(/(<([^>]+)>)/ig,WORD_SEPARATOR) // remove HTML tags
.replace(/['’«»";:,.\/(\/)\/!\/?\\-]/g, WORD_SEPARATOR) // Remove punctuations
.replace(/&nbsp;/gi, WORD_SEPARATOR) // remove HTML entities, only non breaking space
.replace(/(<([^>]+)>)/ig, WORD_SEPARATOR) // remove HTML tags
.replace(/['’«»";:,.\/(\/)\/!\/?\\-]/g, WORD_SEPARATOR) // Remove punctuations
.replace(/\s+/g, WORD_SEPARATOR) // remove multiple spaces

@@ -90,13 +96,12 @@ .toLowerCase()

// Remove empty string
if (withStopWords) {
return _.filter(words, function(word){return (word !== '') ; });
return words.filter((word) => word !== '');
}
// Remove empty string & stopwords
else {
var stopwords = require("./lib/stopwords-" + language).stopwords;
return _.filter(words, function(word){return (word !== '' && stopwords.indexOf(removeDiacritics(word)) === -1); });
}
const { stopwords } = require(`./lib/stopwords-${ language }`);
return words.filter((word) => word !== '' && stopwords.indexOf(removeDiacritics(word)) === -1);
}

@@ -109,23 +114,34 @@

* @param the cardinality of the grams
* @return an array of ngrams value (string)
* @returns an array of ngrams value (string)
*/
function getNgrams(words, n) {
var result = [];
var count = _.max([0, words.length - n + 1]);
for (var i = 0; i < count; i++) {
var slice = words.slice(i, i + n);
// Convert the ngram array into a ngram string and add it in the result list
result.push(_.reduce(slice, function(memo, word){ return (memo ? memo + " " + word : word);}));
}
return result;
/**
* getNgrams - get an array of ngrams
*
* @param {Array} words an array of word
* @param {number} n number of words to build the ngram elements
* @returns {Array} an array of ngrams
*/
function getNgrams(words, n) {
const result = [];
const count = _.max([ 0, words.length - n + 1 ]);
for (let i = 0; i < count; i++) {
const slice = words.slice(i, i + n);
// Convert the ngram array into a ngram string and add it in the result list
result.push(_.reduce(slice, (memo, word) => memo ? `${ memo } ${ word }` : word));
}
return result;
}
/**
* Get the term frequency (tf) of each word of a document
* getTf - Get the term frequency (tf) of each word of a document
*
* @param an array of words (String) matching to the document content.
* @param ngrams cardinality (optional). Has to be > 0
* @param number of documents for each word (optional). Those value can be used later for the IDF computation
* @return a TF json structure :
* @param {string} words array of words (String) matching to the document content
* @param {number} n cardinality of the ngrams (optional). Has to be > 0
* @param {object} stats the current stat aout the word or ngrams (could be null). This is used to compute the tf/idf
* @returns {object} F json structure :
* {

@@ -138,80 +154,74 @@ * count : an array of word with the number of occurence in the document (the array index matches to the word)

function getTf(words, n, stats) {
let ws = words;
var ws = words;
if (n && n > 1) {
ws = getNgrams(words, n);
}
var count = _.countBy(ws, function(word) { return word; });
var max = _.max(count);
var tfs = {};
if (n && n > 1) {
ws = getNgrams(words, n);
}
_.keys(count).forEach(function(word) {
const count = _.countBy(ws, (word) => word);
const max = _.max(count);
const tfs = {};
// Calculate the tf for this word
tfs[word] = count[word]/max;
_.keys(count).forEach((word) => {
// Calculate the tf for this word
tfs[word] = count[word] / max;
// Update stats
if (stats) {
// Update stats
if (stats) {
// Calculate sum & register the tf for min & max computation
if (stats.has(word) && stats.get(word).tfs) {
const wordStat = stats.get(word);
// Calculate sum & register the tf for min & max computation
if (stats.has(word) && stats.get(word).tfs) {
var wordStat = stats.get(word);
// update the number of documents for this word
wordStat.nbrDocs++ ;
// update the number of documents for this word
wordStat.nbrDocs++;
// Add the tf in the list of all tfs for this word
wordStat.tfs.push(tfs[word]);
wordStat.tfSum += tfs[word];
}
else {
var newWordStat = initWordStat(word, tfs[word]);
stats.set(word, newWordStat);
}
}
// Add the tf in the list of all tfs for this word
wordStat.tfs.push(tfs[word]);
wordStat.tfSum += tfs[word];
} else {
const newWordStat = initWordStat(word, tfs[word]);
});
stats.set(word, newWordStat);
}
}
});
return {
count : count,
tfs : tfs,
max : max
};
return {
count,
tfs,
max
};
}
/**
* Get the tfIdf for each word of a document
*
*
* @param the document represented by an term frequency array.
* the function getTf can be used for generating the term frequency array
* @param the number of document per word (index = word)
* @param the number of documents
* @param the stats about the words for the full set of documents
* @return
*/
* geTfIdf - Get the tfIdf for each word of a document
*
* @param {object} document the document represented by an term frequency array.
* @param {number} nbrDocs the number of documents
* @param {object} stats stats about the words for the full set of documents
* @returns {object} the tf/idf info for this document
*/
function geTfIdf(document, nbrDocs, stats) {
const tfIdf = {};
var tfIdf = {};
_.keys(document.tfs).forEach(function(word) {
var idf = Math.log(nbrDocs/stats.get(word).nbrDocs) + 1;
tfIdf[word] = document.tfs[word] * idf;
_.keys(document.tfs).forEach((word) => {
const idf = Math.log(nbrDocs / stats.get(word).nbrDocs) + 1;
if (stats.has(word) && stats.get(word).tfIdfs && stats.get(word).idfs) {
var wordStat = stats.get(word);
tfIdf[word] = document.tfs[word] * idf;
wordStat.tfIdfs.push(tfIdf[word]);
wordStat.tfIdfSum += tfIdf[word];
wordStat.idfs.push(idf);
wordStat.idfSum += idf;
}
if (stats.has(word) && stats.get(word).tfIdfs && stats.get(word).idfs) {
const wordStat = stats.get(word);
});
wordStat.tfIdfs.push(tfIdf[word]);
wordStat.tfIdfSum += tfIdf[word];
wordStat.idfs.push(idf);
wordStat.idfSum += idf;
}
});
document.tfIdf = tfIdf;
return document;
document.tfIdf = tfIdf;
return document;
}
/**

@@ -224,65 +234,78 @@ * Get the TF.IDF for each words found in several documents

*/
/**
* getTfIdfs - Get the TF.IDF for each words found in several documents
*
* @param {Array} documents arrays of String matching to the document content. It could be Text or HTML
* @param {number} n ngram cardinality (optional). Has to be > 0
* @param {boolean} withStopWords if true, remove the stopwords
* @param {string} language the language code (fr, en, ... )
* @returns {object} the tf/idf for each word/ngrams
*/
function getTfIdfs(documents, n, withStopWords, language) {
const result = {};
const stats = new Map();
var result = {};
var stats = new Map();
// Calculate the TF of each words for each docs
const tfs = _.map(documents, (document) => getTf(getWords(document, withStopWords, language), n, stats));
// Calculate the TF of each words for each docs
var tfs = _.map(documents, function(document){ return getTf(getWords(document, withStopWords, language), n, stats);});
// Calculate the tf.idf for each each docs & produce stats per word
const data = _.map(tfs, (docTfs) => geTfIdf(docTfs, documents.length, stats));
// Calculate the tf.idf for each each docs & produce stats per word
var data = _.map(tfs, function(docTfs) { return geTfIdf(docTfs, documents.length, stats );});
// Calculate stats : min, max, avg for tf, idf & tf.idf
for (const wordStat of stats.values()) {
wordStat.tfMin = _.min(wordStat.tfs);
wordStat.tfMax = _.max(wordStat.tfs);
wordStat.tfAvg = wordStat.tfSum / wordStat.nbrDocs;
// Calculate stats : min, max, avg for tf, idf & tf.idf
for (var wordStat of stats.values()) {
wordStat.idfMax = _.max(wordStat.idfs);
wordStat.idfAvg = wordStat.idfSum / wordStat.nbrDocs;
wordStat.tfMin = _.min(wordStat.tfs);
wordStat.tfMax = _.max(wordStat.tfs);
wordStat.tfAvg = wordStat.tfSum / wordStat.nbrDocs;
wordStat.tfIdfMin = _.min(wordStat.tfIdfs);
wordStat.tfIdfMax = _.max(wordStat.tfIdfs);
wordStat.tfIdfAvg = wordStat.tfIdfSum / wordStat.nbrDocs;
}
wordStat.idfMax = _.max(wordStat.idfs);
wordStat.idfAvg = wordStat.idfSum / wordStat.nbrDocs;
result.documents = data;
result.numberOfDocs = documents.length;
result.stats = stats;
wordStat.tfIdfMin = _.min(wordStat.tfIdfs);
wordStat.tfIdfMax = _.max(wordStat.tfIdfs);
wordStat.tfIdfAvg = wordStat.tfIdfSum / wordStat.nbrDocs;
}
result.documents = data;
result.numberOfDocs = documents.length;
result.stats = stats;
return result;
return result;
}
/**
* Create an new Stat object for one word
* initWordStat - Create an new Stat object for one word
*
* @param {string} word the word
* @param {number} tf the tf value
* @returns {object} the stat about the word
*/
function initWordStat(word, tf) {
function initWordStat(word, tf) {
return {
word,
nbrDocs: 1,
tfSum: tf,
tfs: [ tf ],
return {
word : word,
nbrDocs : 1,
tfSum : tf,
tfs : [tf],
idfSum: 0,
idfs: [],
idfSum : 0,
idfs : [],
tfIdfSum: 0,
tfIdfs: []
tfIdfSum : 0,
tfIdfs : []
};
};
}
exports.getStatements = getStatements;
exports.removeSpecials = removeSpecials;
exports.removeDiacritics = removeDiacritics;
exports.getWords = getWords;
exports.getNgrams = getNgrams;
exports.getTf = getTf;
exports.getTfIdfs = getTfIdfs;

@@ -1,104 +0,104 @@

var defaultDiacriticsRemovalap = [
{'base':'A', 'letters':'\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F'},
{'base':'AA','letters':'\uA732'},
{'base':'AE','letters':'\u00C6\u01FC\u01E2'},
{'base':'AO','letters':'\uA734'},
{'base':'AU','letters':'\uA736'},
{'base':'AV','letters':'\uA738\uA73A'},
{'base':'AY','letters':'\uA73C'},
{'base':'B', 'letters':'\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181'},
{'base':'C', 'letters':'\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E'},
{'base':'D', 'letters':'\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779'},
{'base':'DZ','letters':'\u01F1\u01C4'},
{'base':'Dz','letters':'\u01F2\u01C5'},
{'base':'E', 'letters':'\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E'},
{'base':'F', 'letters':'\u0046\u24BB\uFF26\u1E1E\u0191\uA77B'},
{'base':'G', 'letters':'\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E'},
{'base':'H', 'letters':'\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D'},
{'base':'I', 'letters':'\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197'},
{'base':'J', 'letters':'\u004A\u24BF\uFF2A\u0134\u0248'},
{'base':'K', 'letters':'\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2'},
{'base':'L', 'letters':'\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780'},
{'base':'LJ','letters':'\u01C7'},
{'base':'Lj','letters':'\u01C8'},
{'base':'M', 'letters':'\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C'},
{'base':'N', 'letters':'\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4'},
{'base':'NJ','letters':'\u01CA'},
{'base':'Nj','letters':'\u01CB'},
{'base':'O', 'letters':'\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C'},
{'base':'OI','letters':'\u01A2'},
{'base':'OO','letters':'\uA74E'},
{'base':'OU','letters':'\u0222'},
{'base':'OE','letters':'\u008C\u0152'},
{'base':'oe','letters':'\u009C\u0153'},
{'base':'P', 'letters':'\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754'},
{'base':'Q', 'letters':'\u0051\u24C6\uFF31\uA756\uA758\u024A'},
{'base':'R', 'letters':'\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782'},
{'base':'S', 'letters':'\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784'},
{'base':'T', 'letters':'\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786'},
{'base':'TZ','letters':'\uA728'},
{'base':'U', 'letters':'\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244'},
{'base':'V', 'letters':'\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245'},
{'base':'VY','letters':'\uA760'},
{'base':'W', 'letters':'\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72'},
{'base':'X', 'letters':'\u0058\u24CD\uFF38\u1E8A\u1E8C'},
{'base':'Y', 'letters':'\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE'},
{'base':'Z', 'letters':'\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762'},
{'base':'a', 'letters':'\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250'},
{'base':'aa','letters':'\uA733'},
{'base':'ae','letters':'\u00E6\u01FD\u01E3'},
{'base':'ao','letters':'\uA735'},
{'base':'au','letters':'\uA737'},
{'base':'av','letters':'\uA739\uA73B'},
{'base':'ay','letters':'\uA73D'},
{'base':'b', 'letters':'\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253'},
{'base':'c', 'letters':'\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184'},
{'base':'d', 'letters':'\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A'},
{'base':'dz','letters':'\u01F3\u01C6'},
{'base':'e', 'letters':'\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD'},
{'base':'f', 'letters':'\u0066\u24D5\uFF46\u1E1F\u0192\uA77C'},
{'base':'g', 'letters':'\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F'},
{'base':'h', 'letters':'\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265'},
{'base':'hv','letters':'\u0195'},
{'base':'i', 'letters':'\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131'},
{'base':'j', 'letters':'\u006A\u24D9\uFF4A\u0135\u01F0\u0249'},
{'base':'k', 'letters':'\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3'},
{'base':'l', 'letters':'\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747'},
{'base':'lj','letters':'\u01C9'},
{'base':'m', 'letters':'\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F'},
{'base':'n', 'letters':'\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5'},
{'base':'nj','letters':'\u01CC'},
{'base':'o', 'letters':'\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275'},
{'base':'oi','letters':'\u01A3'},
{'base':'ou','letters':'\u0223'},
{'base':'oo','letters':'\uA74F'},
{'base':'p','letters':'\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755'},
{'base':'q','letters':'\u0071\u24E0\uFF51\u024B\uA757\uA759'},
{'base':'r','letters':'\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783'},
{'base':'s','letters':'\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B'},
{'base':'t','letters':'\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787'},
{'base':'tz','letters':'\uA729'},
{'base':'u','letters': '\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289'},
{'base':'v','letters':'\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C'},
{'base':'vy','letters':'\uA761'},
{'base':'w','letters':'\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73'},
{'base':'x','letters':'\u0078\u24E7\uFF58\u1E8B\u1E8D'},
{'base':'y','letters':'\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF'},
{'base':'z','letters':'\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763'}
const defaultDiacriticsRemovalap = [
{ base: 'A', letters: '\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F' },
{ base: 'AA', letters: '\uA732' },
{ base: 'AE', letters: '\u00C6\u01FC\u01E2' },
{ base: 'AO', letters: '\uA734' },
{ base: 'AU', letters: '\uA736' },
{ base: 'AV', letters: '\uA738\uA73A' },
{ base: 'AY', letters: '\uA73C' },
{ base: 'B', letters: '\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181' },
{ base: 'C', letters: '\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E' },
{ base: 'D', letters: '\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779' },
{ base: 'DZ', letters: '\u01F1\u01C4' },
{ base: 'Dz', letters: '\u01F2\u01C5' },
{ base: 'E', letters: '\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E' },
{ base: 'F', letters: '\u0046\u24BB\uFF26\u1E1E\u0191\uA77B' },
{ base: 'G', letters: '\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E' },
{ base: 'H', letters: '\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D' },
{ base: 'I', letters: '\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197' },
{ base: 'J', letters: '\u004A\u24BF\uFF2A\u0134\u0248' },
{ base: 'K', letters: '\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2' },
{ base: 'L', letters: '\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780' },
{ base: 'LJ', letters: '\u01C7' },
{ base: 'Lj', letters: '\u01C8' },
{ base: 'M', letters: '\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C' },
{ base: 'N', letters: '\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4' },
{ base: 'NJ', letters: '\u01CA' },
{ base: 'Nj', letters: '\u01CB' },
{ base: 'O', letters: '\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C' },
{ base: 'OI', letters: '\u01A2' },
{ base: 'OO', letters: '\uA74E' },
{ base: 'OU', letters: '\u0222' },
{ base: 'OE', letters: '\u008C\u0152' },
{ base: 'oe', letters: '\u009C\u0153' },
{ base: 'P', letters: '\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754' },
{ base: 'Q', letters: '\u0051\u24C6\uFF31\uA756\uA758\u024A' },
{ base: 'R', letters: '\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782' },
{ base: 'S', letters: '\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784' },
{ base: 'T', letters: '\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786' },
{ base: 'TZ', letters: '\uA728' },
{ base: 'U', letters: '\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244' },
{ base: 'V', letters: '\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245' },
{ base: 'VY', letters: '\uA760' },
{ base: 'W', letters: '\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72' },
{ base: 'X', letters: '\u0058\u24CD\uFF38\u1E8A\u1E8C' },
{ base: 'Y', letters: '\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE' },
{ base: 'Z', letters: '\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762' },
{ base: 'a', letters: '\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250' },
{ base: 'aa', letters: '\uA733' },
{ base: 'ae', letters: '\u00E6\u01FD\u01E3' },
{ base: 'ao', letters: '\uA735' },
{ base: 'au', letters: '\uA737' },
{ base: 'av', letters: '\uA739\uA73B' },
{ base: 'ay', letters: '\uA73D' },
{ base: 'b', letters: '\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253' },
{ base: 'c', letters: '\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184' },
{ base: 'd', letters: '\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A' },
{ base: 'dz', letters: '\u01F3\u01C6' },
{ base: 'e', letters: '\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD' },
{ base: 'f', letters: '\u0066\u24D5\uFF46\u1E1F\u0192\uA77C' },
{ base: 'g', letters: '\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F' },
{ base: 'h', letters: '\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265' },
{ base: 'hv', letters: '\u0195' },
{ base: 'i', letters: '\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131' },
{ base: 'j', letters: '\u006A\u24D9\uFF4A\u0135\u01F0\u0249' },
{ base: 'k', letters: '\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3' },
{ base: 'l', letters: '\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747' },
{ base: 'lj', letters: '\u01C9' },
{ base: 'm', letters: '\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F' },
{ base: 'n', letters: '\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5' },
{ base: 'nj', letters: '\u01CC' },
{ base: 'o', letters: '\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275' },
{ base: 'oi', letters: '\u01A3' },
{ base: 'ou', letters: '\u0223' },
{ base: 'oo', letters: '\uA74F' },
{ base: 'p', letters: '\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755' },
{ base: 'q', letters: '\u0071\u24E0\uFF51\u024B\uA757\uA759' },
{ base: 'r', letters: '\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783' },
{ base: 's', letters: '\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B' },
{ base: 't', letters: '\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787' },
{ base: 'tz', letters: '\uA729' },
{ base: 'u', letters: '\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289' },
{ base: 'v', letters: '\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C' },
{ base: 'vy', letters: '\uA761' },
{ base: 'w', letters: '\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73' },
{ base: 'x', letters: '\u0078\u24E7\uFF58\u1E8B\u1E8D' },
{ base: 'y', letters: '\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF' },
{ base: 'z', letters: '\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763' }
];
var diacriticsMap = {};
for (var i=0; i < defaultDiacriticsRemovalap.length; i++){
var letters = defaultDiacriticsRemovalap[i].letters;
for (var j=0; j < letters.length ; j++){
diacriticsMap[letters[j]] = defaultDiacriticsRemovalap[i].base;
}
const diacriticsMap = {};
for (let i = 0; i < defaultDiacriticsRemovalap.length; i++) {
const { letters } = defaultDiacriticsRemovalap[i];
for (let j = 0; j < letters.length; j++) {
diacriticsMap[letters[j]] = defaultDiacriticsRemovalap[i].base;
}
}
function remove (str) {
return str.replace(/[^\u0000-\u007E]/g, function(a){
return diacriticsMap[a] || a;
});
function remove(str) {
return str.replace(/[^\u0000-\u007E]/g, (a) => diacriticsMap[a] || a);
}
module.exports.remove = remove;
{
"name": "natural-content",
"version": "1.0.9",
"version": "1.0.10",
"description": "A set of natural functions like tf.idf, extract words & n-grams, remove diacritics, ... (experimental project)",

@@ -12,4 +12,10 @@ "main": "index.js",

"dependencies": {
"underscore": "*"
"underscore": "^1.9.1"
},
"devDependencies": {
"eslint": "^5.16.0",
"eslint-config-adidas-es8": "^1.1.0",
"eslint-plugin-import": "^2.17.3",
"eslint-plugin-promise": "^4.1.1"
}
}

@@ -1,123 +0,119 @@

var assert = require("assert");
var _ = require("underscore");
var natural = require("../index.js");
const assert = require('assert');
const _ = require('underscore');
const natural = require('../index.js');
describe('Natural Content', () => {
const documents = [
'word1 word2 word3 word4 word5 word6. word7 word1 word8 word9 word10 word11 word6. word1 word12 word13. word1 word1 ',
'word2 word7 word8 word9 word10 word7 word11 word7 word11 word11 word11 word11.',
' word7 word2 '
];
describe("Natural Content", function() {
var documents = [
"word1 word2 word3 word4 word5 word6. word7 word1 word8 word9 word10 word11 word6. word1 word12 word13. word1 word1 ",
"word2 word7 word8 word9 word10 word7 word11 word7 word11 word11 word11 word11.",
" word7 word2 " ];
const documentsFr = [
'Les conditions d\'utilisations de l\'objet doivent se faire dans de bonnes conditions. Sinon l\'objet ne peut pas bien être utilisé.',
'Les conditions d\'emploi de la chose doivent se faire dans de bonne condition. Sinon l\'objet n\'est pas utilisable.',
'Pour éviter une mauvaise utilisation, les conditions d\'utilisations doivent être faite correctement.'
];
var documentsFr = [
"Les conditions d'utilisations de l'objet doivent se faire dans de bonnes conditions. Sinon l'objet ne peut pas bien être utilisé.",
"Les conditions d'emploi de la chose doivent se faire dans de bonne condition. Sinon l'objet n'est pas utilisable.",
"Pour éviter une mauvaise utilisation, les conditions d'utilisations doivent être faite correctement."
];
it('Statements', function() {
var stats = natural.getStatements("word1 word2 word3 word4 :word5 word6. word7 word1, word8 word9 word10 word11 word6. word1 word12 word13");
assert(stats.length === 3);
it('Statements', () => {
const stats = natural.getStatements('word1 word2 word3 word4 :word5 word6. word7 word1, word8 word9 word10 word11 word6. word1 word12 word13');
});
assert(stats.length === 3);
});
it('Special caracters', function(){
var text = "ceci est un texte en français ! sans caractères spéciaux !§($€) # 123 avant-hier";
var result = natural.removeSpecials(text);
assert( result === 'ceci est un texte en français sans caractères spéciaux avant hier');
});
it('Special caracters', () => {
const text = 'ceci est un texte en français ! sans caractères spéciaux !§($€) # 123 avant-hier';
const result = natural.removeSpecials(text);
assert(result === 'ceci est un texte en français sans caractères spéciaux avant hier');
});
it('apostrophe', function(){
var text = "ceci est un texte en français. l'été sera chaud. Les conditions d'utilisation de l'objet";
it('apostrophe', () => {
const text = 'ceci est un texte en français. l\'été sera chaud. Les conditions d\'utilisation de l\'objet';
var result = natural.removeSpecials(text);
assert( result === 'ceci est un texte en français l été sera chaud Les conditions d utilisation de l objet');
});
const result = natural.removeSpecials(text);
it('diacritics', function(){
var text = "ceci est un texte en français ! sans diacritiques çàoözęùô";
var result = natural.removeDiacritics(text);
assert(result === 'ceci est un texte en francais ! sans diacritiques caoozeuo');
});
assert(result === 'ceci est un texte en français l été sera chaud Les conditions d utilisation de l objet');
});
it('Words', function() {
it('diacritics', () => {
const text = 'ceci est un texte en français ! sans diacritiques çàoözęùô';
const result = natural.removeDiacritics(text);
var words = natural.getWords("word1 word2 word3 word4. le la sur word5, ça été bientôt & @' $ 123", true);
assert(words.length === 15);
assert(result === 'ceci est un texte en francais ! sans diacritiques caoozeuo');
});
words = natural.getWords(natural.removeSpecials("word1 word2 word3 word4. le la sur word5, ça été bientôt & @' $ 123"), true);
//console.log("words", words);
assert(words.length === 11);
it('Words', () => {
let words = natural.getWords('word1 word2 word3 word4. le la sur word5, ça été bientôt & @\' $ 123', true);
words = natural.getWords("word1 word2 word3 word4. le la sur word5 bientôt", false, "fr");
//console.log("words", words);
assert(words.length === 5);
assert(words.length === 15);
words = natural.getWords("word1 word2 word3 1234 word4 156,78. le la sur word5", false, "fr");
//console.log(words);
assert(words.length === 8);
words = natural.getWords(natural.removeSpecials('word1 word2 word3 word4. le la sur word5, ça été bientôt & @\' $ 123'), true);
words = natural.getWords("l'été sera chaud. Les conditions d'utilisation de l'objet", false, "fr");
assert(words.length === 4);
// console.log("words", words);
assert(words.length === 11);
words = natural.getWords("l'été sera chaud. Les conditions d'utilisation de l'objet", true);
assert(words.length === 11);
});
words = natural.getWords('word1 word2 word3 word4. le la sur word5 bientôt', false, 'fr');
it('n-grams', function() {
var grams = natural.getNgrams(natural.getWords("word1 word2 word3 word4. le la sur word5", true), 1);
assert(grams.length === 8);
assert(grams[3] === "word4");
// console.log("words", words);
assert(words.length === 5);
grams = natural.getNgrams(natural.getWords("word1 word2 word3 word4. le la sur word5", true), 2);
assert(grams.length === 7);
assert(grams[1] === "word2 word3");
words = natural.getWords('word1 word2 word3 1234 word4 156,78. le la sur word5', false, 'fr');
grams = natural.getNgrams(natural.getWords("word1 word2 word3 word4. le la sur word5", true), 3);
assert(grams.length === 6);
assert(grams[2] === "word3 word4 le");
// console.log(words);
assert(words.length === 8);
grams = natural.getNgrams(natural.getWords("l'été sera chaud. Les conditions d'utilisation de l'objet", false, "fr"), 1);
assert(grams.length === 4);
words = natural.getWords('l\'été sera chaud. Les conditions d\'utilisation de l\'objet', false, 'fr');
assert(words.length === 4);
words = natural.getWords('l\'été sera chaud. Les conditions d\'utilisation de l\'objet', true);
assert(words.length === 11);
});
});
it('n-grams', () => {
let grams = natural.getNgrams(natural.getWords('word1 word2 word3 word4. le la sur word5', true), 1);
it("term frequency", function(){
var info = natural.getTf(natural.getWords(documents[0], false, "fr"));
//console.log(info);
assert(info.max === 5);
assert(info.count.word1 === 5);
assert(info.count.word6 === 2);
assert(info.tfs.word1 === 1);
assert(info.tfs.word2 === 0.2);
assert(info.tfs.word6 === 0.4);
assert(grams.length === 8);
assert(grams[3] === 'word4');
});
grams = natural.getNgrams(natural.getWords('word1 word2 word3 word4. le la sur word5', true), 2);
assert(grams.length === 7);
assert(grams[1] === 'word2 word3');
grams = natural.getNgrams(natural.getWords('word1 word2 word3 word4. le la sur word5', true), 3);
assert(grams.length === 6);
assert(grams[2] === 'word3 word4 le');
it("tf.idf for a set of document ", function() {
grams = natural.getNgrams(natural.getWords('l\'été sera chaud. Les conditions d\'utilisation de l\'objet', false, 'fr'), 1);
assert(grams.length === 4);
});
var info = natural.getTfIdfs(documents, 1, false, "fr");
it('term frequency', () => {
const info = natural.getTf(natural.getWords(documents[0], false, 'fr'));
var sorted = _.sortBy(Array.from(info.stats.values()), function(word) { return -word.tfIdfSum;});
assert(sorted[0].word === "word1");
//console.log(sorted);
// console.log(info);
assert(info.max === 5);
assert(info.count.word1 === 5);
assert(info.count.word6 === 2);
assert(info.tfs.word1 === 1);
assert(info.tfs.word2 === 0.2);
assert(info.tfs.word6 === 0.4);
});
});
it('tf.idf for a set of document ', () => {
const info = natural.getTfIdfs(documents, 1, false, 'fr');
/*
it.only("tf.idf for a set of document in french", function() {
const sorted = _.sortBy(Array.from(info.stats.values()), (word) => -word.tfIdfSum);
var info = natural.getTfIdfs(documentsFr, 3, true);
assert(sorted[0].word === 'word1');
var sorted = _.sortBy(Array.from(info.stats.values()), function(word) { return -word.tfIdfSum;});
//assert(sorted[0].word === "word1");
console.log(sorted);
// console.log(sorted);
});
});
*/
// it.only("tf.idf for a set of document in french", function() {
// var info = natural.getTfIdfs(documentsFr, 3, true);
// var sorted = _.sortBy(Array.from(info.stats.values()), function(word) { return -word.tfIdfSum;});
// //assert(sorted[0].word === "word1");
// console.log(sorted);
// });
});
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc