sentencex
Version:
Sentence segmentation library
196 lines (188 loc) • 2.34 kB
JavaScript
import BaseLanguage from '../base.js'
import English from './en.js'
const abbreviations = new Set([
...English.abbreviations,
'ä',
'Ä',
'adj',
'adm',
'adv',
'ao.univ.prof',
'art',
'ass.prof',
'ass',
'asst',
'b.a',
'b.s',
'bart',
'bldg',
'brig',
'bros',
'bse',
'buchst',
'bzgl',
'bzw',
'c.-à-d',
'ca',
'capt',
'chr',
'cmdr',
'co',
'col',
'comdr',
'con',
'corp',
'cpl',
'd.h',
'd.j',
'dergl',
'dgl',
'di',
'dipl.-ing',
'dkr',
'dr ',
'ens',
'etc',
'ev ',
'evtl',
'ff',
'g.g.a',
'g.u',
'gen',
'ggf',
'gov',
'hon.prof',
'hon',
'hosp',
'i.f',
'i.h.v',
'ii',
'iii',
'insp',
'iv',
'ix',
'jun',
'k.o',
'kath',
'lfd',
'lt',
'ltd',
'm.e',
'mag',
'maj',
'med',
'messrs',
'mio',
'mlle',
'mm',
'mme',
'mr',
'mrd',
'mrs',
'ms',
'msgr',
'mwst',
'no',
'nos',
'nr',
'o.ä',
'o.univ.-prof',
'op',
'ord',
'pfc',
'ph',
'pp',
'prof',
'projektass',
'pvt',
'rep',
'reps',
'res',
'rev',
'rt',
's',
's.p.a',
'sa',
'sen',
'sens',
'sfc',
'sgt',
'sog',
'sogen',
'spp',
'sr',
'st',
'std',
'str ',
'stud.ass',
'supt',
'surg',
'T',
'u.a ',
'u.ä',
'u.e',
'u.s.w',
'u.u',
'univ.-doz',
'univ.-prof',
'univ.ass',
'usf',
'usw',
'v',
'vgl',
'vi',
'vii',
'viii',
'vs',
'x',
'xi',
'xii',
'xiii',
'xiv',
'xix',
'xv',
'xvi',
'xvii',
'xviii',
'xx',
'z.b',
'z.t',
'z.z',
'z.zt',
'zt',
'zzt'
])
export default class Deutsch extends BaseLanguage {
static abbreviations = abbreviations
static MONTHS = new Set([
'Januar',
'Februar',
'März',
'April',
'Mai',
'Juni',
'Juli',
'August',
'September',
'Oktober',
'November',
'Dezember'
])
continueInNextWord (textAfterBoundary) {
if (textAfterBoundary.match(/^\W*[0-9a-z]/)) {
return true
}
let nextWord = textAfterBoundary.trim().split(' ')[0]
nextWord = nextWord.replace(/[?!.]/g, '')
if (!nextWord.length) {
return false
}
if (Deutsch.MONTHS.has(nextWord) || Deutsch.MONTHS.has(nextWord[0].toUpperCase() + nextWord.slice(1))) {
return true
}
return false
}
isPunctuationBetweenQuotes () {
return true
}
}