- 자바스크립트(js) 자연어 처리 기초, 불규칙 명사 포함, 단수 복수 상호 변경. English Noun word singular plural Change each other
https://stackoverflow.com/questions/27194359/javascript-pluralize-an-english-string
// revert == true : 단수
String.prototype.plural = function (revert) {
var plural = {
'(quiz)$': "$1zes",
'^(ox)$': "$1en",
'([m|l])ouse$': "$1ice",
'(matr|vert|ind)ix|ex$': "$1ices",
'(x|ch|ss|sh)$': "$1es",
'([^aeiouy]|qu)y$': "$1ies",
'(hive)$': "$1s",
'(?:([^f])fe|([lr])f)$': "$1$2ves",
'(shea|lea|loa|thie)f$': "$1ves",
'sis$': "ses",
'([ti])um$': "$1a",
'(tomat|potat|ech|her|vet)o$': "$1oes",
'(bu)s$': "$1ses",
'(alias)$': "$1es",
'(octop)us$': "$1i",
'(ax|test)is$': "$1es",
'(us)$': "$1es",
'([^s]+)$': "$1s"
};
var singular = {
'(quiz)zes$': "$1",
'(matr)ices$': "$1ix",
'(vert|ind)ices$': "$1ex",
'^(ox)en$': "$1",
'(alias)es$': "$1",
'(octop|vir)i$': "$1us",
'(cris|ax|test)es$': "$1is",
'(shoe)s$': "$1",
'(o)es$': "$1",
'(bus)es$': "$1",
'([m|l])ice$': "$1ouse",
'(x|ch|ss|sh)es$': "$1",
'(m)ovies$': "$1ovie",
'(s)eries$': "$1eries",
'([^aeiouy]|qu)ies$': "$1y",
'([lr])ves$': "$1f",
'(tive)s$': "$1",
'(hive)s$': "$1",
'(li|wi|kni)ves$': "$1fe",
'(shea|loa|lea|thie)ves$': "$1f",
'(^analy)ses$': "$1sis",
'((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$': "$1$2sis",
'([ti])a$': "$1um",
'(n)ews$': "$1ews",
'(h|bl)ouses$': "$1ouse",
'(corpse)s$': "$1",
'(us)es$': "$1",
's$': ""
};
var irregular = {
'move': 'moves',
'foot': 'feet',
'goose': 'geese',
'sex': 'sexes',
'child': 'children',
'man': 'men',
'tooth': 'teeth',
'person': 'people'
};
var uncountable = [
'sheep',
'fish',
'deer',
'moose',
'series',
'species',
'money',
'rice',
'information',
'equipment'
];
// save some time in the case that singular and plural are the same
if (uncountable.indexOf(this.toLowerCase()) >= 0)
return this;
var pattern, replace, array;
// check for irregular forms
for (let word in irregular) {
if (revert) {
pattern = new RegExp(irregular[word] + '$', 'i');
replace = word;
} else {
pattern = new RegExp(word + '$', 'i');
replace = irregular[word];
}
if (pattern.test(this))
return this.replace(pattern, replace);
}
if (revert) array = singular;
else array = plural;
// check for matches using regular expressions
for (let reg in array) {
pattern = new RegExp(reg, 'i');
if (pattern.test(this))
return this.replace(pattern, array[reg]);
}
return this;
}
'Code > JavaScript' 카테고리의 다른 글
[Electron] 일렉트론 메뉴, 단축키 사용법 (0) | 2020.11.27 |
---|---|
[Javascript] HTML -> PDF 변환 라이브러리 (0) | 2020.11.20 |
[Javascript] 영어 단어, 단수<->복수 변경 (0) | 2020.09.08 |
[Javascript] 자연어 처리 (0) | 2020.09.07 |
[Node.js] HTTP client (0) | 2020.08.24 |
[Node.js] 브라우저 테스팅 툴 NightWatch 사용법 (0) | 2020.08.24 |
댓글을 달아 주세요