compromise
Version:
natural language processing in the browser
58 lines (52 loc) • 1.69 kB
JavaScript
;
//list of inconsistent parts-of-speech
const conflicts = [
//top-level pos are all inconsistent
['Noun', 'Verb', 'Adjective', 'Adverb', 'Determiner', 'Conjunction', 'Preposition', 'QuestionWord', 'Expression', 'Url', 'PhoneNumber', 'Email', 'Emoji'],
//exlusive-nouns
['Person', 'Organization', 'Value', 'Place', 'Actor', 'Demonym', 'Pronoun'],
//things that can't be plural
['Plural', 'Singular'],
['Plural', 'Pronoun'],
['Plural', 'Person'],
['Plural', 'Organization'],
['Plural', 'Currency'],
['Plural', 'Ordinal'],
//exlusive-people
['MaleName', 'FemaleName'],
['FirstName', 'LastName', 'Honorific'],
//adjectives
['Comparative', 'Superlative'],
//values
['Value', 'Verb', 'Adjective'],
['Value', 'Year'],
['Ordinal', 'Cardinal'],
['TextValue', 'NumericValue'],
['NiceNumber', 'TextValue'],
['Ordinal', 'Currency'], //$5.50th
//verbs
['PastTense', 'PerfectTense', 'Pluperfect', 'FuturePerfect', 'Copula', 'Modal', 'Participle', 'Infinitive', 'Gerund'],
//date
['Month', 'WeekDay', 'Year', 'Duration'],
['Particle', 'Conjunction', 'Adverb', 'Preposition'],
['Date', 'Verb', 'Adjective', 'Person'],
//phrases
['NounPhrase', 'VerbPhrase', 'AdjectivePhrase', 'ConditionalPhrase'],
//a/an -> 1
['Value', 'Determiner'],
['Verb', 'NounPhrase'],
['Noun', 'VerbPhrase'],
//cases
['UpperCase', 'TitleCase', 'CamelCase']
];
const find = (tag) => {
let arr = [];
for (let i = 0; i < conflicts.length; i++) {
if (conflicts[i].indexOf(tag) !== -1) {
arr = arr.concat(conflicts[i]);
}
}
return arr.filter((t) => t !== tag);
};
module.exports = find;
// console.log(find('Person'));