natural 0.5.6 → 0.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/.dockerignore +2 -0
  2. package/.idea/misc.xml +6 -0
  3. package/.idea/modules.xml +8 -0
  4. package/.idea/natural.iml +12 -0
  5. package/.idea/vcs.xml +6 -0
  6. package/.idea/workspace.xml +511 -0
  7. package/.travis.yml +8 -1
  8. package/README.md +331 -40
  9. package/bayes_classifier.json +1 -1
  10. package/classifier.json +418 -0
  11. package/lib/natural/brill_pos_tagger/lib/Brill_POS_Tagger.js +8 -9
  12. package/lib/natural/brill_pos_tagger/lib/Brill_POS_Tester.js +5 -5
  13. package/lib/natural/brill_pos_tagger/lib/Brill_POS_Trainer.js +10 -6
  14. package/lib/natural/brill_pos_tagger/lib/Corpus.js +21 -16
  15. package/lib/natural/brill_pos_tagger/lib/Lexicon.js +22 -13
  16. package/lib/natural/brill_pos_tagger/lib/Predicate.js +2 -2
  17. package/lib/natural/brill_pos_tagger/lib/RuleTemplate.js +2 -2
  18. package/lib/natural/brill_pos_tagger/lib/RuleTemplates.js +132 -146
  19. package/lib/natural/brill_pos_tagger/lib/Sentence.js +41 -0
  20. package/lib/natural/brill_pos_tagger/lib/TransformationRule.js +10 -11
  21. package/lib/natural/classifiers/classifier.js +5 -3
  22. package/lib/natural/classifiers/maxent/Classifier.js +125 -0
  23. package/lib/natural/classifiers/maxent/Context.js +33 -0
  24. package/lib/natural/classifiers/maxent/Distribution.js +145 -0
  25. package/lib/natural/classifiers/maxent/Element.js +34 -0
  26. package/lib/natural/classifiers/maxent/Feature.js +88 -0
  27. package/lib/natural/classifiers/maxent/FeatureSet.js +67 -0
  28. package/lib/natural/classifiers/maxent/GISScaler.js +148 -0
  29. package/lib/natural/classifiers/maxent/POS/ME_Corpus.js +56 -0
  30. package/lib/natural/classifiers/maxent/POS/ME_Sentence.js +73 -0
  31. package/lib/natural/classifiers/maxent/POS/POS_Element.js +172 -0
  32. package/lib/natural/classifiers/maxent/Sample.js +141 -0
  33. package/lib/natural/classifiers/maxent/SimpleExample/SE_Element.js +49 -0
  34. package/lib/natural/distance/hamming_distance.js +52 -0
  35. package/lib/natural/distance/jaro-winkler_distance.js +16 -6
  36. package/lib/natural/distance/levenshtein_distance.js +2 -2
  37. package/lib/natural/index.js +21 -2
  38. package/lib/natural/inflectors/noun_inflector.js +5 -3
  39. package/lib/natural/ngrams/ngrams.js +83 -25
  40. package/lib/natural/sentiment/Basque/senticon_eu.json +21557 -0
  41. package/lib/natural/sentiment/Catalan/senticon_ca.json +36352 -0
  42. package/lib/natural/sentiment/Dutch/negations_du.json +3 -0
  43. package/lib/natural/sentiment/Dutch/pattern-sentiment-nl.json +39650 -0
  44. package/lib/natural/sentiment/English/negations_en.json +3 -0
  45. package/lib/natural/sentiment/English/pattern-sentiment-en.json +16024 -0
  46. package/lib/natural/sentiment/English/senticon_en.json +124197 -0
  47. package/lib/natural/sentiment/French/pattern-sentiment-fr.json +40906 -0
  48. package/lib/natural/sentiment/Galician/senticon_gl.json +24427 -0
  49. package/lib/natural/sentiment/Italian/pattern-sentiment-it.json +24522 -0
  50. package/lib/natural/sentiment/SentimentAnalyzer.js +116 -0
  51. package/lib/natural/sentiment/Spanish/afinnShortSortedSpanish.json +1655 -0
  52. package/lib/natural/sentiment/Spanish/negations_es.json +3 -0
  53. package/lib/natural/sentiment/Spanish/senticon_es.json +56722 -0
  54. package/lib/natural/sentiment/tools/README.md +31 -0
  55. package/lib/natural/sentiment/tools/XmlParser4PatternData.js +31 -0
  56. package/lib/natural/sentiment/tools/sentimentXmlParser.js +30 -0
  57. package/lib/natural/stemmers/indonesian/data/kata-dasar.json +29935 -0
  58. package/lib/natural/stemmers/indonesian/prefix_rules.js +10 -9
  59. package/lib/natural/stemmers/indonesian/stemmer_id.js +16 -15
  60. package/lib/natural/stemmers/indonesian/suffix_rules.js +2 -2
  61. package/lib/natural/stemmers/porter_stemmer_es.js +265 -199
  62. package/lib/natural/stemmers/porter_stemmer_fr.js +1 -1
  63. package/lib/natural/stemmers/porter_stemmer_nl.js +362 -0
  64. package/lib/natural/stemmers/stemmer_es.js +18 -12
  65. package/lib/natural/stemmers/stemmer_nl.js +64 -0
  66. package/lib/natural/tfidf/tfidf.js +27 -4
  67. package/lib/natural/tokenizers/aggressive_tokenizer_sv.js +1 -1
  68. package/lib/natural/tokenizers/aggressive_tokenizer_vi.js +37 -0
  69. package/lib/natural/tokenizers/orthography_matchers.js +33 -0
  70. package/lib/natural/tokenizers/regexp_tokenizer.js +24 -4
  71. package/lib/natural/tokenizers/sentence_tokenizer.js +1 -1
  72. package/lib/natural/wordnet/wordnet_file.js +7 -1
  73. package/lr_classifier.json +1 -1
  74. package/package.json +35 -23
  75. package/.npmignore +0 -4
  76. package/.vscode/temp.sql +0 -0
  77. package/Makefile +0 -38
  78. package/data/kata-dasar.txt +0 -29933
  79. package/package-lock.json +0 -79
  80. package/tests/stemmer_id_test.js +0 -361
@@ -0,0 +1,31 @@
1
+ # Tools
2
+ This folder contains some tools for manipulating vocabularies for the sentiment analyzer.
3
+
4
+ ## `sentimentXmlParser`
5
+ Transforms ML-Senticon XML files into JSON files. The JSON file contains a vocabulary that maps words to objects as follows:
6
+ ```javascript
7
+ "admirable": {
8
+ "pos": "a",
9
+ "pol": "1.0",
10
+ "std": "0.0"
11
+ }
12
+ ```
13
+ Property `pol` is the sentiment of the word.
14
+
15
+ ## `XmlParser4PatternData`
16
+ Transforms vocabularies of the [Pattern project](https://www.clips.uantwerpen.be/pages/pattern) to JSON files. The JSON file contains a vocabulary that maps wordt to objects:
17
+ ```javascript
18
+ "aanraden": {
19
+ "form": "aanraden",
20
+ "cornetto_id": "",
21
+ "cornetto_synset_id": "",
22
+ "wordnet_id": "",
23
+ "pos": "VB",
24
+ "sense": "",
25
+ "polarity": "0.2",
26
+ "subjectivity": "0.0",
27
+ "intensity": "1.0",
28
+ "confidence": "0.9"
29
+ }
30
+ ```
31
+ Property `polarity` is the sentiment of the word.
@@ -0,0 +1,31 @@
1
+ const fs = require('fs');
2
+ const util = require('util');
3
+ var parseString = require('xml2js').parseString;
4
+
5
+ var baseFolder = "/home/hugo/Workspace/pattern/pattern/text/";
6
+ //var inputFile = baseFolder + "nl/nl-sentiment.xml";
7
+ //var outputFile = baseFolder + "nl/nl-sentiment.json";
8
+ //var inputFile = baseFolder + "fr/fr-sentiment.xml";
9
+ //var outputFile = baseFolder + "fr/fr-sentiment.json";
10
+ //var inputFile = baseFolder + "en/en-sentiment.xml";
11
+ //var outputFile = baseFolder + "en/en-sentiment.json";
12
+ var inputFile = baseFolder + "it/it-sentiment.xml";
13
+ var outputFile = baseFolder + "it/pattern-sentiment-it.json";
14
+
15
+
16
+
17
+ var xml = fs.readFileSync(inputFile , 'utf8');
18
+ var list = {};
19
+
20
+ parseString(xml, function (err, result) {
21
+ //console.log(JSON.stringify(result, null, 2));
22
+ console.log(result.sentiment.word.length);
23
+ for(var i =0; i < result.sentiment.word.length; i++){
24
+ console.log(result.sentiment.word[i].$.form);
25
+ list[result.sentiment.word[i].$.form] = result.sentiment.word[i].$;
26
+ }
27
+ });
28
+
29
+ console.log(Object.keys(list).length);
30
+
31
+ fs.writeFileSync(outputFile, JSON.stringify(list, null, 2));
@@ -0,0 +1,30 @@
1
+ const fs = require('fs');
2
+ const util = require('util');
3
+ var parseString = require('xml2js').parseString;
4
+
5
+ var xml = fs.readFileSync('senticon.ca.xml', 'utf8');
6
+
7
+ var list = {};
8
+
9
+ parseString(xml, function (err, result) {
10
+ for(var i =0; i < result.senticon.layer.length; i++){
11
+ for(var j = 0; j < result.senticon.layer[i].positive[0].lemma.length; j++){
12
+ //console.log(util.inspect(result.senticon.layer[i].negative[0].lemma[j], false, null))
13
+ list[result.senticon.layer[i].positive[0].lemma[j]._] = result.senticon.layer[i].positive[0].lemma[j].$;
14
+ }
15
+ for(var n = 0; n < result.senticon.layer[i].negative[0].lemma.length; n++){
16
+ list[result.senticon.layer[i].negative[0].lemma[n]._] = result.senticon.layer[i].negative[0].lemma[n].$;
17
+ }
18
+ }
19
+ });
20
+
21
+ var listTrimmed = {};
22
+
23
+ for(var token in list){
24
+ listTrimmed[token.replace(/ /gi, "").replace(/_/gi, " ")] = list[token]
25
+ }
26
+ console.log(listTrimmed);
27
+ //console.log(util.inspect(list, false, null))
28
+ console.log(Object.keys(listTrimmed).length);
29
+
30
+ fs.writeFileSync('senticon_ca.json', JSON.stringify(listTrimmed, null, 2));