de-compromise 0.0.5 → 0.0.6
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.
- package/LICENSE +21 -0
- package/README.md +1 -0
- package/builds/de-compromise.cjs +613 -132
- package/builds/de-compromise.min.js +1 -2
- package/builds/de-compromise.mjs +1 -2
- package/package.json +7 -5
package/builds/de-compromise.cjs
CHANGED
|
@@ -263,7 +263,7 @@
|
|
|
263
263
|
|
|
264
264
|
// aliases
|
|
265
265
|
methods$l.get = methods$l.eq;
|
|
266
|
-
var api$
|
|
266
|
+
var api$f = methods$l;
|
|
267
267
|
|
|
268
268
|
class View {
|
|
269
269
|
constructor(document, pointer, groups = {}) {
|
|
@@ -388,10 +388,10 @@
|
|
|
388
388
|
return m
|
|
389
389
|
}
|
|
390
390
|
}
|
|
391
|
-
Object.assign(View.prototype, api$
|
|
391
|
+
Object.assign(View.prototype, api$f);
|
|
392
392
|
var View$1 = View;
|
|
393
393
|
|
|
394
|
-
var version$1 = '14.
|
|
394
|
+
var version$1 = '14.6.0';
|
|
395
395
|
|
|
396
396
|
const isObject$6 = function (item) {
|
|
397
397
|
return item && typeof item === 'object' && !Array.isArray(item)
|
|
@@ -426,6 +426,54 @@
|
|
|
426
426
|
return model
|
|
427
427
|
}
|
|
428
428
|
|
|
429
|
+
const addIrregulars = function (model, conj) {
|
|
430
|
+
let m = model.two.models || {};
|
|
431
|
+
Object.keys(conj).forEach(k => {
|
|
432
|
+
// verb forms
|
|
433
|
+
if (conj[k].pastTense) {
|
|
434
|
+
if (m.toPast) {
|
|
435
|
+
m.toPast.exceptions[k] = conj[k].pastTense;
|
|
436
|
+
}
|
|
437
|
+
if (m.fromPast) {
|
|
438
|
+
m.fromPast.exceptions[conj[k].pastTense] = k;
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
if (conj[k].presentTense) {
|
|
442
|
+
if (m.toPresent) {
|
|
443
|
+
m.toPresent.exceptions[k] = conj[k].presentTense;
|
|
444
|
+
}
|
|
445
|
+
if (m.fromPresent) {
|
|
446
|
+
m.fromPresent.exceptions[conj[k].presentTense] = k;
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
if (conj[k].gerund) {
|
|
450
|
+
if (m.toGerund) {
|
|
451
|
+
m.toGerund.exceptions[k] = conj[k].gerund;
|
|
452
|
+
}
|
|
453
|
+
if (m.fromGerund) {
|
|
454
|
+
m.fromGerund.exceptions[conj[k].gerund] = k;
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
// adjective forms
|
|
458
|
+
if (conj[k].comparative) {
|
|
459
|
+
if (m.toComparative) {
|
|
460
|
+
m.toComparative.exceptions[k] = conj[k].comparative;
|
|
461
|
+
}
|
|
462
|
+
if (m.fromComparative) {
|
|
463
|
+
m.fromComparative.exceptions[conj[k].comparative] = k;
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
if (conj[k].superlative) {
|
|
467
|
+
if (m.toSuperlative) {
|
|
468
|
+
m.toSuperlative.exceptions[k] = conj[k].superlative;
|
|
469
|
+
}
|
|
470
|
+
if (m.fromSuperlative) {
|
|
471
|
+
m.fromSuperlative.exceptions[conj[k].superlative] = k;
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
});
|
|
475
|
+
};
|
|
476
|
+
|
|
429
477
|
const extend = function (plugin, world, View, nlp) {
|
|
430
478
|
const { methods, model, compute, hooks } = world;
|
|
431
479
|
if (plugin.methods) {
|
|
@@ -434,6 +482,9 @@
|
|
|
434
482
|
if (plugin.model) {
|
|
435
483
|
mergeDeep(model, plugin.model);
|
|
436
484
|
}
|
|
485
|
+
if (plugin.irregulars) {
|
|
486
|
+
addIrregulars(model, plugin.irregulars);
|
|
487
|
+
}
|
|
437
488
|
// shallow-merge compute
|
|
438
489
|
if (plugin.compute) {
|
|
439
490
|
Object.assign(compute, plugin.compute);
|
|
@@ -661,7 +712,7 @@
|
|
|
661
712
|
const addAPI$3 = function (View) {
|
|
662
713
|
Object.assign(View.prototype, methods$j);
|
|
663
714
|
};
|
|
664
|
-
var api$
|
|
715
|
+
var api$e = addAPI$3;
|
|
665
716
|
|
|
666
717
|
var compute$8 = {
|
|
667
718
|
cache: function (view) {
|
|
@@ -670,7 +721,7 @@
|
|
|
670
721
|
};
|
|
671
722
|
|
|
672
723
|
var cache$1 = {
|
|
673
|
-
api: api$
|
|
724
|
+
api: api$e,
|
|
674
725
|
compute: compute$8,
|
|
675
726
|
methods: methods$k,
|
|
676
727
|
};
|
|
@@ -891,7 +942,7 @@
|
|
|
891
942
|
// are we inserting inside a contraction?
|
|
892
943
|
// expand it first
|
|
893
944
|
const expand$2 = function (m) {
|
|
894
|
-
if (m.has('@hasContraction')) {//&& m.after('^.').has('@hasContraction')
|
|
945
|
+
if (m.has('@hasContraction') && typeof m.contractions === 'function') {//&& m.after('^.').has('@hasContraction')
|
|
895
946
|
let more = m.grow('@hasContraction');
|
|
896
947
|
more.contractions().expand();
|
|
897
948
|
}
|
|
@@ -916,7 +967,7 @@
|
|
|
916
967
|
}
|
|
917
968
|
//allow a view object
|
|
918
969
|
if (typeof input === 'object' && input.isView) {
|
|
919
|
-
return input.clone().docs[0] //assume one sentence
|
|
970
|
+
return input.clone().docs[0] || [] //assume one sentence
|
|
920
971
|
}
|
|
921
972
|
//allow an array of terms, too
|
|
922
973
|
if (isArray$7(input)) {
|
|
@@ -937,6 +988,10 @@
|
|
|
937
988
|
// add-in the words
|
|
938
989
|
let home = document[n];
|
|
939
990
|
let terms = getTerms(input, world);
|
|
991
|
+
// are we inserting nothing?
|
|
992
|
+
if (terms.length === 0) {
|
|
993
|
+
return
|
|
994
|
+
}
|
|
940
995
|
terms = addIds$2(terms);
|
|
941
996
|
if (prepend) {
|
|
942
997
|
expand$2(view.update([ptr]).firstTerm());
|
|
@@ -1063,6 +1118,7 @@
|
|
|
1063
1118
|
if (!m.found) {
|
|
1064
1119
|
return this
|
|
1065
1120
|
}
|
|
1121
|
+
this.soften();
|
|
1066
1122
|
return m.replaceWith(input, keep)
|
|
1067
1123
|
};
|
|
1068
1124
|
var replace = fns$2;
|
|
@@ -1172,9 +1228,10 @@
|
|
|
1172
1228
|
self = this;
|
|
1173
1229
|
not = this.match(reg);
|
|
1174
1230
|
}
|
|
1231
|
+
let isFull = !self.ptrs;
|
|
1175
1232
|
// is it part of a contraction?
|
|
1176
|
-
if (
|
|
1177
|
-
let more =
|
|
1233
|
+
if (not.has('@hasContraction') && not.contractions) {
|
|
1234
|
+
let more = not.grow('@hasContraction');
|
|
1178
1235
|
more.contractions().expand();
|
|
1179
1236
|
}
|
|
1180
1237
|
|
|
@@ -1185,11 +1242,14 @@
|
|
|
1185
1242
|
// repair our pointers
|
|
1186
1243
|
let gonePtrs = indexN(nots);
|
|
1187
1244
|
ptrs = fixPointers$1(ptrs, gonePtrs);
|
|
1188
|
-
|
|
1189
1245
|
// clean up our original inputs
|
|
1190
1246
|
self.ptrs = ptrs;
|
|
1191
1247
|
self.document = document;
|
|
1192
1248
|
self.compute('index');
|
|
1249
|
+
// if we started zoomed-out, try to end zoomed-out
|
|
1250
|
+
if (isFull) {
|
|
1251
|
+
self.ptrs = undefined;
|
|
1252
|
+
}
|
|
1193
1253
|
if (!reg) {
|
|
1194
1254
|
this.ptrs = [];
|
|
1195
1255
|
return self.none()
|
|
@@ -1540,7 +1600,7 @@
|
|
|
1540
1600
|
const addAPI$2 = function (View) {
|
|
1541
1601
|
Object.assign(View.prototype, methods$f);
|
|
1542
1602
|
};
|
|
1543
|
-
var api$
|
|
1603
|
+
var api$d = addAPI$2;
|
|
1544
1604
|
|
|
1545
1605
|
const compute$6 = {
|
|
1546
1606
|
id: function (view) {
|
|
@@ -1557,7 +1617,7 @@
|
|
|
1557
1617
|
var compute$7 = compute$6;
|
|
1558
1618
|
|
|
1559
1619
|
var change = {
|
|
1560
|
-
api: api$
|
|
1620
|
+
api: api$d,
|
|
1561
1621
|
compute: compute$7,
|
|
1562
1622
|
};
|
|
1563
1623
|
|
|
@@ -1787,7 +1847,7 @@
|
|
|
1787
1847
|
};
|
|
1788
1848
|
var numberRange$1 = numberRange;
|
|
1789
1849
|
|
|
1790
|
-
const numUnit = /^([0-9
|
|
1850
|
+
const numUnit = /^([+-]?[0-9][.,0-9]*)([a-z°²³µ/]+)$/; //(must be lowercase)
|
|
1791
1851
|
|
|
1792
1852
|
const notUnit = new Set([
|
|
1793
1853
|
'st',
|
|
@@ -1796,7 +1856,10 @@
|
|
|
1796
1856
|
'th',
|
|
1797
1857
|
'am',
|
|
1798
1858
|
'pm',
|
|
1799
|
-
'max'
|
|
1859
|
+
'max',
|
|
1860
|
+
'°',
|
|
1861
|
+
's', // 1990s
|
|
1862
|
+
'e' // 18e - french/spanish ordinal
|
|
1800
1863
|
]);
|
|
1801
1864
|
|
|
1802
1865
|
const numberUnit = function (terms, i) {
|
|
@@ -2268,7 +2331,7 @@
|
|
|
2268
2331
|
return Object.prototype.toString.call(val) === '[object Object]'
|
|
2269
2332
|
};
|
|
2270
2333
|
|
|
2271
|
-
function api$
|
|
2334
|
+
function api$c (View) {
|
|
2272
2335
|
|
|
2273
2336
|
/** find all matches in this document */
|
|
2274
2337
|
View.prototype.lookup = function (input, opts = {}) {
|
|
@@ -2326,7 +2389,7 @@
|
|
|
2326
2389
|
lib$4.compile = lib$4.buildTrie;
|
|
2327
2390
|
|
|
2328
2391
|
var lookup = {
|
|
2329
|
-
api: api$
|
|
2392
|
+
api: api$c,
|
|
2330
2393
|
lib: lib$4
|
|
2331
2394
|
};
|
|
2332
2395
|
|
|
@@ -2686,7 +2749,7 @@
|
|
|
2686
2749
|
const matchAPI = function (View) {
|
|
2687
2750
|
Object.assign(View.prototype, methods$c);
|
|
2688
2751
|
};
|
|
2689
|
-
var api$
|
|
2752
|
+
var api$b = matchAPI;
|
|
2690
2753
|
|
|
2691
2754
|
// match 'foo /yes/' and not 'foo/no/bar'
|
|
2692
2755
|
const bySlashes = /(?:^|\s)([![^]*(?:<[^<]*>)?\/.*?[^\\/]\/[?\]+*$~]*)(?:\s|$)/;
|
|
@@ -2992,45 +3055,59 @@
|
|
|
2992
3055
|
};
|
|
2993
3056
|
var splitHyphens$2 = splitHyphens$1;
|
|
2994
3057
|
|
|
3058
|
+
// add all conjugations of this verb
|
|
2995
3059
|
const addVerbs = function (token, world) {
|
|
2996
|
-
let {
|
|
2997
|
-
let
|
|
2998
|
-
|
|
2999
|
-
|
|
3060
|
+
let { all } = world.methods.two.transform.verb || {};
|
|
3061
|
+
let str = token.root;
|
|
3062
|
+
// if (toInfinitive) {
|
|
3063
|
+
// str = toInfinitive(str, world.model)
|
|
3064
|
+
// }
|
|
3065
|
+
if (!all) {
|
|
3066
|
+
return []
|
|
3067
|
+
}
|
|
3068
|
+
return all(str, world.model)
|
|
3000
3069
|
};
|
|
3001
3070
|
|
|
3071
|
+
// add all inflections of this noun
|
|
3002
3072
|
const addNoun = function (token, world) {
|
|
3003
|
-
let {
|
|
3004
|
-
|
|
3005
|
-
|
|
3006
|
-
|
|
3073
|
+
let { all } = world.methods.two.transform.noun || {};
|
|
3074
|
+
if (!all) {
|
|
3075
|
+
return [token.root]
|
|
3076
|
+
}
|
|
3077
|
+
return all(token.root, world.model)
|
|
3007
3078
|
};
|
|
3008
3079
|
|
|
3080
|
+
// add all inflections of this adjective
|
|
3009
3081
|
const addAdjective = function (token, world) {
|
|
3010
|
-
let {
|
|
3011
|
-
|
|
3012
|
-
|
|
3013
|
-
|
|
3014
|
-
|
|
3015
|
-
return res
|
|
3082
|
+
let { all } = world.methods.two.transform.adjective || {};
|
|
3083
|
+
if (!all) {
|
|
3084
|
+
return [token.root]
|
|
3085
|
+
}
|
|
3086
|
+
return all(token.root, world.model)
|
|
3016
3087
|
};
|
|
3017
3088
|
|
|
3018
3089
|
// turn '{walk}' into 'walking', 'walked', etc
|
|
3019
3090
|
const inflectRoot = function (regs, world) {
|
|
3020
3091
|
// do we have compromise/two?
|
|
3021
|
-
|
|
3022
|
-
|
|
3023
|
-
|
|
3024
|
-
if
|
|
3092
|
+
regs = regs.map(token => {
|
|
3093
|
+
// a reg to convert '{foo}'
|
|
3094
|
+
if (token.root) {
|
|
3095
|
+
// check if compromise/two is loaded
|
|
3096
|
+
if (world.methods.two && world.methods.two.transform) {
|
|
3025
3097
|
let choices = [];
|
|
3026
|
-
|
|
3098
|
+
// have explicitly set from POS - '{sweet/adjective}'
|
|
3099
|
+
if (token.pos) {
|
|
3100
|
+
if (token.pos === 'Verb') {
|
|
3101
|
+
choices = choices.concat(addVerbs(token, world));
|
|
3102
|
+
} else if (token.pos === 'Noun') {
|
|
3103
|
+
choices = choices.concat(addNoun(token, world));
|
|
3104
|
+
} else if (token.pos === 'Adjective') {
|
|
3105
|
+
choices = choices.concat(addAdjective(token, world));
|
|
3106
|
+
}
|
|
3107
|
+
} else {
|
|
3108
|
+
// do verb/noun/adj by default
|
|
3027
3109
|
choices = choices.concat(addVerbs(token, world));
|
|
3028
|
-
}
|
|
3029
|
-
if (!token.pos || token.pos === 'Noun') {
|
|
3030
3110
|
choices = choices.concat(addNoun(token, world));
|
|
3031
|
-
}
|
|
3032
|
-
// don't run these by default
|
|
3033
|
-
if (!token.pos || token.pos === 'Adjective') {
|
|
3034
3111
|
choices = choices.concat(addAdjective(token, world));
|
|
3035
3112
|
}
|
|
3036
3113
|
choices = choices.filter(str => str);
|
|
@@ -3038,10 +3115,16 @@
|
|
|
3038
3115
|
token.operator = 'or';
|
|
3039
3116
|
token.fastOr = new Set(choices);
|
|
3040
3117
|
}
|
|
3118
|
+
} else {
|
|
3119
|
+
// if no compromise/two, drop down into 'machine' lookup
|
|
3120
|
+
token.machine = token.root;
|
|
3121
|
+
delete token.id;
|
|
3122
|
+
delete token.root;
|
|
3041
3123
|
}
|
|
3042
|
-
|
|
3043
|
-
|
|
3044
|
-
}
|
|
3124
|
+
}
|
|
3125
|
+
return token
|
|
3126
|
+
});
|
|
3127
|
+
|
|
3045
3128
|
return regs
|
|
3046
3129
|
};
|
|
3047
3130
|
var inflectRoot$1 = inflectRoot;
|
|
@@ -3276,7 +3359,7 @@
|
|
|
3276
3359
|
const endQuote = /([\u0022\uFF02\u0027\u201D\u2019\u00BB\u203A\u2032\u2033\u2034\u301E\u00B4])/;
|
|
3277
3360
|
|
|
3278
3361
|
const hasHyphen$1 = /^[-–—]$/;
|
|
3279
|
-
const hasDash$1 = / [-–—] /;
|
|
3362
|
+
const hasDash$1 = / [-–—]{1,3} /;
|
|
3280
3363
|
|
|
3281
3364
|
/** search the term's 'post' punctuation */
|
|
3282
3365
|
const hasPost = (term, punct) => term.post.indexOf(punct) !== -1;
|
|
@@ -3298,6 +3381,8 @@
|
|
|
3298
3381
|
hasEllipses: term => hasPost(term, '..') || hasPost(term, '…') || hasPre(term, '..') || hasPre(term, '…'),
|
|
3299
3382
|
/** is there a semicolon after term word? */
|
|
3300
3383
|
hasSemicolon: term => hasPost(term, ';'),
|
|
3384
|
+
/** is there a colon after term word? */
|
|
3385
|
+
hasColon: term => hasPost(term, ':'),
|
|
3301
3386
|
/** is there a slash '/' in term word? */
|
|
3302
3387
|
hasSlash: term => /\//.test(term.text),
|
|
3303
3388
|
/** a hyphen connects two words like-term */
|
|
@@ -3680,17 +3765,82 @@
|
|
|
3680
3765
|
};
|
|
3681
3766
|
var doAndBlock = andBlock;
|
|
3682
3767
|
|
|
3768
|
+
const negGreedy = function (state, reg, nextReg) {
|
|
3769
|
+
let skip = 0;
|
|
3770
|
+
for (let t = state.t; t < state.terms.length; t += 1) {
|
|
3771
|
+
let found = matchTerm(state.terms[t], reg, state.start_i + state.t, state.phrase_length);
|
|
3772
|
+
// we don't want a match, here
|
|
3773
|
+
if (found) {
|
|
3774
|
+
break//stop going
|
|
3775
|
+
}
|
|
3776
|
+
// are we doing 'greedy-to'?
|
|
3777
|
+
// - "!foo+ after" should stop at 'after'
|
|
3778
|
+
if (nextReg) {
|
|
3779
|
+
found = matchTerm(state.terms[t], nextReg, state.start_i + state.t, state.phrase_length);
|
|
3780
|
+
if (found) {
|
|
3781
|
+
break
|
|
3782
|
+
}
|
|
3783
|
+
}
|
|
3784
|
+
skip += 1;
|
|
3785
|
+
// is it max-length now?
|
|
3786
|
+
if (reg.max !== undefined && skip === reg.max) {
|
|
3787
|
+
break
|
|
3788
|
+
}
|
|
3789
|
+
}
|
|
3790
|
+
if (skip === 0) {
|
|
3791
|
+
return false //dead
|
|
3792
|
+
}
|
|
3793
|
+
// did we satisfy min for !foo{min,max}
|
|
3794
|
+
if (reg.min && reg.min > skip) {
|
|
3795
|
+
return false//dead
|
|
3796
|
+
}
|
|
3797
|
+
state.t += skip;
|
|
3798
|
+
// state.r += 1
|
|
3799
|
+
return true
|
|
3800
|
+
};
|
|
3801
|
+
|
|
3802
|
+
var negGreedy$1 = negGreedy;
|
|
3803
|
+
|
|
3683
3804
|
// '!foo' should match anything that isn't 'foo'
|
|
3684
3805
|
// if it matches, return false
|
|
3685
3806
|
const doNegative = function (state) {
|
|
3686
3807
|
const { regs } = state;
|
|
3687
3808
|
let reg = regs[state.r];
|
|
3809
|
+
|
|
3810
|
+
// match *anything* but this term
|
|
3688
3811
|
let tmpReg = Object.assign({}, reg);
|
|
3689
3812
|
tmpReg.negative = false; // try removing it
|
|
3690
|
-
|
|
3691
|
-
if
|
|
3692
|
-
|
|
3813
|
+
|
|
3814
|
+
// found it? if so, we die here
|
|
3815
|
+
let found = matchTerm(state.terms[state.t], tmpReg, state.start_i + state.t, state.phrase_length);
|
|
3816
|
+
if (found) {
|
|
3817
|
+
return false//bye
|
|
3818
|
+
}
|
|
3819
|
+
// should we skip the term too?
|
|
3820
|
+
if (reg.optional) {
|
|
3821
|
+
// "before after" - "before !foo? after"
|
|
3822
|
+
// does the next reg match the this term?
|
|
3823
|
+
let nextReg = regs[state.r + 1];
|
|
3824
|
+
if (nextReg) {
|
|
3825
|
+
let fNext = matchTerm(state.terms[state.t], nextReg, state.start_i + state.t, state.phrase_length);
|
|
3826
|
+
if (fNext) {
|
|
3827
|
+
state.r += 1;
|
|
3828
|
+
} else if (nextReg.optional && regs[state.r + 2]) {
|
|
3829
|
+
// ugh. ok,
|
|
3830
|
+
// support "!foo? extra? need"
|
|
3831
|
+
// but don't scan ahead more than that.
|
|
3832
|
+
let fNext2 = matchTerm(state.terms[state.t], regs[state.r + 2], state.start_i + state.t, state.phrase_length);
|
|
3833
|
+
if (fNext2) {
|
|
3834
|
+
state.r += 2;
|
|
3835
|
+
}
|
|
3836
|
+
}
|
|
3837
|
+
}
|
|
3693
3838
|
}
|
|
3839
|
+
// negative greedy - !foo+ - super hard!
|
|
3840
|
+
if (reg.greedy) {
|
|
3841
|
+
return negGreedy$1(state, tmpReg, regs[state.r + 1])
|
|
3842
|
+
}
|
|
3843
|
+
state.t += 1;
|
|
3694
3844
|
return true
|
|
3695
3845
|
};
|
|
3696
3846
|
var doNegative$1 = doNegative;
|
|
@@ -3822,6 +3972,7 @@
|
|
|
3822
3972
|
* starting at this certain term.
|
|
3823
3973
|
*/
|
|
3824
3974
|
const tryHere = function (terms, regs, start_i, phrase_length) {
|
|
3975
|
+
// console.log(`\n\n:start: '${terms[0].text}':`)
|
|
3825
3976
|
if (terms.length === 0 || regs.length === 0) {
|
|
3826
3977
|
return null
|
|
3827
3978
|
}
|
|
@@ -3884,6 +4035,10 @@
|
|
|
3884
4035
|
}
|
|
3885
4036
|
// support '.' as any-single
|
|
3886
4037
|
if (reg.anything === true) {
|
|
4038
|
+
// '!.' negative anything should insta-fail
|
|
4039
|
+
if (reg.negative && reg.anything) {
|
|
4040
|
+
return null
|
|
4041
|
+
}
|
|
3887
4042
|
let alive = simpleMatch$1(state);
|
|
3888
4043
|
if (!alive) {
|
|
3889
4044
|
return null
|
|
@@ -3898,22 +4053,27 @@
|
|
|
3898
4053
|
}
|
|
3899
4054
|
continue
|
|
3900
4055
|
}
|
|
3901
|
-
// ok,
|
|
3902
|
-
|
|
3903
|
-
|
|
3904
|
-
let alive =
|
|
4056
|
+
// ok, it doesn't match - but maybe it wasn't *supposed* to?
|
|
4057
|
+
if (reg.negative) {
|
|
4058
|
+
// we want *anything* but this term
|
|
4059
|
+
let alive = doNegative$1(state);
|
|
3905
4060
|
if (!alive) {
|
|
3906
4061
|
return null
|
|
3907
4062
|
}
|
|
3908
4063
|
continue
|
|
3909
4064
|
}
|
|
3910
|
-
// ok,
|
|
3911
|
-
|
|
3912
|
-
|
|
4065
|
+
// ok, finally test the term-reg
|
|
4066
|
+
// console.log(' - ' + state.terms[state.t].text)
|
|
4067
|
+
let hasMatch = matchTerm(state.terms[state.t], reg, state.start_i + state.t, state.phrase_length);
|
|
4068
|
+
if (hasMatch === true) {
|
|
4069
|
+
let alive = simpleMatch$1(state);
|
|
3913
4070
|
if (!alive) {
|
|
3914
4071
|
return null
|
|
3915
4072
|
}
|
|
4073
|
+
continue
|
|
3916
4074
|
}
|
|
4075
|
+
// console.log('=-=-=-= here -=-=-=-')
|
|
4076
|
+
|
|
3917
4077
|
//ok who cares, keep going
|
|
3918
4078
|
if (reg.optional === true) {
|
|
3919
4079
|
continue
|
|
@@ -4078,7 +4238,7 @@
|
|
|
4078
4238
|
};
|
|
4079
4239
|
|
|
4080
4240
|
var match = {
|
|
4081
|
-
api: api$
|
|
4241
|
+
api: api$b,
|
|
4082
4242
|
methods: methods$a,
|
|
4083
4243
|
lib: lib$3,
|
|
4084
4244
|
};
|
|
@@ -4768,7 +4928,7 @@
|
|
|
4768
4928
|
if (fmt && typeof fmt === 'string' && fmts$1.hasOwnProperty(fmt)) {
|
|
4769
4929
|
opts = Object.assign({}, fmts$1[fmt]);
|
|
4770
4930
|
} else if (fmt && isObject$1(fmt)) {
|
|
4771
|
-
opts = Object.assign({},
|
|
4931
|
+
opts = Object.assign({}, opts, fmt);//todo: fixme
|
|
4772
4932
|
}
|
|
4773
4933
|
if (this.pointer) {
|
|
4774
4934
|
opts.keepSpace = false;
|
|
@@ -4790,10 +4950,10 @@
|
|
|
4790
4950
|
const addAPI$1 = function (View) {
|
|
4791
4951
|
Object.assign(View.prototype, methods$6);
|
|
4792
4952
|
};
|
|
4793
|
-
var api$
|
|
4953
|
+
var api$a = addAPI$1;
|
|
4794
4954
|
|
|
4795
4955
|
var output = {
|
|
4796
|
-
api: api$
|
|
4956
|
+
api: api$a,
|
|
4797
4957
|
methods: {
|
|
4798
4958
|
one: {
|
|
4799
4959
|
hash: md5
|
|
@@ -4929,7 +5089,7 @@
|
|
|
4929
5089
|
|
|
4930
5090
|
var splitAll$1 = splitAll;
|
|
4931
5091
|
|
|
4932
|
-
const max$1 =
|
|
5092
|
+
const max$1 = 20;
|
|
4933
5093
|
|
|
4934
5094
|
// sweep-around looking for our start term uuid
|
|
4935
5095
|
const blindSweep = function (id, doc, n) {
|
|
@@ -5205,11 +5365,11 @@
|
|
|
5205
5365
|
// add set/intersection/union
|
|
5206
5366
|
Object.assign(View.prototype, methods$4);
|
|
5207
5367
|
};
|
|
5208
|
-
var api$
|
|
5368
|
+
var api$9 = addAPI;
|
|
5209
5369
|
|
|
5210
5370
|
var pointers = {
|
|
5211
5371
|
methods: methods$5,
|
|
5212
|
-
api: api$
|
|
5372
|
+
api: api$9,
|
|
5213
5373
|
};
|
|
5214
5374
|
|
|
5215
5375
|
var lib$2 = {
|
|
@@ -5222,7 +5382,7 @@
|
|
|
5222
5382
|
}
|
|
5223
5383
|
};
|
|
5224
5384
|
|
|
5225
|
-
const api$
|
|
5385
|
+
const api$7 = function (View) {
|
|
5226
5386
|
|
|
5227
5387
|
/** speedy match a sequence of matches */
|
|
5228
5388
|
View.prototype.sweep = function (net, opts = {}) {
|
|
@@ -5266,7 +5426,7 @@
|
|
|
5266
5426
|
};
|
|
5267
5427
|
|
|
5268
5428
|
};
|
|
5269
|
-
var api$
|
|
5429
|
+
var api$8 = api$7;
|
|
5270
5430
|
|
|
5271
5431
|
// extract the clear needs for an individual match token
|
|
5272
5432
|
const getTokenNeeds = function (reg) {
|
|
@@ -5426,7 +5586,7 @@
|
|
|
5426
5586
|
});
|
|
5427
5587
|
// ensure nothing matches in our 'ifNo' property
|
|
5428
5588
|
list = list.filter(obj => {
|
|
5429
|
-
if (obj.ifNo !== undefined && obj.ifNo.some(no =>
|
|
5589
|
+
if (obj.ifNo !== undefined && obj.ifNo.some(no => haves.has(no)) === true) {
|
|
5430
5590
|
return false
|
|
5431
5591
|
}
|
|
5432
5592
|
return true
|
|
@@ -5447,7 +5607,7 @@
|
|
|
5447
5607
|
|
|
5448
5608
|
// finally,
|
|
5449
5609
|
// actually run these match-statements on the terms
|
|
5450
|
-
const runMatch = function (maybeList, document, methods, opts) {
|
|
5610
|
+
const runMatch = function (maybeList, document, docCache, methods, opts) {
|
|
5451
5611
|
let results = [];
|
|
5452
5612
|
for (let n = 0; n < maybeList.length; n += 1) {
|
|
5453
5613
|
for (let i = 0; i < maybeList[n].length; i += 1) {
|
|
@@ -5456,9 +5616,23 @@
|
|
|
5456
5616
|
let res = methods.one.match([document[n]], m);
|
|
5457
5617
|
// found something.
|
|
5458
5618
|
if (res.ptrs.length > 0) {
|
|
5459
|
-
// let index=document[n][0].index
|
|
5460
5619
|
res.ptrs.forEach(ptr => {
|
|
5461
5620
|
ptr[0] = n; // fix the sentence pointer
|
|
5621
|
+
// check ifNo
|
|
5622
|
+
// if (m.ifNo !== undefined) {
|
|
5623
|
+
// let terms = document[n].slice(ptr[1], ptr[2])
|
|
5624
|
+
// for (let k = 0; k < m.ifNo.length; k += 1) {
|
|
5625
|
+
// const no = m.ifNo[k]
|
|
5626
|
+
// // quick-check cache
|
|
5627
|
+
// if (docCache[n].has(no)) {
|
|
5628
|
+
// // console.log(no)
|
|
5629
|
+
// if (terms.find(t => t.normal === no || t.tags.has(no))) {
|
|
5630
|
+
// // console.log('+' + no)
|
|
5631
|
+
// return
|
|
5632
|
+
// }
|
|
5633
|
+
// }
|
|
5634
|
+
// }
|
|
5635
|
+
// }
|
|
5462
5636
|
let todo = Object.assign({}, m, { pointer: ptr });
|
|
5463
5637
|
if (m.unTag !== undefined) {
|
|
5464
5638
|
todo.unTag = m.unTag;
|
|
@@ -5500,16 +5674,8 @@
|
|
|
5500
5674
|
// if we don't have enough words
|
|
5501
5675
|
maybeList = tooSmall(maybeList, document);
|
|
5502
5676
|
|
|
5503
|
-
// maybeList.forEach((arr, i) => {
|
|
5504
|
-
// let txt = document[i].map(t => t.text).join(' ')
|
|
5505
|
-
// console.log(`==== ${txt} ====`)
|
|
5506
|
-
// arr.forEach(m => {
|
|
5507
|
-
// console.log(` - ${m.match}`)
|
|
5508
|
-
// })
|
|
5509
|
-
// })
|
|
5510
|
-
|
|
5511
5677
|
// now actually run the matches
|
|
5512
|
-
let results = runMatch$1(maybeList, document, methods, opts);
|
|
5678
|
+
let results = runMatch$1(maybeList, document, docCache, methods, opts);
|
|
5513
5679
|
// console.dir(results, { depth: 5 })
|
|
5514
5680
|
return results
|
|
5515
5681
|
};
|
|
@@ -5537,6 +5703,7 @@
|
|
|
5537
5703
|
const tagger$3 = function (list, document, world) {
|
|
5538
5704
|
const { model, methods } = world;
|
|
5539
5705
|
const { getDoc, setTag, unTag } = methods.one;
|
|
5706
|
+
const looksPlural = methods.two.looksPlural;
|
|
5540
5707
|
if (list.length === 0) {
|
|
5541
5708
|
return list
|
|
5542
5709
|
}
|
|
@@ -5565,9 +5732,12 @@
|
|
|
5565
5732
|
if (todo.tag !== undefined) {
|
|
5566
5733
|
setTag(terms, todo.tag, world, todo.safe, `[post] '${reason}'`);
|
|
5567
5734
|
// quick and dirty plural tagger
|
|
5568
|
-
if (
|
|
5569
|
-
|
|
5570
|
-
|
|
5735
|
+
if (todo.tag === 'Noun') {
|
|
5736
|
+
let term = terms[terms.length - 1];
|
|
5737
|
+
if (looksPlural(term.text)) {
|
|
5738
|
+
setTag([term], 'Plural', world, todo.safe, 'quick-plural');
|
|
5739
|
+
} else {
|
|
5740
|
+
setTag([term], 'Singular', world, todo.safe, 'quick-singular');
|
|
5571
5741
|
}
|
|
5572
5742
|
}
|
|
5573
5743
|
}
|
|
@@ -5590,7 +5760,7 @@
|
|
|
5590
5760
|
|
|
5591
5761
|
var sweep = {
|
|
5592
5762
|
lib: lib$2,
|
|
5593
|
-
api: api$
|
|
5763
|
+
api: api$8,
|
|
5594
5764
|
methods: {
|
|
5595
5765
|
one: methods$3,
|
|
5596
5766
|
}
|
|
@@ -5691,6 +5861,10 @@
|
|
|
5691
5861
|
tag.forEach(tg => setTag(terms, tg, world, isSafe));
|
|
5692
5862
|
return
|
|
5693
5863
|
}
|
|
5864
|
+
if (typeof tag !== 'string') {
|
|
5865
|
+
console.warn(`compromise: Invalid tag '${tag}'`);// eslint-disable-line
|
|
5866
|
+
return
|
|
5867
|
+
}
|
|
5694
5868
|
tag = tag.trim();
|
|
5695
5869
|
// support '#Noun . #Adjective' syntax
|
|
5696
5870
|
if (isMulti.test(tag)) {
|
|
@@ -5980,7 +6154,7 @@
|
|
|
5980
6154
|
const tagAPI = function (View) {
|
|
5981
6155
|
Object.assign(View.prototype, tag$1);
|
|
5982
6156
|
};
|
|
5983
|
-
var api$
|
|
6157
|
+
var api$6 = tagAPI;
|
|
5984
6158
|
|
|
5985
6159
|
// wire-up more pos-tags to our model
|
|
5986
6160
|
const addTags = function (tags) {
|
|
@@ -6034,12 +6208,16 @@
|
|
|
6034
6208
|
tagRank: tagRank$1
|
|
6035
6209
|
},
|
|
6036
6210
|
methods: methods$2,
|
|
6037
|
-
api: api$
|
|
6211
|
+
api: api$6,
|
|
6038
6212
|
lib: lib$1
|
|
6039
6213
|
};
|
|
6040
6214
|
|
|
6041
|
-
|
|
6215
|
+
// split by periods, question marks, unicode ⁇, etc
|
|
6216
|
+
const initSplit = /([.!?\u203D\u2E18\u203C\u2047-\u2049]+\s)/g;
|
|
6217
|
+
// merge these back into prev sentence
|
|
6218
|
+
const splitsOnly = /^[.!?\u203D\u2E18\u203C\u2047-\u2049]+\s$/;
|
|
6042
6219
|
const newLine = /((?:\r?\n|\r)+)/; // Match different new-line formats
|
|
6220
|
+
|
|
6043
6221
|
// Start with a regex:
|
|
6044
6222
|
const basicSplit = function (text) {
|
|
6045
6223
|
let all = [];
|
|
@@ -6049,7 +6227,14 @@
|
|
|
6049
6227
|
//split by period, question-mark, and exclamation-mark
|
|
6050
6228
|
let arr = lines[i].split(initSplit);
|
|
6051
6229
|
for (let o = 0; o < arr.length; o++) {
|
|
6052
|
-
|
|
6230
|
+
// merge 'foo' + '.'
|
|
6231
|
+
if (arr[o + 1] && splitsOnly.test(arr[o + 1]) === true) {
|
|
6232
|
+
arr[o] += arr[o + 1];
|
|
6233
|
+
arr[o + 1] = '';
|
|
6234
|
+
}
|
|
6235
|
+
if (arr[o] !== '') {
|
|
6236
|
+
all.push(arr[o]);
|
|
6237
|
+
}
|
|
6053
6238
|
}
|
|
6054
6239
|
}
|
|
6055
6240
|
return all
|
|
@@ -6106,6 +6291,114 @@
|
|
|
6106
6291
|
};
|
|
6107
6292
|
var smartMerge$1 = smartMerge;
|
|
6108
6293
|
|
|
6294
|
+
// merge embedded quotes into 1 sentence
|
|
6295
|
+
// like - 'he said "no!" and left.'
|
|
6296
|
+
const MAX_QUOTE = 280;// ¯\_(ツ)_/¯
|
|
6297
|
+
|
|
6298
|
+
// don't support single-quotes for multi-sentences
|
|
6299
|
+
const pairs = {
|
|
6300
|
+
'\u0022': '\u0022', // 'StraightDoubleQuotes'
|
|
6301
|
+
'\uFF02': '\uFF02', // 'StraightDoubleQuotesWide'
|
|
6302
|
+
// '\u0027': '\u0027', // 'StraightSingleQuotes'
|
|
6303
|
+
'\u201C': '\u201D', // 'CommaDoubleQuotes'
|
|
6304
|
+
// '\u2018': '\u2019', // 'CommaSingleQuotes'
|
|
6305
|
+
'\u201F': '\u201D', // 'CurlyDoubleQuotesReversed'
|
|
6306
|
+
// '\u201B': '\u2019', // 'CurlySingleQuotesReversed'
|
|
6307
|
+
'\u201E': '\u201D', // 'LowCurlyDoubleQuotes'
|
|
6308
|
+
'\u2E42': '\u201D', // 'LowCurlyDoubleQuotesReversed'
|
|
6309
|
+
'\u201A': '\u2019', // 'LowCurlySingleQuotes'
|
|
6310
|
+
'\u00AB': '\u00BB', // 'AngleDoubleQuotes'
|
|
6311
|
+
'\u2039': '\u203A', // 'AngleSingleQuotes'
|
|
6312
|
+
'\u2035': '\u2032', // 'PrimeSingleQuotes'
|
|
6313
|
+
'\u2036': '\u2033', // 'PrimeDoubleQuotes'
|
|
6314
|
+
'\u2037': '\u2034', // 'PrimeTripleQuotes'
|
|
6315
|
+
'\u301D': '\u301E', // 'PrimeDoubleQuotes'
|
|
6316
|
+
// '\u0060': '\u00B4', // 'PrimeSingleQuotes'
|
|
6317
|
+
'\u301F': '\u301E', // 'LowPrimeDoubleQuotesReversed'
|
|
6318
|
+
};
|
|
6319
|
+
const openQuote = RegExp('(' + Object.keys(pairs).join('|') + ')', 'g');
|
|
6320
|
+
const closeQuote = RegExp('(' + Object.values(pairs).join('|') + ')', 'g');
|
|
6321
|
+
|
|
6322
|
+
const closesQuote = function (str) {
|
|
6323
|
+
if (!str) {
|
|
6324
|
+
return false
|
|
6325
|
+
}
|
|
6326
|
+
let m = str.match(closeQuote);
|
|
6327
|
+
if (m !== null && m.length === 1) {
|
|
6328
|
+
return true
|
|
6329
|
+
}
|
|
6330
|
+
return false
|
|
6331
|
+
};
|
|
6332
|
+
|
|
6333
|
+
// allow micro-sentences when inside a quotation, like:
|
|
6334
|
+
// the doc said "no sir. i will not beg" and walked away.
|
|
6335
|
+
const quoteMerge = function (splits) {
|
|
6336
|
+
let arr = [];
|
|
6337
|
+
for (let i = 0; i < splits.length; i += 1) {
|
|
6338
|
+
let split = splits[i];
|
|
6339
|
+
// do we have an open-quote and not a closed one?
|
|
6340
|
+
let m = split.match(openQuote);
|
|
6341
|
+
if (m !== null && m.length === 1) {
|
|
6342
|
+
|
|
6343
|
+
// look at the next sentence for a closing quote,
|
|
6344
|
+
if (closesQuote(splits[i + 1]) && splits[i + 1].length < MAX_QUOTE) {
|
|
6345
|
+
splits[i] += splits[i + 1];// merge them
|
|
6346
|
+
arr.push(splits[i]);
|
|
6347
|
+
splits[i + 1] = '';
|
|
6348
|
+
i += 1;
|
|
6349
|
+
continue
|
|
6350
|
+
}
|
|
6351
|
+
// look at n+2 for a closing quote,
|
|
6352
|
+
if (closesQuote(splits[i + 2])) {
|
|
6353
|
+
let toAdd = splits[i + 1] + splits[i + 2];// merge them all
|
|
6354
|
+
//make sure it's not too-long
|
|
6355
|
+
if (toAdd.length < MAX_QUOTE) {
|
|
6356
|
+
splits[i] += toAdd;
|
|
6357
|
+
arr.push(splits[i]);
|
|
6358
|
+
splits[i + 1] = '';
|
|
6359
|
+
splits[i + 2] = '';
|
|
6360
|
+
i += 2;
|
|
6361
|
+
continue
|
|
6362
|
+
}
|
|
6363
|
+
}
|
|
6364
|
+
}
|
|
6365
|
+
arr.push(splits[i]);
|
|
6366
|
+
}
|
|
6367
|
+
return arr
|
|
6368
|
+
};
|
|
6369
|
+
var quoteMerge$1 = quoteMerge;
|
|
6370
|
+
|
|
6371
|
+
const MAX_LEN = 250;// ¯\_(ツ)_/¯
|
|
6372
|
+
|
|
6373
|
+
// support unicode variants?
|
|
6374
|
+
// https://stackoverflow.com/questions/13535172/list-of-all-unicodes-open-close-brackets
|
|
6375
|
+
const hasOpen = /\(/g;
|
|
6376
|
+
const hasClosed = /\)/g;
|
|
6377
|
+
const mergeParens = function (splits) {
|
|
6378
|
+
let arr = [];
|
|
6379
|
+
for (let i = 0; i < splits.length; i += 1) {
|
|
6380
|
+
let split = splits[i];
|
|
6381
|
+
let m = split.match(hasOpen);
|
|
6382
|
+
if (m !== null && m.length === 1) {
|
|
6383
|
+
// look at next sentence, for closing parenthesis
|
|
6384
|
+
if (splits[i + 1] && splits[i + 1].length < MAX_LEN) {
|
|
6385
|
+
let m2 = splits[i + 1].match(hasClosed);
|
|
6386
|
+
if (m2 !== null && m.length === 1 && !hasOpen.test(splits[i + 1])) {
|
|
6387
|
+
// merge in 2nd sentence
|
|
6388
|
+
splits[i] += splits[i + 1];
|
|
6389
|
+
arr.push(splits[i]);
|
|
6390
|
+
splits[i + 1] = '';
|
|
6391
|
+
i += 1;
|
|
6392
|
+
continue
|
|
6393
|
+
}
|
|
6394
|
+
}
|
|
6395
|
+
}
|
|
6396
|
+
arr.push(splits[i]);
|
|
6397
|
+
}
|
|
6398
|
+
return arr
|
|
6399
|
+
};
|
|
6400
|
+
var parensMerge = mergeParens;
|
|
6401
|
+
|
|
6109
6402
|
//(Rule-based sentence boundary segmentation) - chop given text into its proper sentences.
|
|
6110
6403
|
// Ignore periods/questions/exclamations used in acronyms/abbreviations/numbers, etc.
|
|
6111
6404
|
//regs-
|
|
@@ -6124,9 +6417,13 @@
|
|
|
6124
6417
|
// First do a greedy-split..
|
|
6125
6418
|
let splits = simpleSplit(text);
|
|
6126
6419
|
// Filter-out the crap ones
|
|
6127
|
-
let
|
|
6420
|
+
let sentences = simpleMerge(splits);
|
|
6128
6421
|
//detection of non-sentence chunks:
|
|
6129
|
-
|
|
6422
|
+
sentences = smartMerge$1(sentences, world);
|
|
6423
|
+
// allow 'he said "no sir." and left.'
|
|
6424
|
+
sentences = quoteMerge$1(sentences);
|
|
6425
|
+
// allow 'i thought (no way!) and left.'
|
|
6426
|
+
sentences = parensMerge(sentences);
|
|
6130
6427
|
//if we never got a sentence, return the given text
|
|
6131
6428
|
if (sentences.length === 0) {
|
|
6132
6429
|
return [text]
|
|
@@ -6226,7 +6523,7 @@
|
|
|
6226
6523
|
const isBoundary = /^[!?.]+$/;
|
|
6227
6524
|
const naiiveSplit = /(\S+)/;
|
|
6228
6525
|
|
|
6229
|
-
let notWord = ['.', '?', '!', ':', ';', '-', '–', '—', '--', '...', '(', ')', '[', ']', '"', "'", '`'];
|
|
6526
|
+
let notWord = ['.', '?', '!', ':', ';', '-', '–', '—', '--', '...', '(', ')', '[', ']', '"', "'", '`', '«', '»', '*'];
|
|
6230
6527
|
notWord = notWord.reduce((h, c) => {
|
|
6231
6528
|
h[c] = true;
|
|
6232
6529
|
return h
|
|
@@ -6292,38 +6589,66 @@
|
|
|
6292
6589
|
};
|
|
6293
6590
|
var splitTerms = splitWords;
|
|
6294
6591
|
|
|
6592
|
+
const allowBefore = [
|
|
6593
|
+
'#', //#hastag
|
|
6594
|
+
'@', //@atmention
|
|
6595
|
+
'_',//underscore
|
|
6596
|
+
// '\\-',//-4 (escape)
|
|
6597
|
+
'+',//+4
|
|
6598
|
+
'.',//.4
|
|
6599
|
+
];
|
|
6600
|
+
const allowAfter = [
|
|
6601
|
+
'%',//88%
|
|
6602
|
+
'_',//underscore
|
|
6603
|
+
'°',//degrees, italian ordinal
|
|
6604
|
+
// '\'',// \u0027
|
|
6605
|
+
];
|
|
6606
|
+
|
|
6295
6607
|
//all punctuation marks, from https://en.wikipedia.org/wiki/Punctuation
|
|
6608
|
+
let beforeReg = new RegExp(`[${allowBefore.join('')}]+$`, '');
|
|
6609
|
+
let afterReg = new RegExp(`^[${allowAfter.join('')}]+`, '');
|
|
6610
|
+
|
|
6296
6611
|
//we have slightly different rules for start/end - like #hashtags.
|
|
6297
|
-
const
|
|
6298
|
-
|
|
6299
|
-
const endings =
|
|
6300
|
-
/[ \n\t.'[\](){}⟨⟩:,،、‒–—―…!‹›«»‐\-?‘’;/⁄·&*@•^†‡°¡¿※#№÷׺ª‰+−=‱¶′″‴§~|‖¦©℗®℠™¤₳฿\u0022\uFF02\u201D\u00B4\u301E]+$/;
|
|
6612
|
+
const endings = /[\p{Punctuation}\s]+$/u;
|
|
6613
|
+
const startings = /^[\p{Punctuation}\s]+/u;
|
|
6301
6614
|
const hasApostrophe$1 = /['’]/;
|
|
6302
6615
|
const hasAcronym = /^[a-z]\.([a-z]\.)+/i;
|
|
6303
|
-
const minusNumber = /^[-+.][0-9]/;
|
|
6304
6616
|
const shortYear = /^'[0-9]{2}/;
|
|
6617
|
+
const isNumber = /^-[0-9]/;
|
|
6305
6618
|
|
|
6306
6619
|
const normalizePunctuation = function (str) {
|
|
6307
6620
|
let original = str;
|
|
6308
6621
|
let pre = '';
|
|
6309
6622
|
let post = '';
|
|
6310
|
-
//
|
|
6623
|
+
// adhoc cleanup for pre
|
|
6311
6624
|
str = str.replace(startings, found => {
|
|
6312
|
-
|
|
6313
|
-
|
|
6314
|
-
if (
|
|
6315
|
-
pre = '';
|
|
6316
|
-
return
|
|
6625
|
+
// punctuation symboles like '@' to allow at start of term
|
|
6626
|
+
let m = found.match(beforeReg);
|
|
6627
|
+
if (m) {
|
|
6628
|
+
pre = found.replace(beforeReg, '');
|
|
6629
|
+
return m
|
|
6317
6630
|
}
|
|
6318
6631
|
// support years like '97
|
|
6319
6632
|
if (pre === `'` && shortYear.test(str)) {
|
|
6320
6633
|
pre = '';
|
|
6321
6634
|
return found
|
|
6322
6635
|
}
|
|
6636
|
+
// support prefix negative signs like '-45'
|
|
6637
|
+
if (found === '-' && isNumber.test(str)) {
|
|
6638
|
+
return found
|
|
6639
|
+
}
|
|
6640
|
+
pre = found; //keep it
|
|
6323
6641
|
return ''
|
|
6324
6642
|
});
|
|
6643
|
+
// ad-hoc cleanup for post
|
|
6325
6644
|
str = str.replace(endings, found => {
|
|
6326
|
-
|
|
6645
|
+
// punctuation symboles like '@' to allow at start of term
|
|
6646
|
+
let m = found.match(afterReg);
|
|
6647
|
+
if (m) {
|
|
6648
|
+
post = found.replace(afterReg, '');
|
|
6649
|
+
return m
|
|
6650
|
+
}
|
|
6651
|
+
|
|
6327
6652
|
// keep s-apostrophe - "flanders'" or "chillin'"
|
|
6328
6653
|
if (hasApostrophe$1.test(found) && /[sn]['’]$/.test(original) && hasApostrophe$1.test(pre) === false) {
|
|
6329
6654
|
post = post.replace(hasApostrophe$1, '');
|
|
@@ -6331,9 +6656,10 @@
|
|
|
6331
6656
|
}
|
|
6332
6657
|
//keep end-period in acronym
|
|
6333
6658
|
if (hasAcronym.test(str) === true) {
|
|
6334
|
-
post =
|
|
6659
|
+
post = found.replace(/^\./, '');
|
|
6335
6660
|
return '.'
|
|
6336
6661
|
}
|
|
6662
|
+
post = found;//keep it
|
|
6337
6663
|
return ''
|
|
6338
6664
|
});
|
|
6339
6665
|
//we went too far..
|
|
@@ -6477,9 +6803,10 @@
|
|
|
6477
6803
|
};
|
|
6478
6804
|
var fromString = parse$1;
|
|
6479
6805
|
|
|
6480
|
-
const isAcronym$2 = /[ .][A-Z]\.? *$/i;
|
|
6481
|
-
const hasEllipse$1 = /(?:\u2026|\.{2,}) *$/;
|
|
6806
|
+
const isAcronym$2 = /[ .][A-Z]\.? *$/i; //asci - 'n.s.a.'
|
|
6807
|
+
const hasEllipse$1 = /(?:\u2026|\.{2,}) *$/; // '...'
|
|
6482
6808
|
const hasLetter$1 = /\p{L}/u;
|
|
6809
|
+
const leadInit = /^[A-Z]\. $/; // "W. Kensington"
|
|
6483
6810
|
|
|
6484
6811
|
/** does this look like a sentence? */
|
|
6485
6812
|
const isSentence$2 = function (str, abbrevs) {
|
|
@@ -6491,6 +6818,10 @@
|
|
|
6491
6818
|
if (isAcronym$2.test(str) === true) {
|
|
6492
6819
|
return false
|
|
6493
6820
|
}
|
|
6821
|
+
// check for leading initial - "W. Kensington"
|
|
6822
|
+
if (str.length === 3 && leadInit.test(str)) {
|
|
6823
|
+
return false
|
|
6824
|
+
}
|
|
6494
6825
|
//check for '...'
|
|
6495
6826
|
if (hasEllipse$1.test(str) === true) {
|
|
6496
6827
|
return false
|
|
@@ -6609,7 +6940,6 @@
|
|
|
6609
6940
|
'lt',
|
|
6610
6941
|
'maj',
|
|
6611
6942
|
'messrs',
|
|
6612
|
-
'mister',
|
|
6613
6943
|
'mlle',
|
|
6614
6944
|
'mme',
|
|
6615
6945
|
'mr',
|
|
@@ -6630,7 +6960,7 @@
|
|
|
6630
6960
|
'sir',
|
|
6631
6961
|
'sr',
|
|
6632
6962
|
'supt',
|
|
6633
|
-
'surg'
|
|
6963
|
+
'surg'
|
|
6634
6964
|
//miss
|
|
6635
6965
|
//misses
|
|
6636
6966
|
];
|
|
@@ -7121,10 +7451,10 @@
|
|
|
7121
7451
|
return this
|
|
7122
7452
|
};
|
|
7123
7453
|
|
|
7124
|
-
const api$
|
|
7454
|
+
const api$4 = function (View) {
|
|
7125
7455
|
View.prototype.autoFill = autoFill;
|
|
7126
7456
|
};
|
|
7127
|
-
var api$
|
|
7457
|
+
var api$5 = api$4;
|
|
7128
7458
|
|
|
7129
7459
|
// generate all the possible prefixes up-front
|
|
7130
7460
|
const getPrefixes = function (arr, opts, world) {
|
|
@@ -7206,7 +7536,7 @@
|
|
|
7206
7536
|
};
|
|
7207
7537
|
var typeahead = {
|
|
7208
7538
|
model: model$2,
|
|
7209
|
-
api: api$
|
|
7539
|
+
api: api$5,
|
|
7210
7540
|
lib,
|
|
7211
7541
|
compute: compute$1,
|
|
7212
7542
|
hooks: ['typeahead']
|
|
@@ -7365,15 +7695,16 @@
|
|
|
7365
7695
|
};
|
|
7366
7696
|
var reverse$1 = reverse;
|
|
7367
7697
|
|
|
7368
|
-
// generated in ./learn/tiger/conjugate
|
|
7369
7698
|
var presentModel = {
|
|
7370
|
-
rules: '
|
|
7371
|
-
exceptions: '
|
|
7699
|
+
rules: 'elten|ilt,erraten|3ät,ädieren|6,schehen|3ieht,ermögen|3ag,mgeben|5,hlaufen|6,usagen|5,ufgehen|6,rblühen|6,fechten|1icht,prengen|6,pfehlen|2iehlt,rtreten|6,eunigen|6,etragen|3ägt,egegnen|6,rstoßen|6,itragen|3ägt,ntgeben|6,fährden|6,orsehen|6,ufhören|6,chreien|5st,etteln|5st,nflehen|5st,osen|2te,esen|iest,tteilen|6,uziehen|6,rinken|5,egeben|5,rocknen|6t,uslösen|6,zichten|6,edürfen|2arf,edauern|6e,erden|3,brufen|5,flussen|6,öten|3,eharren|6,tsinnen|6,chützen|6,eloben|5,hwellen|2illt,pfinden|6,kziehen|6,eweinen|6,rletzen|6,blösen|5,chulden|6,ssaugen|6,ekehren|6,lasen|1äst,imessen|6,rzerren|6,ekennen|6,bachten|6,ulassen|6,chgehen|6,nplanen|6,bnen|3,tmen|3t,chämen|5,fhalten|2ält,ßachten|6,erauben|6,rspüren|6,agern|4e,rmeiden|6,rdenken|6,nfahren|2ährt,ntraten|3ät,chussen|3ßt,ktreten|6,hhalten|2ält,efehlen|2iehlt,rbünden|6,nrufen|5,ingeben|6,tfahren|2ährt,techen|1icht,nehaben|4t,andern|5e,fdecken|6,axen|2te,blassen|3ßt,nnähern|6e,rnähren|6,nbahnen|6,hlingen|6,twerten|6,hwenden|6,esellen|6,stlegen|6,shalten|6,fremden|6,ifahren|6,ttragen|3ägt,ffangen|2ingen,hdenken|6,eheben|5,edanken|6,idmen|4t,sweiten|6,rzeihen|6,edrigen|6,rderben|2irbt,uellen|1illt,fwerfen|6,sbluten|6,ddieren|6,ebären|2iert,choten|4te,limmern|6e,öchten|5,ehüten|5,öffnen|5t,eraten|2ät,stützen|6,werben|1irbt,ehalten|2ält,nlegen|5,ordnen|5t,chlafen|3äft,amieren|6,issen|1ßt,waschen|1äscht,thalten|2ält,rhalten|6,fangen|1ängt,rühren|5,tstehen|6,rtragen|3ägt,helfen|1ilft,laden|1ädt,sterben|2irbt,treffen|2ifft,wachsen|1ächst,passen|2ßt,tun|2t,fassen|2ßt,essen|ißt,werfen|1irft,treten|2itt,gnen|3t,sehen|1ieht,laufen|1äuft,chnen|4t,lassen|1äßt,nehmen|1immt,rechen|1icht,geben|1ibt,fallen|1ällt,den|2t,eln|2t,ern|2t,ten|2t,en|t',
|
|
7700
|
+
exceptions: 'halten|1ält,verlangen|8,bestehen|7,wissen|1eiß,rechnen|6,anschauen|8,sehen|4,denken|5,wirken|5,raten|1ät,darstellen|9,gehören|6,schlagen|4ägt,einbeziehen|10,hungern|6e,fahren|1ühren,ruhen|4,fühlen|5,freuen|4te,kommentieren|11,verschmelzen|11,speisen|6,versuchen|8,steuern|6e,ausschlagen|7ägt,entgegenstehen|13,streben|6,lauten|5,feiern|Feiert,engagieren|9,melden|Melden,erteilen|Erteilt,verstreichen|11,durchleuchten|12,greifen|Greift,erhalten|3ält,regeln|5e,präsentieren|11,entwickeln|7le,existieren|9,angehen|6,wimmern|6st,weißen|Weißt,spüren|Spürst,gefangenhalten|9ält,vorankommen|10,ignorieren|9,tragen|5,stoßen|2ößt,fertigen|6te,umschlagen|6ägt,erwirtschaften|13,billigen|7,verdienen|8,rauchen|6,tauschen|Tauschen,betrachten|9,zielen|5,werben|5,appellieren|10,tangieren|8,sorgen|5,verhandeln|7le,durchschlagen|12,unterdrücken|11,zahlen|5,verbrauchen|10,graben|2äbt,rücken|5,gebrauchen|9,erfahren|3ährt,unterliegen|10,registrieren|11,verbessern|9e,bedenken|7,anschicken|9,gegenüberstehen|14,fernhalten|9,sparen|5,blockieren|9,verhalten|4ält,schicken|6st,rauskommen|9,zuschauen|8,profitieren|10,lieben|5,bewundern|8e,rechtfertigen|12,vorwerfen|4irfst,vorfinden|8,brechen|6,tagen|Tagt,verstecken|9,offenhalten|6ält,grenzen|6,verbergen|4irgt,weigern|6e,verlaufen|8,malen|2hlt,entgegennehmen|13,gestatten|Gestatten,vergleichen|10,prägen|5,behindern|8e,sicherstellen|12,untersagen|9,reden|4,kaufen|5,anrichten|8,beuten|5,verfahren|8,verschlagen|7ägt,übereinstimmen|13,verschieben|10,zehren|5,strotzen|7,blühen|Blüht,abstammen|8,koppeln|6e,bevorstehen|10,schrecken|8,pressen|3ßt,aufschlagen|7ägt,hassen|5,bergen|5,antreffen|8,anweisen|7,totschlagen|2dtschlägt,berücksichtigen|Berücksichtigen,rutschen|7,autorisieren|11,offerieren|Offeriert,folen|3gen,brennen|6,beabsichtigen|12,veranlassen|10,verbleiben|9,anhalten|7,abschneiden|10,dehnen|5,essen|4,gleichkommen|11,beschaffen|9,entschuldigen|12,küssen|2ßt,anpassen|7,tendieren|8,erzeugen|7,tarnen|5,zersetzen|8,kollaborieren|12,aufbringen|9,überwachen|9,verstellen|9,täuschen|7,offenstehen|10,ergehen|6,unterschlagen|9ägt,entgegenschlagen|15,verhelfen|8,erschöpfen|9,telefonieren|Telefoniert,stabilisieren|12,abweichen|8,backen|5,bereinigen|Bereinigt,wandeln|4le,zusammengehen|12,expandieren|10,abwickeln|6le,einhalten|8,schmelzen|4ilzt,wiedertreffen|12,müssen|5,lecken|5,einschlagen|10,wetten|Wetten,erkaufen|7,gelten|1ilt,hissen|2ßt',
|
|
7701
|
+
rev: 'hnelt|4n,schieht|3ehen,rinnert|6n,erficht|3echten,eißelt|5n,immerst|5n,chreist|5en,ettelst|5n,nflehst|5en,tößt|1oßen,ergißt|3essen,iest|esen,ähert|4n,räbt|1aben,rleiert|6n,chwillt|3ellen,chickst|5en,rwirfst|2erfen,läst|1asen,erbirgt|3ergen,ermißt|4ssen,ufhält|3alten,reßt|2ssen,uschußt|5ssen,rchhält|4alten,uchert|5n,ticht|1echen,nnehat|5ben,erblaßt|5ssen,rillert|6n,uillt|1ellen,ebiert|2ären,chmilzt|3elzen,ßert|3n,fiehlt|1ehlen,behält|3alten,enhält|3alten,erhält|3alten,mißt|1essen,frißt|2essen,schläft|4afen,tschert|6n,ssert|4n,wäscht|1aschen,pert|3n,auert|4n,thält|2alten,fängt|1angen,kert|3n,fährt|1ahren,hilft|1elfen,lädt|1aden,trifft|2effen,felt|3n,wächst|1achsen,paßt|2ssen,zelt|3n,tut|2n,rät|1aten,faßt|2ssen,mmelt|4n,pelt|3n,wirft|1erfen,chelt|4n,belt|3n,fert|3n,schlägt|4agen,irbt|erben,trägt|2agen,tritt|2eten,bert|3n,ichert|5n,delt|3n,mmert|4n,telt|3n,sieht|1ehen,läuft|1aufen,euert|4n,läßt|1assen,selt|3n,nimmt|1ehmen,kelt|3n,richt|1echen,gibt|1eben,fällt|1allen,gert|3n,gelt|3n,tert|3n,dert|3n,et|1n,t|en,eiß|issen,ermag|3ögen,ühren|ahren,olgen|2en,ffingen|2angen,reute|3en,egele|4n,ertigte|5en,oste|2en,bessere|6n,oppele|5n,axte|2en,nnähere|6n,chotte|4en,limmere|6n,uere|3n,wickle|4eln,andle|3eln,gere|3n,ndere|4n,e|1n,edarf|2ürfen,erd|3en'
|
|
7372
7702
|
};
|
|
7373
7703
|
|
|
7374
7704
|
var pastModel = {
|
|
7375
|
-
rules: '
|
|
7376
|
-
exceptions: '
|
|
7705
|
+
rules: 'klimmen|2omm,iziehen|2ogen,hwellen|2oll,ulassen|2ieße,rlieren|2or,sdehnen|5ten,efehlen|2ahl,rkünden|6te,rtönen|4ten,nregen|4ten,esitzen|2aß,ehalten|2ielt,ufgeben|3aben,blehnen|5ten,pfehlen|2ahl,hlingen|2angen,efinden|2anden,elten|alt,otten|4ten,haupten|6te,tdecken|5ten,ewegen|4te,etonen|4te,chlafen|3iefen,egeben|2aben,toppen|4ten,hmlegen|5ten,eenden|5ten,tlassen|2ieß,etragen|3ug,chuften|6ten,etreten|3äten,liehen|1ohen,üsten|4te,flegen|4ten,erebben|5te,ühmen|3te,rsitzen|2aß,pfangen|2ing,ntragen|5ten,schehen|3ah,rhängen|5te,eidigen|5ten,hneiden|2itten,rwarten|6ten,elaufen|2iefen,rumpfen|5te,itragen|3ug,scheren|5ten,rspüren|5ten,tliegen|2agen,lingeln|6ten,rbitten|2aten,längern|6ten,rringen|2ang,greißen|2issen,rsinken|2anken,udieren|5ten,ingehen|3ing,osten|4ten,hädigen|5te,lüchten|6ten,liessen|1oß,ermuten|6ten,erüben|4ten,ekennen|2annten,redigen|5ten,rgraben|3ub,tiieren|5ten,prühen|4ten,lvieren|5ten,idmen|4te,ermögen|4chten,erehren|5ten,hwinden|2anden,rägen|3te,helegen|5ten,rhöhen|4ten,trömen|4ten,ümpeln|5ten,edrohen|5te,umgehen|3ing,rmorden|6ten,ewerten|6ten,drucken|5ten,pflügen|5ten,nstigen|5ten,tinken|1ank,rqueren|5ten,usten|4ten,ftragen|5ten,rehen|3te,ilmen|3te,erknien|6te,röffnen|6te,hezeien|5te,ürgern|5ten,fheulen|5ten,öten|3te,nlasten|6ten,undigen|5te,rwürgen|5te,egegnen|6ten,standen|6te,efallen|2iel,rbosen|4te,ulegen|4ten,palten|5te,rlauben|5ten,ejahen|4te,egehen|2ingen,fährden|6ten,inbüßen|5ten,lucksen|5te,rleihen|2ieh,ufrufen|3iefe,mpieren|5ten,uwinken|5ten,rwähnen|5te,tfalten|6te,tfallen|2iele,sfallen|2iel,chwören|3oren,gnieren|5ten,rsachen|5te,rwenden|6ten,ugehen|2ingen,ressen|1aßen,flügeln|6ten,nwenden|2andte,eitigen|5ten,ehmigen|5te,fdecken|5ten,nweisen|2iesen,enügen|4ten,slaufen|2iefen,utmaßen|5te,gräumen|5ten,rgolden|6ten,rwägen|2og,rüfen|3te,ruhigen|5ten,umpen|3ten,uellen|1oll,erübeln|6ten,hleppen|5ten,ohnen|3te,ewirken|5ten,anschen|5ten,inzeren|5ten,östigen|5ten,chellen|5ten,hwemmen|5ten,irieren|5ten,orzugen|5te,tarten|5ten,peisen|4ten,tuieren|5ten,bildern|6ten,nlassen|2ieß,elieren|5ten,ekunden|6ten,rwachen|5te,lanen|3te,chaden|5te,npassen|3ßte,eliegen|2ag,spießen|5te,stragen|3ug,rrieren|5ten,hwimmen|2ammen,altigen|5ten,ewerfen|2arfen,nrücken|5ten,tapeln|5ten,okern|4ten,sbilden|6ten,twerden|2urde,rlieben|5te,rlocken|5ten,kliegen|2ag,limmern|6ten,sfüllen|5ten,ewahren|5ten,chweben|5ten,ungern|5ten,hillern|6ten,blaufen|2ief,mpören|4ten,bziehen|2ogen,rneinen|5ten,gwöhnen|5ten,edürfen|2urfte,ringern|6ten,ichtern|6ten,alzen|3ten,efragen|5ten,olstern|6ten,emahnen|5ten,pannen|4ten,rimmen|4te,rwiegen|2ogen,orwagen|5ten,nfangen|2ingen,ulichen|5ten,bgeben|2äben,hringen|2ang,esten|4te,rhelfen|2alfen,stücken|5ten,uhören|4ten,penden|5ten,strafen|5te,sweiten|6te,rsorgen|5te,nallen|4ten,glassen|2ießen,rfangen|2ing,chämen|4te,mlaufen|2iefen,bdecken|5ten,oltern|5ten,ilassen|2ießen,lündern|6ten,ewerben|2arb,esetzen|5ten,ufhören|5ten,tmen|3te,erfegen|5ten,bwenden|6ten,forsten|6te,ümmeln|5ten,btun|2aten,ertun|3aten,prengen|5te,trengen|5ten,zwecken|5ten,ersten|arsten,erkern|5ten,efreien|5te,chalten|6te,eiraten|6te,risten|5te,tocken|4ten,hlaufen|2ief,ckgehen|3ing,fnehmen|2ähmen,chüren|4ten,nnahmen|5ten,rwalten|6te,kreiden|6te,lummern|6ten,remsen|4te,umieren|5ten,siegeln|6ten,treifen|5te,nachten|6ten,rdieren|5ten,rösten|5ten,illegen|5ten,mkommen|2amen,rtiefen|5ten,ohren|3ten,augen|og,bsetzen|5ten,klaufen|2ief,fhäufen|5te,lühen|3ten,üssen|ußte,erlesen|3as,apieren|5ten,uslosen|5ten,ächen|3te,rdauern|6ten,uftun|3äte,erkeln|5ten,umpeln|5ten,alieren|5ten,ahnden|5ten,nreihen|5ten,öschen|4ten,auben|3te,ordnen|5ten,eiern|4ten,erholen|5ten,rleiben|5te,hweigen|2ieg,cheinen|2ienen,ürchten|6ten,treiten|2itt,mühen|3te,sammeln|6ten,währen|4ten,stufen|4te,chreien|3ie,mitteln|6ten,treiken|5ten,pringen|2ang,lagern|5ten,leiden|1itten,folgen|4ten,graben|2uben,rdigen|4te,aunen|3ten,bergen|1arg,heben|1ob,harren|4ten,uldigen|5ten,laden|1ud,rlaufen|2iefen,amieren|5ten,isten|4ten,senden|1andte,regen|3te,zünden|5ten,issen|1ßte,denken|1achten,ruhen|3te,tagen|3te,rliegen|2ag,kaufen|4te,wachsen|1uchs,edigen|4te,sorgen|4ten,heißen|1ieß,ähen|2te,buchen|4ten,trinken|2ank,ummen|3te,eimen|3te,hoffen|4ten,nsetzen|5ten,dichten|6ten,rgießen|2oß,nten|3te,nbaren|4ten,affen|3te,fragen|4te,mucken|4ten,usgehen|3ingen,streben|5ten,meiden|1ied,üben|2te,oppeln|5ten,dringen|2angen,passen|2ßten,chützen|5ten,ammen|3te,singen|1ang,rasen|3ten,lasten|5te,horchen|5te,zeigen|4ten,hängen|1ingen,ngehen|2ingen,ausen|3te,wählen|4ten,wandern|6ten,wehen|3te,lden|3te,innen|annen,cheiden|2ied,ndigen|4ten,eden|3te,ehnen|3te,erben|arben,rufen|1ief,fliegen|2ogen,wingen|1ang,frieren|2or,rmen|2te,ahnen|3te,fassen|2ßten,rgehen|2ing,dienen|4te,stimmen|5te,einigen|5ten,bieten|1ot,essen|aß,sitzen|1aßen,leiten|5te,zeugen|4ten,langen|4te,ven|1te,üpfen|3te,stoßen|2ießen,uten|3te,lingen|1ang,raten|1iet,äumen|3te,klagen|4te,ügen|2te,rbeiten|6ten,üßen|2te,steigen|2iegen,fahren|1uhr,treffen|2af,ppen|2te,reisen|4ten,sehen|1ah,ösen|2te,lichen|4te,achen|3ten,reiben|1ieb,werfen|1arf,sagen|3te,ligen|3te,rnen|2te,tten|3te,rten|3te,treten|2at,pfen|2ten,gnen|3te,eißen|iß,ften|3te,bringen|2achte,leben|3te,chlagen|3ug,eichen|ich,uchen|3te,ennen|annte,fallen|1ielen,legen|3te,ziehen|1og,chnen|4te,halten|1ielten,weisen|1ies,inden|and,ießen|ossen,uen|1te,stehen|2and,geben|1ab,nehmen|1ahm,schen|3te,chten|4te,tigen|3te,kommen|1am,zen|1te,eln|2te,len|1te,ken|1te,ern|2te,ren|1te',
|
|
7706
|
+
exceptions: 'wünschen|6ten,aussprechen|6achen,machen|4te,entsprechen|6achen,halten|1ielte,sprechen|3ach,loben|3te,lassen|1ieß,suchen|Suchte,argumentieren|11ten,erlassen|3ießen,brechen|2achen,rebellieren|9ten,demonstrieren|11ten,versuchen|7ten,erreichen|7te,tragen|2ugen,gehen|1ingen,stehen|2ünden,rufen|1iefen,schaffen|3uf,gehören|5ten,fassen|2ßte,protestieren|10ten,gründen|6te,schließen|4oß,teilen|4ten,organisieren|10ten,haben|Hätte,begreifen|4iffen,rutschen|6ten,laufen|1ief,liegen|1ag,bitten|1at,heben|1oben,beschränken|9ten,besiedeln|8ten,wissen|1ußten,verlangen|7ten,warnen|4ten,deuten|5ten,treffen|2afen,bleiben|2ieben,meinen|4te,greifen|2iff,bekräftigen|9ten,treiben|2ieben,landen|5ten,verschieben|6oben,errichten|8ten,drohen|4ten,einlegen|6ten,begründen|8ten,neigen|4te,reichen|5ten,fehlen|4ten,brauchen|6ten,richten|6ten,unterschreiben|9ieben,verweigern|9ten,versprechen|6ach,wenden|1andte,feuern|5ten,steigen|2ieg,stammen|5ten,übergeben|5aben,öffnen|5ten,rollen|4ten,verbrennen|5annten,ändern|5ten,fangen|1ingen,tun|1at,denken|1achte,wirken|4ten,einschätzen|9ten,beschließen|6oß,präsentieren|10ten,drängen|5ten,siegen|4ten,sinken|1ank,bestehen|4ünde,begleiten|8ten,ignorieren|8ten,verbringen|5achten,verbreiten|9te,versperren|8ten,fahren|1uhren,gestalten|8te,blockieren|8ten,entstehen|5anden,beabsichtigen|11ten,ordnen|5te,erfordern|8ten,verstärken|8ten,beteiligen|8ten,veranschlagen|11ten,diskutieren|9ten,veranstalten|11ten,verlassen|4ieß,votieren|6ten,überlassen|5ieß,brennen|2annten,widersprechen|8ächen,ausstellen|8ten,verschmelzen|7olzen,mißhandeln|9ten,anstehen|4anden,scheiden|3ieden,vorherrschen|10ten,lieben|4ten,verdrängen|8te,werben|1arb,blicken|5ten,gleichen|2ichen,sichern|6ten,enthalten|4ielt,annehmen|3ahmen,kumulieren|8ten,enden|4te,skandieren|8ten,eintreffen|5afen,lauschen|6ten,weinen|4ten,sollen|4test,fortschreiten|8itt,identifizieren|12ten,beschenken|8ten,abstimmen|7ten,existieren|8ten,reifen|4ten,verkämpfen|8te,urteilen|6ten,unterschreiten|9itt,tauchen|5ten,tummeln|6ten,verschenken|9ten,hegen|3ten,zustimmen|7ten,merken|4ten,interessieren|11ten,mögen|1ochte,bereiten|7te,entschuldigen|11te,ergreifen|4iff,naturalisieren|12ten,schmelzen|4olz,kehren|4ten,trauern|6ten,operieren|7ten,kleiden|6te,schmähen|6ten,behandeln|8ten,rechtfertigen|11ten,absperren|7ten,bezweifeln|9ten,vorliegen|4ägen,betrachten|9ten,widersetzen|9ten,steigern|7ten,ergeben|3äben,basieren|6ten,weiterfahren|7ühre,beten|4te,erfassen|4ßte,zeihen|1iehen,kichern|6ten,breiten|6te,zusammenbrechen|10achen,verhindern|9ten,ausreichen|8ten,aufbrechen|5achen,auszeichnen|10ten,wagen|3te,zwingen|2angen,honorieren|8ten,einbeziehen|6ogen,hinterlassen|7ießen,passieren|7ten,weitergehen|7inge,reiben|1ieben,debattieren|Debattierten,kleben|4ten,werden|1ard,hinzukommen|6amen,einen|3te,animieren|7ten,zerlegen|6ten,einbrechen|5ach,gleiten|2itt,mitarbeiten|10te,erfolgen|6te,einschließen|7oß,polieren|6ten,blättern|7ten,nutzen|4ten,ausbreiten|9ten,helfen|1alf,wägen|1ogen,lesen|1asen,eignen|5ten,hemmen|4te,schieben|3ob,überreichen|9te,übertragen|6ug,erkranken|7ten,unterbreiten|11ten,residieren|8ten,erhören|5ten,bauen|3ten,schreiten|4itten,ausbleiben|5ieb,eilen|3ten,einschreiten|7itten,erwirtschaften|13ten,unterscheiden|8iedet,unken|Unkten,trennen|5ten,zuspitzen|7ten,münden|5te,garantieren|9ten,verklären|7ten,nähern|5ten,erarbeiten|9te,insistieren|9ten,vorhalten|4ielt,betteln|6ten,abschütteln|10ten,zieren|4ten,regieren|6ten,vorbereiten|10ten,wiegen|1og,recken|4ten,davonkommen|6ämen,einziehen|4ogen,trauen|4ten,favorisieren|10ten,zusammenkommen|9amen,vortragen|5ugen,reden|4ten,unterstehen|7ünden,erwachsen|3üchse,einreisen|7te,zirkulieren|9ten,waschen|1usch,verdächtigen|10ten,inspizieren|9ten,auskundschaften|14ten,säumen|4ten,sein|wart,befrachten|9ten,weiten|5ten,solidarisieren|12ten,verbleiben|5ieben,umstellen|7ten,zugutekommen|7amen,zurückreichen|11ten,finanzieren|9ten,anhalten|3ielt,flachen|5te,vermindern|9ten,versteigen|5ieg,hinnehmen|4ähme,unterbrechen|7ach,unterlaufen|6ief,weiterproduzieren|15ten,kosen|3tet,musizieren|8ten,toben|3ten,häufen|4ten,berechnen|8ten,herausdringen|8ang,miterleben|8ten,korrigieren|9ten,aufbringen|5ächten,versagen|6ten,praktizieren|10ten,kandidieren|9ten,erschließen|6oß,herankommen|6amen,schauen|5ten,intonieren|8ten,vegetieren|8ten,kriechen|2ochen,ritzen|4ten,aufgreifen|5iffen,unterbleiben|7ieb,jagen|3ten,wildern|6ten,diskriminieren|12ten,aufgehen|4ing,tanzen|4ten,vertragen|5ügen,zusammenhalten|9ielte,hocken|4ten,verstecken|8ten,durchklingen|7angen,trachten|7ten,weiterdebattieren|15ten,verbilligen|9ten,mehren|4ten,dominieren|Dominierten,schirmen|Schirmte,draufgehen|6ingen,beißen|1isse,ersetzen|6ten,provozieren|9ten,ausbrechen|5ach,aufarbeiten|10te,festschreiben|8ieben,überfordern|10ten,spekulieren|9ten,schütten|7ten,gebrauchen|8ten,unterziehen|6ogen,nützen|4ten,modellieren|9ten,ansiedeln|8ten,wickeln|6ten,zurückfordern|12ten,ringen|1angen,anschließen|6oß,waten|4ten,riechen|1och,ausschließen|7össen,zukommen|3äme,hantieren|7ten,verhärten|8ten,verteilen|7ten,saugen|1og',
|
|
7707
|
+
rev: 'rklomm|3immen,nahm|1ehmen,kam|1ommen,uließe|2assen,estünde|3ehen,ochte|ögen,erführe|3ahren,ufriefe|3ufen,erginge|3ehen,ntfiele|3allen,npaßte|3ssen,ntwurde|3erden,rwüchse|2achsen,edurfte|2ürfen,eitelte|5n,innähme|3ehmen,isse|eißen,ußte|üssen,uftäte|3un,ukäme|2ommen,felte|3n,herte|3n,kelte|3n,mmerte|4n,ißte|1ssen,faßte|2ssen,ickerte|5n,schrie|4eien,empelte|5n,ttelte|4n,hielte|1alten,äußerte|5n,nerte|3n,mmelte|4n,perte|3n,ferte|3n,berte|3n,belte|3n,andte|enden,zelte|3n,selte|3n,delte|3n,brachte|2ingen,gerte|3n,annte|ennen,gelte|3n,uerte|3n,derte|3n,terte|3n,ete|1n,te|en,chuf|2affen,alf|elfen,griff|2eifen,rief|1ufen,traf|2effen,warf|1erfen,lief|1aufen,efanden|2inden,ußten|issen,hliefen|2afen,schoben|3ieben,eträten|3eten,lohen|1iehen,euerten|4n,rachten|1ingen,stlagen|3iegen,uhren|ahren,erbaten|3itten,grissen|2eißen,rsanken|2inken,prächen|2echen,kannten|1ennen,hmolzen|2elzen,chieden|2eiden,möchten|2gen,hwanden|2inden,lichen|1eichen,nnahmen|2ehmen,orlägen|3iegen,iehen|eihen,chworen|3ören,raßen|1essen,nwiesen|2eisen,asen|esen,äherten|4n,hwammen|2immen,onkämen|3ommen,ewarfen|2erfen,llerten|4n,erwogen|3iegen,rhalfen|2elfen,rächten|1ingen,rochen|1iechen,rtrügen|3agen,arsten|ersten,fnähmen|2ehmen,hlössen|2ießen,eierten|4n,griffen|2eifen,chienen|2einen,rannten|1ennen,standen|2ehen,gruben|2aben,trafen|2effen,auerten|4n,dachten|1enken,gäben|1eben,hritten|2eiten,kerten|3n,mmerten|4n,trugen|2agen,stünden|2ehen,fingen|1angen,taten|1un,hingen|1ängen,annen|innen,gaben|1eben,itten|eiden,arben|erben,flogen|2iegen,saßen|1itzen,stießen|2oßen,ließen|1assen,stiegen|2eigen,terten|3n,rachen|1echen,zogen|1iehen,liefen|1aufen,aßten|1ssen,kamen|1ommen,angen|ingen,ieben|eiben,fielen|1allen,gerten|3n,gingen|1ehen,hielten|1alten,ossen|ießen,derten|3n,elten|2n,eten|1n,ten|en,alt|elten,olltest|3en,chiedet|2eiden,ostet|2en,bot|1ieten,riet|1aten,hielt|1alten,itt|eiten,trat|2eten,tschloß|5iessen,saß|1itzen,hieß|1eißen,aß|essen,ließ|1assen,iß|eißen,oß|ießen,tergrub|5aben,chob|2ieben,hob|1eben,warb|1erben,ieb|eiben,gab|1eben,chmolz|3elzen,erlieh|3eihen,usch|aschen,och|iechen,rach|1echen,ah|ehen,ich|eichen,ard|erden,lud|1aden,band|1inden,ied|eiden,fand|1inden,stand|2ehen,rwog|2ägen,fing|1angen,barg|1ergen,ieg|eigen,lag|1iegen,ging|1ehen,zog|1iehen,ug|agen,ang|ingen,erlas|3esen,wuchs|1achsen,wies|1eisen,oll|ellen,fahl|1ehlen,fiel|1allen,or|ieren,fuhr|1ahren,ank|inken'
|
|
7377
7708
|
};
|
|
7378
7709
|
|
|
7379
7710
|
let infToPresent = uncompress$1(presentModel);
|
|
@@ -7397,8 +7728,24 @@
|
|
|
7397
7728
|
return convert$1(str, pastToInf)
|
|
7398
7729
|
};
|
|
7399
7730
|
|
|
7731
|
+
const all = function (str) {
|
|
7732
|
+
let arr = [str];
|
|
7733
|
+
let past = toPast(str);
|
|
7734
|
+
if (past !== str) {
|
|
7735
|
+
arr.push(past);
|
|
7736
|
+
}
|
|
7737
|
+
let present = toPresent(str);
|
|
7738
|
+
if (present !== str) {
|
|
7739
|
+
arr.push(present);
|
|
7740
|
+
}
|
|
7741
|
+
return arr
|
|
7742
|
+
};
|
|
7743
|
+
|
|
7744
|
+
var verb = { toPresent, fromPresent, toPast, fromPast, all };
|
|
7400
7745
|
|
|
7401
|
-
|
|
7746
|
+
|
|
7747
|
+
// console.log(toPresent('zusammenzufuehren'))
|
|
7748
|
+
// console.log(toPast('gehen'))
|
|
7402
7749
|
|
|
7403
7750
|
// generated in ./lib/lexicon
|
|
7404
7751
|
var lexData = {
|
|
@@ -7409,7 +7756,7 @@
|
|
|
7409
7756
|
"Conjunction": "true¦bAd7entwed6falls,in5nach5o3so2und,w0zumal;e0ohingegen;d4il,nn2;lange,ndern,wie;b0d2;!glei3;dem;er;a1enn,o0;ch;ss,ß;e0zw;vor,ziehungsweise",
|
|
7410
7757
|
"Determiner": "true¦d2ein0;!e0;!m,n,r,s;as,e0ie;m,n,r,s",
|
|
7411
7758
|
"City": "true¦0:3A;a2Yb28c1Yd1Te1Sf1Qg1Kh1Ci1Ajakar2Jk11l0Um0Gn0Co0ApZquiYrVsLtCuBv8w3y1zuri22;ang1We1okohama;katerin1Krev0;ars4e3i1rocl4;ckl0Yn1;nipeg,terth0Z;llingt1Rxford;aw;a2i1;en2Klni33;lenc2Yncouv0Ir2J;lan bat0Ftrecht;a7bilisi,e6he5i4o3rondheim,u1;nWr1;in,ku;kyo,ronJulouD;anj26l16miso2Mra2D; haKssaloni10;gucigalpa,hr0l av0O;i1llinn,mpe2Engi09rtu;chu25n0pU;a4e3h2kopje,t1ydney;ockholm,uttga15;angh1Ienzh20;o0Nv01;int peters0Xl4n1ppo1I; 1ti1E;jo1salv3;se;v1z0T;adW;eykjavik,i2o1;me,sario,t28;ga,o de janei1A;to;a9e7h6i5o3r1ueb1Tyongya1Q;a1etor28;gue;rt1zn0; elizabe4o;ls1Jrae28;iladelph23nom pe0Aoenix;r1tah tik1C;th;lerLr1tr13;is;dessa,s1ttawa;a1Klo;a3ew 1is;delWtaip1york ci1U;ei;goya,nt0Xpl0Xv0;a7e6i5o2u1;mb0Oni0L;nt2sco1;u,w;evideo,real;l0n03skolc;dellín,lbour0U;drid,l6n4r1;ib2se1;ille;or;chest1dalYi11;er;mo;a6i3o1vCy03;nd1s angel0H;on,r0G;ma1nz,sb00verpo2;!ss1;ol; pla0Jusan0G;a6hark5i4laipeda,o2rak1uala lump3;ow;be,pavog1sice;ur;ev,ng9;iv;b4mpa0Lndy,ohsiu0Ira1un04;c1j;hi;ncheNstanb1̇zmir;ul;a6e4o1; chi mi2ms,u1;stJ;nh;lsin1rakliH;ki;ifa,m1noi,va0B;bu0UiltE;alw5dan4en3hent,iza,othen2raz,ua1;dalaj0Hngzhou;bu0R;eVoa,ève;sk;ay;es,rankfu1;rt;dmont5indhovV;a2ha02oha,u1;blSrb0shanbe;e1kar,masc0HugavpiK;gu,je1;on;a8ebu,h3o1raioKuriti02;lo1nstanKpenhagOrk;gGmbo;enn4i2ristchur1;ch;ang m2c1ttagoM;ago;ai;i1lgary,pe town,rac5;ro;aIeCirminghXogoBr6u1;char4dap4enos air3r1s0;g1sa;as;es;est;a3isba2usse1;ls;ne;silRtisla1;va;ta;i4lgrade,r1;g2l1n;in;en;ji1rut;ng;ku,n4r1sel;celo2ranquil1;la;na;g2ja lu1;ka;alo1kok;re;aDbBhmedabad,l8m5n3qa2sh1thens,uckland;dod,gabat;ba;k1twerp;ara;m0s1;terd1;am;exandr2ma1;ty;ia;idj0u dhabi;an;lbo2rh1;us;rg",
|
|
7412
|
-
"Verb": "true¦0:
|
|
7759
|
+
"Verb": "true¦0:4P;1:4I;2:4O;3:3W;4:3U;a4Ab3Gd3Be2Nf2Gg1Nh1Ci23k1Al15m12n10p0Yr0Ws0Ht0Bu05vSwFz7ä6über5;ne10ras2sp39trUwa2;nd2Uußer4;eBi2Qog0u5ä2Nög0;ge9rück6sammen5;geb4Mhä1;ge6zu5;drä1erob2P;ga1wies0;la4Hsp4Iw4A;igDrstö1Y;aFeDi9o8u7ä6ü5;nsche3rde3;hl0re3;rd0ß4;l17rd0;ch0der24e6r5s0S;d,ke3;derhol5s;e,te;i5r2N;ch0gere,st;ch0Mndt0r5;!en,f,n4;er8or5;ausg0Uge5lK;d2Kga1schl5;ag0;bCdBfüg0gAhä1l8mHrat0s6tret0wechs39öffentlich5;en,t;chli1pr5ucht2W;e2ic2Ao2;a1oren5;!g0M;a1e3Sli2;eutli2ie17rä1;ot0u36;mg0Inter5;br8l7st5;r5üP;ei2ich05;ag;i1o2;a8hro0Zr6ue,ä5;t0us2;a5in26ug;f,t0;pp0u5;ch0s2;a2VchEeCiAol09p9t5;a6e5reik0ärk0ü2S;c20i2Tll4;mm5ndT;e,t;iel0ra2;n5tz0;d,g0ke;i5tzt0;!d,en;a8ein0ienMl7rie6we2Aü5;tz0;!b;a2Iepp0;fOue;ei1Qief,uts2ä5üc1N;ch0um4;asElant1Wr5;ophezeit,äg0;a5iedeM;hm0;ach1Eein4i6öch4ü5;s9ßF;s2tb1Dßbrau2;a6ehn4ie27ud,ä5ös0;dt,g0;g6s5;se;!en;am0omme,rie2önne,ü5;mm0Pnd1L;aCer9in8of7ä5;n1Qt5;te3;fe;blä0Hg0wegtäus2;rs0Ivo5;rg5;ega1;be3l4nde6t5;!te3;le;ab0e7i6l5;aub0i2änz0;b,ng;bPdOfNga1halt0lu1mac0JpJrIsBt9w6z5;og0wu1;a6es0o5;nn0rd0;n1Us2;an,r5;ag0o0W;ch8p1Yt7u5;c0Bn5;g0k0;a07orb0ri2;a0Rl5;eu5o1S;st;at0u1;a6la5;nt;a5rkt;rt;aVu11;acZru1;e8o7r5;a5o2;cWucW;r0t0;!t0;a1eEiAorder9reige8uß0ördKü5;h5rc0S;le3r5;e,te3;sp1B;n,te3;el08ng0;ingeQmpfPntIr5;fFga1hEinnerDklär05läutCmögliYrAs7wäg0z5örtC;wu1ä5;hl0;ch5to2;i0o12ü5;tt7;ei5u1;che;ern;n,tX;ob0öhP;r00ü5;ll0;ga1la0Ts5;ch8pr6ta5;nd;a2e2ic5o2;ht;ei5ied0;de;a1ing;d5frQga1;ru1;en8r7urchd6ürf5;e,t0;ri1;a1i1ä1ück0;ke;aXe9i8liebEra5;cSu5;ch5;e3t;e4n;aQdien0fNgLherrs2kam0mängKnötiIrFsAt5wältG;on7r5;aPo5;ff0;en,t5;!e;ch7itze,p04tät5;ig5;en,te;ied,lo00w5äft7;or0;ichte4ücksicht5;ig0;te;ge3;!n;eln;an5li2onn0rab0;g0n;i6ürc5;ht0;nd0;bsichti5nspru2;ge;ng0ue;bFngeCu5;f9s5;ge5ma2;bIg6s5;cFpH;a1li2;ge5ma2;bEfa1ga1hob0zwu1;bot0fa1ga1spDw5;an5;dt;ge6hä1;ng0;b8s5;c5traft;hlo5;ss0;ro2;ch0;en",
|
|
7413
7760
|
"Noun": "true¦0:8A;1:7Z;2:89;3:7K;4:7H;5:7Q;6:87;7:7F;8:7P;9:5K;A:7B;B:84;a7Cb6Ec68d60e5Nf51g4Ah3Ti3Oj3Kk36l2Um27n20o1Zp1Kr16s0Gt07u03vSwHzDäCölvor5Jüber2J;gypten4Sngs3rz3;aEeDuCwic3E;ge,kä1Bstande5G;c4hn3Qit04l3;c6Ogr6T;aKeGiEocheCä4Lört2ürst2;!nC;!en7J;dersCnt1ssen4D;a4Zp5O;ge,hrpflichtige,iElt,n7GrCsen4T;n1rat36tC;!e,papi6U;g1se;ff0hl0ige9lC;den40es;arian3eIieHoC;igt,lk,rC;ab1Lg7Kpres2sCwürfe6;chußlorbe6NitzendeDtandsC;sp2PvA;!r;l77rteljahrhunde67;ned3PrC;antwortlic5brau4KdDgleic4haCkä0Plus3teid6F;l51ndlungst1N;acBächtige6;ltent2QmDnterCrN;geb4Sschri3U;brü2fr78sCwelt3D;chuldungs4Ntänd0;aHei9hyss0iGoFreDürC;!en;ndCpp2uhanda5O;!w7;de,nn0;e0Xg1s51;sc5tDuC;be,s7;sac5;aZchVeUiTkand2Non5DpOtEuDynod2Nz4UüC;d0pp2;c4detendeuts2mI;aJeIimHrEuCädt2;dieCf0nd0;ngebü3Qr7;aDeC;et,ß;t5Eß0;me6;inkohleze2l1Z;atsCdtrat,rza3T;a01di5U;arFd ErC;ac4echC;ch6Wer;frak3Ll4SvA;er,te;cBgnal6Wnn;i6Tuc5;arpings,e09in,neid1rDuld0wC;ierig0Käc5;eibt0MiCöd1;fts27tt;chCnkt,rajewo;e6sen-an5U;aOeGiFoEu4üC;ckCd58he;s16t5L;be4Wl1G;tu1Tv1;chGgierungsQiCst;h0sC;ch,eDighaC;uf0;!n5N;er2tC;e,saC;nwa8;c4hmen3A;aMeJfIhänom3Qioni4YoGrC;eDoCä08; kopf 08grammv1Ujek3tes3;isCsseE;absp61verfal9;lizeiCr2D;sp0V;enn1Xl0N;it2ArC;es,sC;onal,pek3Y;lästinense4MpieErC;lamentCol0teivA;es,swahl0;re;berfläc4f1Qliv1ppenheim1stslawonie1C;aGeEieDorCä4;be44drhein westf12;r0tz20;andert0QgativtrCuk24;end;chCme;b5Gr08s4Ft;aUcdonnTeQiJoIuGäFöglichEüC;lCn2;heim kärli34l1;keit0;d2rk3;lCseum;is30;dellcharakt1nats7rd;chae9eHlGnDtC;gefang2Gtwo2X;destDisterpräCut0;sident0;ein2B;itär,lia3U;rt,te;nDrC;kma02rD;achem,em,ge,schenre1C;ell;astrOl1nErktn45schinenDßC;e,n2G;!pistol0;ge9n;aIeGiFokal2SuCä32;dCft;ew0SwigC;!shaf3P;cBs3;ch,g7iCu4T;c5pz0O;ch1fontain2LndCst0teini11;eDgerC;icB;!sC;e18k12vA;aMe3BiKoGrDu2ZöCüc4;ln,nig4Nr3;a25iegsCu0U;en3TverbC;re1A;h9llekRmmun0nCst0;flik3tC;ak3rolC;le;nCrc5;ke9;bel,mpagn0rDss0tschthCuf;al1;is1Ut0;ahrEerusalDuCürg0;gendliche3Wppé;em;!es7hundertw7tausendw7zehnt;deFmperaEnDrCtali2Y;an,e24;ha8itiative6;tiv;al0;aJeFoDundertCäf0Tö4;taus7;eCr0T;ch0Sn0;broEn1WrCß;b0Qrn,sCzog;tell1;n 0T;ftJlInGuC;ptDshaltC;!sstreits;urs2NvC;erantwor0A;delsCs jo2;!ab0N;s,t;!a1O;a0EeIipHläub36mbh,oGrCünt1;oßofEundDöße,ünC;de6en;ig;fens35;lft20tt;fe9;bTfaRha8lPmeinde6nOrKsEwC;a8erkschaftC;en,svA;chFeCicBpräc5ta8;llCtze;schaC;ft0;iCwor08;ch3;ichtDäuC;sc4;!eC;!s;era9f;d,senkC;ir2;hr,ngeneC;n,r;ie3üC;hr0;aWdp0GeUiPlKoHrDäll0ührungseC;be0R;aDeiheiC;tli2;g0kCu0;tion1Q;l08rC;meln,sC;ch1;aFuDäc5üchC;tlin04;cBgangC;st;mm0sc5;liale6schC;!erC;!eiC;abC;komm0;ld,stgenommC;en0;ll28milienangehöriT;bNiHnGpoc4rDuC;le,ropä1;achDde,folg,ha8löse,wachC;en,sene1R;tens;de,tge8;m1nC;bFheiEnDzelhande9;ls;ahm0;m0Yt0;rüc4;ene6;am0eIgbHiEraDu0YörfC;ch0er;ch;enstDnCvid7;ge;e,mäd2; vA;fizi3legie12utsc5;du FhCo8;arakter1Lef,iC;le,nabesuchC;es;lCvA;ande0J;a02eTilSlutvergieß0oPrKuGüC;ch1hErgerC;!initiaC;tiv0;ne;ndesCrs2;aDhaus0FläCtagsabgeordne3vA;nder6;nsta8;ancheDief,oCöt2;schür0t;!nC;!kollC;eg0;rcCusquLx0;heC;rt;d,l;am3b0freiungstJhöIrGsEtrC;iCoffP;eb;chäftig0TucheC;r,s;ekCgsteEicht0Tnd;et;rd0;ig1;dHnErriDsf,ueC;rn;er0;an0kC;darlCen;eh0;en1;a2b0Bgab,kb0Al06nWrSsOuC;fFge,sC;lä06sCwei2;ag0chußvAicBprC;ac4;entIsDtC;ritt;ichtsratDtändC;is2;svA;orsiC;tz7;ha8;c4ylsuch7;enC;de;he;beitsEgumen3tenvielC;fa8;te;plätz0we8;geIhHlGsDtwoCwa8zeig0;rt0;icBprüc5ta8;lt;he6;ag0;äng1;hörCklagt0stellO;igeC;!n,r;exaDternatC;ive;nd1;er;ar;endIgeordneGhFsC;icBpC;ra2;ht;ör0;te6;!n;!e;ch0;en",
|
|
7414
7761
|
"Country": "true¦0:2Q;1:2P;a2Ib23c21d1Se1Lf1Hg19h18i13j10k0Rl0Nm0En05o04pYrVsKtEu7v4weißrusXz3ä2öster1I;quatorial02thiopi0;entralafrik1Type9;anuatu,e2ietnam;nezue2Jreinigte 2;arabische emira1Kstaat0;.6gan2GkraiLn2ruWsbeD;ga4ited 2;arab emirates,kingdom,states2;! of ame1T;rn;k.,s.2; virgin islands,a.;a5ha9o4rinidad und toba1Nsch3u2ürk1U;n0Trkme2Evalu;ad,echi0;go,nga;dschi2nsan0Y;ki2B;aAchwed0e9i7low6omal0Wpa1ri lan0Jt. 5u4was3y26ão tomé und príncipe,üd2;afri0IkNsud2A;il1D;d28riname;kitts und nevis,luc0Svincent und die grenadD;ak1Je1;erra leo2mbabwe,ngapur;ne;negKr03ychell0;lomon0m2n marino,udi-ara02;b0Moa;e15u2;an1Rmä1s2;sl12;a4eGhilipp3o2;l0rtugD;in0;ki1Tl0Cnama,pua-neu3ra2;guay;guin0L;m1Rsttim0O;a8e6i4or2;dk2weg0;or0H;caragua,ederlanRger2;!ia;p2useel0P;al;mib04u2;ru;a4exi7ikronUo2yanmK;ldawi0n2samb0I;aco,gol0Stenegro;dagaskHl5r3ur2zedo1;eta1itius;ok2shallinseln;ko;a2ediv0i,ta;wi,ysU;a0Re4i2uxemburg;b2echtenste0Ttau0;erRy0;sotho,tX;a6enPir5o3roati0u2önigreich großbritan1;ba,wait;lum2mor0;bi0;gisi0ZibaZ;m4na0Rp ver3sach0Yt2;ar;de;bodscha,erI;a2em0;mai2p0U;ka;nd4r3s2ta0H;lVrael;ak,lU;i0on2;esi0;aiMondur0A;a6ha01r5u2;atema0Einea2ya00;!-biss2;au;ena0Aieche8;b3mb2;ia;un;i3rank2;reiX;dschi,n2;nlF;cu6l4ritr3s2;tlD;ea; salv3fenbeinküs2;te;ad2;or;e6omini3schibu2änemark;ti;ca,k2;anische republ2;ik;mokratische re3utschl2;and;publik kon2;go;hi9osta 2;rica;aAe8hutSo6r4u2;lgaMr2;kina faso,undi;asiEun2;ei;livi0snien und herzegowi2tswa2;na;l2n7;gi0ize;h4nglades3rbad2;os;ch;am3ra2;in;as;fghaBl7n4r3serbaidschDustra2;li0;genti1me1;dorra,go3tigua und barbu2;da;la;ba1ge2;ri0;ni0;en;ni2;st2;an",
|
|
7415
7762
|
"Region": "true¦0:1S;1:20;a1Yb1Rc1Hd1Ces1Bf18g12h0Zi0Wj0Uk0Sl0Rm0GnZoXpSqPrMsDtAut9v6w4y2zacatec20;o05u2;cat17kZ;a2est vi4isconsin,yomi13;rwick0shington dc;er3i2;rgin1R;acruz,mont;ah,tar pradesh;a3e2laxca1DuscaB;nnessee,x1Q;bas0Kmaulip1PsmK;a7i5o3taf0Ou2ylh13;ffWrr02s0Y;me10no1Auth 2;cTdS;ber1Hc2naloa;hu0Sily;n3skatchew0Rxo2;ny; luis potosi,ta catari1;a2hode8;j2ngp04;asth0Mshahi;inghai,u2;e2intana roo;bec,ensYreta0E;ara5e3rince edward2; isW;i,nnsylv2rnambu02;an13;!na;axa0Ndisha,h2klaho1Antar2reg5x04;io;ayarit,eCo4u2;evo le2nav0L;on;r2tt0Rva scot0W;f7mandy,th2; 2ampton0;c4d3yo2;rk0;ako0X;aroli1;olk;bras0Wva01w2; 3foundland2;! and labrador;brunswick,hamp0jers3mexiJyork2;! state;ey;a7i3o2;nta1relos;ch4dlands,n3ss2;issippi,ouri;as geraFneso0K;igPoacP;dhya,harasht03ine,ni4r2ssachusetts;anhao,y2;land;p2toba;ur;anca0eiHincoln0ouis7;a2entucky,hul1;ns08rnata0Dshmir;alis2iangxi;co;daho,llino3nd2owa;ia1;is;a3ert2idalFunB;ford0;mp0waii;ansu,eorgWlou6u2;an3erre2izhou,jarat;ro;ajuato,gdo2;ng;cester0;lori3uji2;an;da;sex;e5o3uran2;go;rs2;et;lawaFrby0;a9ea8hi7o2umbrH;ahui5l4nnectic3rsi2ventry;ca;ut;iMorado;la;apEhuahua;ra;l8m2;bridge0peche;a5ritish columb7uck2;ingham0;shi2;re;h3ja cal2sque,var3;iforn2;ia;guascalientes,l5r2;izo1kans2;as;na;a3ber2;ta;ba3s2;ka;ma",
|
|
@@ -7594,12 +7941,12 @@
|
|
|
7594
7941
|
// add conjugations for our verbs
|
|
7595
7942
|
if (tag === 'Infinitive') {
|
|
7596
7943
|
// add present tense
|
|
7597
|
-
let pres =
|
|
7944
|
+
let pres = verb.toPresent(w);
|
|
7598
7945
|
if (pres && pres !== w) {
|
|
7599
7946
|
lexicon$1[pres] = 'PresentTense';
|
|
7600
7947
|
}
|
|
7601
7948
|
// add past tense
|
|
7602
|
-
let past =
|
|
7949
|
+
let past = verb.toPast(w);
|
|
7603
7950
|
if (past && past !== w) {
|
|
7604
7951
|
lexicon$1[past] = 'PastTense';
|
|
7605
7952
|
}
|
|
@@ -7611,11 +7958,90 @@
|
|
|
7611
7958
|
|
|
7612
7959
|
var lexicon$2 = lexicon$1;
|
|
7613
7960
|
|
|
7961
|
+
const verbForm = function (term) {
|
|
7962
|
+
let want = [
|
|
7963
|
+
'FirstPerson',
|
|
7964
|
+
'SecondPerson',
|
|
7965
|
+
'ThirdPerson',
|
|
7966
|
+
'FirstPersonPlural',
|
|
7967
|
+
'SecondPersonPlural',
|
|
7968
|
+
'ThirdPersonPlural',
|
|
7969
|
+
];
|
|
7970
|
+
return want.find(tag => term.tags.has(tag))
|
|
7971
|
+
};
|
|
7972
|
+
|
|
7973
|
+
//relajarse -> relajar
|
|
7974
|
+
const stripReflexive = function (str) {
|
|
7975
|
+
str = str.replace(/se$/, '');
|
|
7976
|
+
str = str.replace(/te$/, '');
|
|
7977
|
+
str = str.replace(/me$/, '');
|
|
7978
|
+
return str
|
|
7979
|
+
};
|
|
7980
|
+
|
|
7981
|
+
const root = function (view) {
|
|
7982
|
+
|
|
7983
|
+
const { verb, noun, adjective } = view.world.methods.two.transform;
|
|
7984
|
+
view.docs.forEach(terms => {
|
|
7985
|
+
terms.forEach(term => {
|
|
7986
|
+
let str = term.implicit || term.normal || term.text;
|
|
7987
|
+
|
|
7988
|
+
if (term.tags.has('Reflexive')) {
|
|
7989
|
+
str = stripReflexive(str);
|
|
7990
|
+
}
|
|
7991
|
+
// get infinitive form of the verb
|
|
7992
|
+
if (term.tags.has('Verb')) {
|
|
7993
|
+
let form = verbForm(term);
|
|
7994
|
+
if (term.tags.has('Gerund')) {
|
|
7995
|
+
term.root = verb.fromGerund(str, form);
|
|
7996
|
+
} else if (term.tags.has('PresentTense')) {
|
|
7997
|
+
term.root = verb.fromPresent(str, form);
|
|
7998
|
+
} else if (term.tags.has('PastTense')) {
|
|
7999
|
+
term.root = verb.fromPast(str, form);
|
|
8000
|
+
} else if (term.tags.has('FutureTense')) {
|
|
8001
|
+
term.root = verb.fromFuture(str, form);
|
|
8002
|
+
} else if (term.tags.has('Conditional')) {
|
|
8003
|
+
term.root = verb.fromConditional(str, form);
|
|
8004
|
+
} else ;
|
|
8005
|
+
}
|
|
8006
|
+
|
|
8007
|
+
// nouns -> singular masculine form
|
|
8008
|
+
// if (term.tags.has('Noun')) {
|
|
8009
|
+
// if (term.tags.has('Plural')) {
|
|
8010
|
+
// str = noun.toSingular(str)
|
|
8011
|
+
// }
|
|
8012
|
+
// if (term.tags.has('FemaleNoun')) {
|
|
8013
|
+
// // not sure about this
|
|
8014
|
+
// // str = noun.toMasculine(str)
|
|
8015
|
+
// }
|
|
8016
|
+
// term.root = str
|
|
8017
|
+
// }
|
|
8018
|
+
|
|
8019
|
+
// // nouns -> singular masculine form
|
|
8020
|
+
// if (term.tags.has('Adjective')) {
|
|
8021
|
+
// if (term.tags.has('PluralAdjective')) {
|
|
8022
|
+
// if (term.tags.has('FemaleAdjective')) {
|
|
8023
|
+
// str = adjective.fromFemalePlural(str)
|
|
8024
|
+
// } else {
|
|
8025
|
+
// str = adjective.toSingular(str)
|
|
8026
|
+
// }
|
|
8027
|
+
// }
|
|
8028
|
+
// if (term.tags.has('FemaleAdjective')) {
|
|
8029
|
+
// str = adjective.fromFemale(str)
|
|
8030
|
+
// }
|
|
8031
|
+
// term.root = str
|
|
8032
|
+
// }
|
|
8033
|
+
});
|
|
8034
|
+
});
|
|
8035
|
+
return view
|
|
8036
|
+
};
|
|
8037
|
+
var root$1 = root;
|
|
8038
|
+
|
|
7614
8039
|
var lexicon = {
|
|
8040
|
+
compute: { root: root$1 },
|
|
7615
8041
|
methods: {
|
|
7616
|
-
|
|
8042
|
+
two: {
|
|
7617
8043
|
transform: {
|
|
7618
|
-
|
|
8044
|
+
verb: verb
|
|
7619
8045
|
}
|
|
7620
8046
|
}
|
|
7621
8047
|
},
|
|
@@ -7744,7 +8170,7 @@
|
|
|
7744
8170
|
},
|
|
7745
8171
|
};
|
|
7746
8172
|
|
|
7747
|
-
var verbs$
|
|
8173
|
+
var verbs$2 = {
|
|
7748
8174
|
Verb: {
|
|
7749
8175
|
not: ['Noun', 'Adjective', 'Adverb', 'Value', 'Expression'],
|
|
7750
8176
|
},
|
|
@@ -7962,7 +8388,7 @@
|
|
|
7962
8388
|
},
|
|
7963
8389
|
};
|
|
7964
8390
|
|
|
7965
|
-
let tags = Object.assign({}, nouns$1, verbs$
|
|
8391
|
+
let tags = Object.assign({}, nouns$1, verbs$2, values$1, dates, misc);
|
|
7966
8392
|
|
|
7967
8393
|
var tagset = {
|
|
7968
8394
|
tags
|
|
@@ -8099,7 +8525,7 @@
|
|
|
8099
8525
|
|
|
8100
8526
|
let values = { more: [] };
|
|
8101
8527
|
let nouns = { more: [] };
|
|
8102
|
-
let verbs = { more: [] };
|
|
8528
|
+
let verbs$1 = { more: [] };
|
|
8103
8529
|
let adjectives = { more: [] };
|
|
8104
8530
|
|
|
8105
8531
|
var model$1 = {
|
|
@@ -8107,7 +8533,7 @@
|
|
|
8107
8533
|
splitter: {
|
|
8108
8534
|
values,
|
|
8109
8535
|
nouns,
|
|
8110
|
-
verbs,
|
|
8536
|
+
verbs: verbs$1,
|
|
8111
8537
|
adjectives
|
|
8112
8538
|
}
|
|
8113
8539
|
}
|
|
@@ -9230,9 +9656,9 @@
|
|
|
9230
9656
|
var format = formatNumber;
|
|
9231
9657
|
|
|
9232
9658
|
// return the nth elem of a doc
|
|
9233
|
-
const getNth = (doc, n) => (typeof n === 'number' ? doc.eq(n) : doc);
|
|
9659
|
+
const getNth$1 = (doc, n) => (typeof n === 'number' ? doc.eq(n) : doc);
|
|
9234
9660
|
|
|
9235
|
-
const api = function (View) {
|
|
9661
|
+
const api$2 = function (View) {
|
|
9236
9662
|
/** */
|
|
9237
9663
|
class Numbers extends View {
|
|
9238
9664
|
constructor(document, pointer, groups) {
|
|
@@ -9240,13 +9666,13 @@
|
|
|
9240
9666
|
this.viewType = 'Numbers';
|
|
9241
9667
|
}
|
|
9242
9668
|
parse(n) {
|
|
9243
|
-
return getNth(this, n).map(parse)
|
|
9669
|
+
return getNth$1(this, n).map(parse)
|
|
9244
9670
|
}
|
|
9245
9671
|
get(n) {
|
|
9246
|
-
return getNth(this, n).map(parse).map(o => o.num)
|
|
9672
|
+
return getNth$1(this, n).map(parse).map(o => o.num)
|
|
9247
9673
|
}
|
|
9248
9674
|
json(n) {
|
|
9249
|
-
let doc = getNth(this, n);
|
|
9675
|
+
let doc = getNth$1(this, n);
|
|
9250
9676
|
return doc.map(p => {
|
|
9251
9677
|
let json = p.toView().json(n)[0];
|
|
9252
9678
|
let parsed = parse(p);
|
|
@@ -9477,19 +9903,62 @@
|
|
|
9477
9903
|
}
|
|
9478
9904
|
// make sure splitter has run
|
|
9479
9905
|
m.compute('splitter');
|
|
9480
|
-
m = getNth(m, n);
|
|
9906
|
+
m = getNth$1(m, n);
|
|
9481
9907
|
return new Numbers(this.document, m.pointer)
|
|
9482
9908
|
};
|
|
9483
9909
|
// alias
|
|
9484
9910
|
View.prototype.values = View.prototype.numbers;
|
|
9485
9911
|
};
|
|
9486
|
-
var api$
|
|
9912
|
+
var api$3 = api$2;
|
|
9487
9913
|
|
|
9488
9914
|
var numbers = {
|
|
9489
|
-
api: api$
|
|
9915
|
+
api: api$3
|
|
9490
9916
|
};
|
|
9491
9917
|
|
|
9492
|
-
|
|
9918
|
+
const getNth = (doc, n) => (typeof n === 'number' ? doc.eq(n) : doc);
|
|
9919
|
+
|
|
9920
|
+
// get root form of adjective
|
|
9921
|
+
const getRoot = function (m, methods) {
|
|
9922
|
+
m.compute('root');
|
|
9923
|
+
let str = m.text('root');
|
|
9924
|
+
return str
|
|
9925
|
+
};
|
|
9926
|
+
|
|
9927
|
+
const api = function (View) {
|
|
9928
|
+
class Verbs extends View {
|
|
9929
|
+
constructor(document, pointer, groups) {
|
|
9930
|
+
super(document, pointer, groups);
|
|
9931
|
+
this.viewType = 'Verbs';
|
|
9932
|
+
}
|
|
9933
|
+
conjugate(n) {
|
|
9934
|
+
const methods = this.methods.two.transform.verb;
|
|
9935
|
+
const { toPresent, toPast, toFuture, toConditional, toGerund } = methods;
|
|
9936
|
+
return getNth(this, n).map(m => {
|
|
9937
|
+
let str = getRoot(m);
|
|
9938
|
+
return {
|
|
9939
|
+
presentTense: toPresent(str),
|
|
9940
|
+
pastTense: toPast(str),
|
|
9941
|
+
// futureTense: toFuture(str),
|
|
9942
|
+
// conditional: toConditional(str),
|
|
9943
|
+
// gerund: toGerund(str),
|
|
9944
|
+
}
|
|
9945
|
+
}, [])
|
|
9946
|
+
}
|
|
9947
|
+
}
|
|
9948
|
+
|
|
9949
|
+
View.prototype.verbs = function (n) {
|
|
9950
|
+
let m = this.match('#Verb+');
|
|
9951
|
+
m = getNth(m, n);
|
|
9952
|
+
return new Verbs(this.document, m.pointer)
|
|
9953
|
+
};
|
|
9954
|
+
};
|
|
9955
|
+
var api$1 = api;
|
|
9956
|
+
|
|
9957
|
+
var verbs = {
|
|
9958
|
+
api: api$1,
|
|
9959
|
+
};
|
|
9960
|
+
|
|
9961
|
+
var version = '0.0.6';
|
|
9493
9962
|
|
|
9494
9963
|
nlp$1.plugin(tokenizer);
|
|
9495
9964
|
nlp$1.plugin(tagset);
|
|
@@ -9498,13 +9967,25 @@
|
|
|
9498
9967
|
nlp$1.plugin(postTagger);
|
|
9499
9968
|
nlp$1.plugin(splitter);
|
|
9500
9969
|
nlp$1.plugin(numbers);
|
|
9501
|
-
|
|
9970
|
+
nlp$1.plugin(verbs);
|
|
9502
9971
|
|
|
9503
9972
|
const de = function (txt, lex) {
|
|
9504
9973
|
let dok = nlp$1(txt, lex);
|
|
9505
9974
|
return dok
|
|
9506
9975
|
};
|
|
9507
9976
|
|
|
9977
|
+
// copy constructor methods over
|
|
9978
|
+
Object.keys(nlp$1).forEach(k => {
|
|
9979
|
+
if (nlp$1.hasOwnProperty(k)) {
|
|
9980
|
+
de[k] = nlp$1[k];
|
|
9981
|
+
}
|
|
9982
|
+
});
|
|
9983
|
+
|
|
9984
|
+
// this one is hidden
|
|
9985
|
+
Object.defineProperty(de, '_world', {
|
|
9986
|
+
value: nlp$1._world,
|
|
9987
|
+
writable: true,
|
|
9988
|
+
});
|
|
9508
9989
|
/** log the decision-making to console */
|
|
9509
9990
|
de.verbose = function (set) {
|
|
9510
9991
|
let env = typeof process === 'undefined' ? self.env || {} : process.env; //use window, in browser
|