Mon 21 Jul 22:43:21 CEST 2025
This commit is contained in:
parent
0839953ee9
commit
bfea2d213c
437
js/nlp/compromise-adjectives.js
Normal file
437
js/nlp/compromise-adjectives.js
Normal file
|
@ -0,0 +1,437 @@
|
|||
/* compromise-adjectives 0.0.6 MIT */
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.compromiseAdjectives = factory());
|
||||
}(this, (function () { 'use strict';
|
||||
|
||||
function _classCallCheck(instance, Constructor) {
|
||||
if (!(instance instanceof Constructor)) {
|
||||
throw new TypeError("Cannot call a class as a function");
|
||||
}
|
||||
}
|
||||
|
||||
function _defineProperties(target, props) {
|
||||
for (var i = 0; i < props.length; i++) {
|
||||
var descriptor = props[i];
|
||||
descriptor.enumerable = descriptor.enumerable || false;
|
||||
descriptor.configurable = true;
|
||||
if ("value" in descriptor) descriptor.writable = true;
|
||||
Object.defineProperty(target, descriptor.key, descriptor);
|
||||
}
|
||||
}
|
||||
|
||||
function _createClass(Constructor, protoProps, staticProps) {
|
||||
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
||||
if (staticProps) _defineProperties(Constructor, staticProps);
|
||||
return Constructor;
|
||||
}
|
||||
|
||||
function _inherits(subClass, superClass) {
|
||||
if (typeof superClass !== "function" && superClass !== null) {
|
||||
throw new TypeError("Super expression must either be null or a function");
|
||||
}
|
||||
|
||||
subClass.prototype = Object.create(superClass && superClass.prototype, {
|
||||
constructor: {
|
||||
value: subClass,
|
||||
writable: true,
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
if (superClass) _setPrototypeOf(subClass, superClass);
|
||||
}
|
||||
|
||||
function _getPrototypeOf(o) {
|
||||
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
|
||||
return o.__proto__ || Object.getPrototypeOf(o);
|
||||
};
|
||||
return _getPrototypeOf(o);
|
||||
}
|
||||
|
||||
function _setPrototypeOf(o, p) {
|
||||
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
|
||||
o.__proto__ = p;
|
||||
return o;
|
||||
};
|
||||
|
||||
return _setPrototypeOf(o, p);
|
||||
}
|
||||
|
||||
function _isNativeReflectConstruct() {
|
||||
if (typeof Reflect === "undefined" || !Reflect.construct) return false;
|
||||
if (Reflect.construct.sham) return false;
|
||||
if (typeof Proxy === "function") return true;
|
||||
|
||||
try {
|
||||
Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));
|
||||
return true;
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function _assertThisInitialized(self) {
|
||||
if (self === void 0) {
|
||||
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
function _possibleConstructorReturn(self, call) {
|
||||
if (call && (typeof call === "object" || typeof call === "function")) {
|
||||
return call;
|
||||
}
|
||||
|
||||
return _assertThisInitialized(self);
|
||||
}
|
||||
|
||||
function _createSuper(Derived) {
|
||||
var hasNativeReflectConstruct = _isNativeReflectConstruct();
|
||||
|
||||
return function _createSuperInternal() {
|
||||
var Super = _getPrototypeOf(Derived),
|
||||
result;
|
||||
|
||||
if (hasNativeReflectConstruct) {
|
||||
var NewTarget = _getPrototypeOf(this).constructor;
|
||||
|
||||
result = Reflect.construct(Super, arguments, NewTarget);
|
||||
} else {
|
||||
result = Super.apply(this, arguments);
|
||||
}
|
||||
|
||||
return _possibleConstructorReturn(this, result);
|
||||
};
|
||||
}
|
||||
|
||||
//turn 'quick' into 'quickly'
|
||||
var not_matches = [/airs$/, /ll$/, /ee.$/, /ile$/, /y$/];
|
||||
var irregulars = {
|
||||
bad: 'badly',
|
||||
good: 'well',
|
||||
icy: 'icily',
|
||||
idle: 'idly',
|
||||
male: 'manly',
|
||||
"public": 'publicly',
|
||||
simple: 'simply',
|
||||
single: 'singly',
|
||||
special: 'especially',
|
||||
straight: 'straight',
|
||||
vague: 'vaguely',
|
||||
whole: 'wholly'
|
||||
};
|
||||
var dontChange = ['best', 'early', 'hard', 'fast', 'wrong', 'well', 'late', 'latter', 'little', 'long', 'low'].reduce(function (h, c) {
|
||||
h[c] = true;
|
||||
return h;
|
||||
}, {});
|
||||
var transforms = [{
|
||||
reg: /al$/i,
|
||||
repl: 'ally'
|
||||
}, {
|
||||
reg: /ly$/i,
|
||||
repl: 'ly'
|
||||
}, {
|
||||
reg: /(.{3})y$/i,
|
||||
repl: '$1ily'
|
||||
}, {
|
||||
reg: /que$/i,
|
||||
repl: 'quely'
|
||||
}, {
|
||||
reg: /ue$/i,
|
||||
repl: 'uly'
|
||||
}, {
|
||||
reg: /ic$/i,
|
||||
repl: 'ically'
|
||||
}, {
|
||||
reg: /ble$/i,
|
||||
repl: 'bly'
|
||||
}, {
|
||||
reg: /l$/i,
|
||||
repl: 'ly'
|
||||
}];
|
||||
|
||||
var adj_to_adv = function adj_to_adv(str) {
|
||||
if (irregulars.hasOwnProperty(str) === true) {
|
||||
return irregulars[str];
|
||||
}
|
||||
|
||||
if (dontChange.hasOwnProperty(str) === true) {
|
||||
return str;
|
||||
}
|
||||
|
||||
for (var i = 0; i < not_matches.length; i++) {
|
||||
if (not_matches[i].test(str) === true) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
for (var _i = 0; _i < transforms.length; _i++) {
|
||||
if (transforms[_i].reg.test(str) === true) {
|
||||
return str.replace(transforms[_i].reg, transforms[_i].repl);
|
||||
}
|
||||
}
|
||||
|
||||
return str + 'ly';
|
||||
};
|
||||
|
||||
var toAdverb = adj_to_adv;
|
||||
|
||||
//convert 'cute' to 'cuteness'
|
||||
var irregulars$1 = {
|
||||
clean: 'cleanliness',
|
||||
naivety: 'naivety',
|
||||
hurt: 'hurt'
|
||||
};
|
||||
var transforms$1 = [{
|
||||
reg: /y$/,
|
||||
repl: 'iness'
|
||||
}, {
|
||||
reg: /le$/,
|
||||
repl: 'ility'
|
||||
}, {
|
||||
reg: /ial$/,
|
||||
repl: 'y'
|
||||
}, {
|
||||
reg: /al$/,
|
||||
repl: 'ality'
|
||||
}, {
|
||||
reg: /ting$/,
|
||||
repl: 'ting'
|
||||
}, {
|
||||
reg: /ring$/,
|
||||
repl: 'ring'
|
||||
}, {
|
||||
reg: /bing$/,
|
||||
repl: 'bingness'
|
||||
}, {
|
||||
reg: /sing$/,
|
||||
repl: 'se'
|
||||
}, {
|
||||
reg: /ing$/,
|
||||
repl: 'ment'
|
||||
}, {
|
||||
reg: /ess$/,
|
||||
repl: 'essness'
|
||||
}, {
|
||||
reg: /ous$/,
|
||||
repl: 'ousness'
|
||||
}];
|
||||
|
||||
var to_noun = function to_noun(w) {
|
||||
if (irregulars$1.hasOwnProperty(w)) {
|
||||
return irregulars$1[w];
|
||||
}
|
||||
|
||||
var lastChar = w.charAt(w.length - 1);
|
||||
|
||||
if (lastChar === 'w' || lastChar === 's') {
|
||||
return null;
|
||||
}
|
||||
|
||||
for (var i = 0; i < transforms$1.length; i++) {
|
||||
if (transforms$1[i].reg.test(w) === true) {
|
||||
return w.replace(transforms$1[i].reg, transforms$1[i].repl);
|
||||
}
|
||||
}
|
||||
|
||||
return w + 'ness';
|
||||
};
|
||||
|
||||
var toNoun = to_noun;
|
||||
|
||||
//turn an adjective like 'soft' into a verb like 'soften'
|
||||
//(don't do words like 'green' -> 'greenen')
|
||||
//these are suffices that are usually too weird
|
||||
var dontDo = ['c', 'e', 'g', 'l', 'n', 'r', 'w', 'y'].reduce(function (h, c) {
|
||||
h[c] = true;
|
||||
return h;
|
||||
}, {});
|
||||
var dontDoTwo = {
|
||||
ed: true,
|
||||
nt: true
|
||||
};
|
||||
var banList = {
|
||||
random: true,
|
||||
wild: true
|
||||
};
|
||||
var irregulars$2 = {
|
||||
bored: 'bore',
|
||||
red: 'redden',
|
||||
sad: 'sadden',
|
||||
fat: 'fatten',
|
||||
small: 'shrink',
|
||||
full: 'fill',
|
||||
tired: 'tire'
|
||||
};
|
||||
|
||||
var toVerb = function toVerb(str) {
|
||||
if (irregulars$2.hasOwnProperty(str) === true) {
|
||||
return irregulars$2[str];
|
||||
} //don't bother with these:
|
||||
|
||||
|
||||
if (str.length <= 3) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (banList.hasOwnProperty(str) === true) {
|
||||
return null;
|
||||
} //suffixes to avoid
|
||||
|
||||
|
||||
if (dontDo.hasOwnProperty(str[str.length - 1])) {
|
||||
return null;
|
||||
}
|
||||
|
||||
var suffix = str.substr(str.length - 2);
|
||||
|
||||
if (dontDoTwo.hasOwnProperty(suffix) === true) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (/e$/.test(str) === true) {
|
||||
return str + 'n';
|
||||
}
|
||||
|
||||
return str + 'en';
|
||||
};
|
||||
|
||||
var toVerb_1 = toVerb;
|
||||
|
||||
var addMethods = function addMethods(Doc) {
|
||||
/** */
|
||||
var Adjective = /*#__PURE__*/function (_Doc) {
|
||||
_inherits(Adjective, _Doc);
|
||||
|
||||
var _super = _createSuper(Adjective);
|
||||
|
||||
function Adjective() {
|
||||
_classCallCheck(this, Adjective);
|
||||
|
||||
return _super.apply(this, arguments);
|
||||
}
|
||||
|
||||
_createClass(Adjective, [{
|
||||
key: "json",
|
||||
|
||||
/** overload the original json with noun information */
|
||||
value: function json(options) {
|
||||
var n = null;
|
||||
|
||||
if (typeof options === 'number') {
|
||||
n = options;
|
||||
options = null;
|
||||
}
|
||||
|
||||
var res = [];
|
||||
this.forEach(function (doc) {
|
||||
var json = doc.json(options)[0];
|
||||
var str = doc.text('reduced');
|
||||
json.toAdverb = toAdverb(str);
|
||||
json.toNoun = toNoun(str);
|
||||
json.toVerb = toVerb_1(str);
|
||||
res.push(json);
|
||||
});
|
||||
|
||||
if (n !== null) {
|
||||
return res[n];
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
}, {
|
||||
key: "conjugate",
|
||||
value: function conjugate(n) {
|
||||
var transform = this.world.transforms.adjectives;
|
||||
var arr = [];
|
||||
this.forEach(function (doc) {
|
||||
var str = doc.text('reduced');
|
||||
var obj = transform(str);
|
||||
obj.Adverb = toAdverb(str);
|
||||
obj.Noun = toNoun(str);
|
||||
obj.Verb = toVerb_1(str);
|
||||
arr.push(obj);
|
||||
}); //support nth result
|
||||
|
||||
if (typeof n === 'number') {
|
||||
return arr[n];
|
||||
}
|
||||
|
||||
return arr;
|
||||
}
|
||||
}, {
|
||||
key: "toSuperlative",
|
||||
value: function toSuperlative() {
|
||||
var transform = this.world.transforms.adjectives;
|
||||
this.forEach(function (doc) {
|
||||
var obj = transform(doc.text('reduced'));
|
||||
doc.replaceWith(obj.Superlative, true);
|
||||
});
|
||||
return this;
|
||||
}
|
||||
}, {
|
||||
key: "toComparative",
|
||||
value: function toComparative() {
|
||||
var transform = this.world.transforms.adjectives;
|
||||
this.forEach(function (doc) {
|
||||
var obj = transform(doc.text('reduced'));
|
||||
doc.replaceWith(obj.Comparative, true);
|
||||
});
|
||||
return this;
|
||||
}
|
||||
}, {
|
||||
key: "toAdverb",
|
||||
value: function toAdverb$1() {
|
||||
this.forEach(function (doc) {
|
||||
var adverb = toAdverb(doc.text('reduced'));
|
||||
|
||||
doc.replaceWith(adverb, true);
|
||||
});
|
||||
return this;
|
||||
}
|
||||
}, {
|
||||
key: "toVerb",
|
||||
value: function toVerb() {
|
||||
this.forEach(function (doc) {
|
||||
var verb = toVerb_1(doc.text('reduced'));
|
||||
|
||||
doc.replaceWith(verb, true);
|
||||
});
|
||||
return this;
|
||||
}
|
||||
}, {
|
||||
key: "toNoun",
|
||||
value: function toNoun$1() {
|
||||
this.forEach(function (doc) {
|
||||
var noun = toNoun(doc.text('reduced'));
|
||||
|
||||
doc.replaceWith(noun, true);
|
||||
});
|
||||
return this;
|
||||
}
|
||||
}]);
|
||||
|
||||
return Adjective;
|
||||
}(Doc);
|
||||
/** grab all the adjectives */
|
||||
|
||||
|
||||
Doc.prototype.adjectives = function (n) {
|
||||
var m = this.match('#Adjective'); //grab (n)th result
|
||||
|
||||
if (typeof n === 'number') {
|
||||
m = m.get(n);
|
||||
}
|
||||
|
||||
return new Adjective(m.list, this, this.world);
|
||||
};
|
||||
};
|
||||
|
||||
var src = addMethods;
|
||||
|
||||
return src;
|
||||
|
||||
})));
|
||||
//# sourceMappingURL=compromise-adjectives.js.map
|
Loading…
Reference in New Issue
Block a user