compromise
Version:
natural language processing in the browser
160 lines (159 loc) • 2.65 kB
JavaScript
'use strict';
//rules for turning a verb into infinitive form
let rules = {
Participle: [
{
reg: /own$/i,
to: 'ow'
},
{
reg: /(.)un([g|k])$/i,
to: '$1in$2'
}
],
Actor: [
{
reg: /(er)er$/i,
to: '$1'
}
],
PresentTense: [
{
reg: /(ies)$/i,
to: 'y'
}, {
reg: /(tch|sh)es$/i,
to: '$1'
}, {
reg: /(ss|zz)es$/i,
to: '$1'
}, {
reg: /([tzlshicgrvdnkmu])es$/i,
to: '$1e'
}, {
reg: /(n[dtk]|c[kt]|[eo]n|i[nl]|er|a[ytrl])s$/i,
to: '$1'
}, {
reg: /(ow)s$/i,
to: '$1'
}, {
reg: /(op)s$/i,
to: '$1'
}, {
reg: /([eirs])ts$/i,
to: '$1t'
}, {
reg: /(ll)s$/i,
to: '$1'
}, {
reg: /(el)s$/i,
to: '$1'
}, {
reg: /(ip)es$/i,
to: '$1e'
}, {
reg: /ss$/i,
to: 'ss'
}, {
reg: /s$/i,
to: ''
}],
Gerund: [
{
reg: /pping$/i,
to: 'p'
}, {
reg: /lling$/i,
to: 'll'
}, {
reg: /tting$/i,
to: 't'
}, {
reg: /ssing$/i,
to: 'ss'
}, {
reg: /gging$/i,
to: 'g'
}, {
reg: /([^aeiou])ying$/i,
to: '$1y'
}, {
reg: /([^ae]i.)ing$/i,
to: '$1e'
}, {
reg: /(ea.)ing$/i,
to: '$1'
}, {
reg: /(u[rtcb]|[bdtpkg]l|n[cg]|a[gdkvtc]|[ua]s|[dr]g|yz|o[rlsp]|cre)ing$/i,
to: '$1e'
}, {
reg: /(ch|sh)ing$/i,
to: '$1'
}, {
reg: /(..)ing$/i,
to: '$1'
}],
PastTense: [
{
reg: /(ued)$/i,
to: 'ue'
}, {
reg: /([aeiou]zz)ed$/i,
to: '$1'
}, {
reg: /(e|i)lled$/i,
to: '$1ll'
}, {
reg: /(sh|ch)ed$/i,
to: '$1'
}, {
reg: /(tl|gl)ed$/i,
to: '$1e'
}, {
reg: /(um?pt?)ed$/i,
to: '$1'
}, {
reg: /(ss)ed$/i,
to: '$1'
}, {
reg: /pped$/i,
to: 'p'
}, {
reg: /tted$/i,
to: 't'
}, {
reg: /gged$/i,
to: 'g'
}, {
reg: /(h|ion|n[dt]|ai.|[cs]t|pp|all|ss|tt|int|ail|ld|en|oo.|er|k|pp|w|ou.|rt|ght|rm)ed$/i,
to: '$1'
}, {
reg: /(.ut)ed$/i,
to: '$1e'
}, {
reg: /(us)ed$/i,
to: '$1e'
}, {
reg: /(..[^aeiouy])ed$/i,
to: '$1e'
}, {
reg: /ied$/i,
to: 'y'
}, {
reg: /(.o)ed$/i,
to: '$1o'
}, {
reg: /(.i)ed$/i,
to: '$1'
}, {
reg: /(a[^aeiou])ed$/i,
to: '$1'
}, {
reg: /([rl])ew$/i,
to: '$1ow'
}, {
reg: /([pl])t$/i,
to: '$1t'
}]
};
module.exports = rules;