@valueerror/ltjs-lang-en 0.0.0-stage → 0.1.0
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 +232 -0
- package/NOTICE +10 -0
- package/README.md +25 -2
- package/index.js +34 -0
- package/licenses/LGPL-2.1.txt +504 -0
- package/licenses/english-pos-dict.pom.xml +135 -0
- package/licenses/resource_en_12dicts-readme.html +738 -0
- package/licenses/resource_en_agid-readme.txt +340 -0
- package/licenses/resource_en_pos-readme.txt +115 -0
- package/package.json +60 -4
- package/resource-root.js +4 -0
- package/resources/META-INF/org/languagetool/language-module.properties +1 -0
- package/resources/en-chunker.bin +0 -0
- package/resources/en-pos-maxent.bin +0 -0
- package/resources/en-token.bin +0 -0
- package/resources/org/languagetool/resource/en/12dicts-readme.html +738 -0
- package/resources/org/languagetool/resource/en/added.txt +446 -0
- package/resources/org/languagetool/resource/en/added_custom.txt +4 -0
- package/resources/org/languagetool/resource/en/agid-readme.txt +340 -0
- package/resources/org/languagetool/resource/en/compounds.txt +9059 -0
- package/resources/org/languagetool/resource/en/confusion_sets.txt +871 -0
- package/resources/org/languagetool/resource/en/disambiguation.xml +17238 -0
- package/resources/org/languagetool/resource/en/do-not-synthesize.txt +13 -0
- package/resources/org/languagetool/resource/en/en-US-GB.txt +4804 -0
- package/resources/org/languagetool/resource/en/en.sor +211 -0
- package/resources/org/languagetool/resource/en/english.dict +0 -0
- package/resources/org/languagetool/resource/en/english.info +8 -0
- package/resources/org/languagetool/resource/en/english_synth.dict +0 -0
- package/resources/org/languagetool/resource/en/english_synth.info +7 -0
- package/resources/org/languagetool/resource/en/english_tags.txt +88 -0
- package/resources/org/languagetool/resource/en/hunspell/en_AU.dict +0 -0
- package/resources/org/languagetool/resource/en/hunspell/en_AU.info +16 -0
- package/resources/org/languagetool/resource/en/hunspell/en_CA.dict +0 -0
- package/resources/org/languagetool/resource/en/hunspell/en_CA.info +13 -0
- package/resources/org/languagetool/resource/en/hunspell/en_GB.dict +0 -0
- package/resources/org/languagetool/resource/en/hunspell/en_GB.info +15 -0
- package/resources/org/languagetool/resource/en/hunspell/en_NZ.dict +0 -0
- package/resources/org/languagetool/resource/en/hunspell/en_NZ.info +18 -0
- package/resources/org/languagetool/resource/en/hunspell/en_US.dict +0 -0
- package/resources/org/languagetool/resource/en/hunspell/en_US.info +15 -0
- package/resources/org/languagetool/resource/en/hunspell/en_ZA.dict +0 -0
- package/resources/org/languagetool/resource/en/hunspell/en_ZA.info +16 -0
- package/resources/org/languagetool/resource/en/hunspell/ignore.txt +11070 -0
- package/resources/org/languagetool/resource/en/hunspell/prohibit.txt +383 -0
- package/resources/org/languagetool/resource/en/hunspell/prohibit_custom.txt +1 -0
- package/resources/org/languagetool/resource/en/hunspell/spelling.txt +477 -0
- package/resources/org/languagetool/resource/en/hunspell/spelling_custom.txt +1 -0
- package/resources/org/languagetool/resource/en/hunspell/spelling_en-AU.txt +34 -0
- package/resources/org/languagetool/resource/en/hunspell/spelling_en-CA.txt +28 -0
- package/resources/org/languagetool/resource/en/hunspell/spelling_en-GB.txt +44 -0
- package/resources/org/languagetool/resource/en/hunspell/spelling_en-NZ.txt +31 -0
- package/resources/org/languagetool/resource/en/hunspell/spelling_en-US.txt +41 -0
- package/resources/org/languagetool/resource/en/hunspell/spelling_en-ZA.txt +32 -0
- package/resources/org/languagetool/resource/en/hunspell/spelling_merged.txt +0 -0
- package/resources/org/languagetool/resource/en/multiwords.txt +8210 -0
- package/resources/org/languagetool/resource/en/pos-readme.txt +115 -0
- package/resources/org/languagetool/resource/en/removed.txt +31 -0
- package/resources/org/languagetool/resource/en/removed_custom.txt +4 -0
- package/resources/org/languagetool/resource/en/specific_case.txt +5621 -0
- package/resources/org/languagetool/resource/en/word_definitions.txt +1510 -0
- package/resources/org/languagetool/rules/en/coherency.txt +2501 -0
- package/resources/org/languagetool/rules/en/contractions.txt +198 -0
- package/resources/org/languagetool/rules/en/det_a.txt +959 -0
- package/resources/org/languagetool/rules/en/det_an.txt +4080 -0
- package/resources/org/languagetool/rules/en/diacritics.txt +1415 -0
- package/resources/org/languagetool/rules/en/en-AU/grammar.xml +171 -0
- package/resources/org/languagetool/rules/en/en-CA/grammar.xml +197 -0
- package/resources/org/languagetool/rules/en/en-GB/grammar.xml +555 -0
- package/resources/org/languagetool/rules/en/en-GB/replace.txt +104 -0
- package/resources/org/languagetool/rules/en/en-GB/style.xml +302 -0
- package/resources/org/languagetool/rules/en/en-NZ/grammar.xml +171 -0
- package/resources/org/languagetool/rules/en/en-NZ/replace.txt +5 -0
- package/resources/org/languagetool/rules/en/en-US/grammar.xml +913 -0
- package/resources/org/languagetool/rules/en/en-US/replace.txt +74 -0
- package/resources/org/languagetool/rules/en/en-US/style.xml +524 -0
- package/resources/org/languagetool/rules/en/grammar-l2-de.xml +227 -0
- package/resources/org/languagetool/rules/en/grammar-l2-fr.xml +39 -0
- package/resources/org/languagetool/rules/en/grammar.xml +142537 -0
- package/resources/org/languagetool/rules/en/redundancies.txt +866 -0
- package/resources/org/languagetool/rules/en/remote-rule-filters.xml +3622 -0
- package/resources/org/languagetool/rules/en/replace.txt +221 -0
- package/resources/org/languagetool/rules/en/replace_custom.txt +7 -0
- package/resources/org/languagetool/rules/en/replace_profanity.txt +540 -0
- package/resources/org/languagetool/rules/en/style.xml +12556 -0
- package/resources/org/languagetool/rules/en/synonyms.txt +42 -0
- package/resources/org/languagetool/rules/en/wordiness.txt +1061 -0
- package/resources/org/languagetool/rules/en/wrongWordInContext.txt +14 -0
- package/src/lang/en/chunking/EnglishChunkFilter.js +108 -0
- package/src/lang/en/chunking/EnglishChunker.js +135 -0
- package/src/lang/en/language/AmericanEnglish.js +73 -0
- package/src/lang/en/language/AustralianEnglish.js +42 -0
- package/src/lang/en/language/BritishEnglish.js +91 -0
- package/src/lang/en/language/CanadianEnglish.js +70 -0
- package/src/lang/en/language/English.js +398 -0
- package/src/lang/en/language/NewZealandEnglish.js +44 -0
- package/src/lang/en/language/SouthAfricanEnglish.js +40 -0
- package/src/lang/en/language/id2prioBritishEnglish.js +6 -0
- package/src/lang/en/language/id2prioEnglish.js +333 -0
- package/src/lang/en/rules/AbstractEnglishSpellerRule.js +677 -0
- package/src/lang/en/rules/AbstractEnglishSpellerRuleData.js +778 -0
- package/src/lang/en/rules/AdvancedSynthesizerFilter.js +12 -0
- package/src/lang/en/rules/AdverbFilter.js +538 -0
- package/src/lang/en/rules/AmericanReplaceRule.js +57 -0
- package/src/lang/en/rules/AvsAnData.js +37 -0
- package/src/lang/en/rules/AvsAnRule.js +182 -0
- package/src/lang/en/rules/BritishReplaceRule.js +57 -0
- package/src/lang/en/rules/CompoundRule.js +150 -0
- package/src/lang/en/rules/ConsistentApostrophesRule.js +87 -0
- package/src/lang/en/rules/ContractionSpellingRule.js +64 -0
- package/src/lang/en/rules/DateCheckFilter.js +58 -0
- package/src/lang/en/rules/DateFilterHelper.js +51 -0
- package/src/lang/en/rules/EnglishConvertToSentenceCaseFilter.js +17 -0
- package/src/lang/en/rules/EnglishDashRule.js +42 -0
- package/src/lang/en/rules/EnglishDiacriticsRule.js +67 -0
- package/src/lang/en/rules/EnglishMultitokenSpeller.js +15 -0
- package/src/lang/en/rules/EnglishNumberInWordFilter.js +38 -0
- package/src/lang/en/rules/EnglishPartialPosTagFilter.js +29 -0
- package/src/lang/en/rules/EnglishPlainEnglishRule.js +67 -0
- package/src/lang/en/rules/EnglishRedundancyRule.js +67 -0
- package/src/lang/en/rules/EnglishRepeatedWordsRule.js +212 -0
- package/src/lang/en/rules/EnglishSpecificCaseRule.js +47 -0
- package/src/lang/en/rules/EnglishSuppressMisspelledSuggestionsFilter.js +12 -0
- package/src/lang/en/rules/EnglishUnpairedBracketsRule.js +25 -0
- package/src/lang/en/rules/EnglishUnpairedQuotesRule.js +41 -0
- package/src/lang/en/rules/EnglishWordRepeatBeginningRule.js +107 -0
- package/src/lang/en/rules/EnglishWordRepeatRule.js +126 -0
- package/src/lang/en/rules/EnglishWrongWordInContextRule.js +50 -0
- package/src/lang/en/rules/FindSuggestionsFilter.js +41 -0
- package/src/lang/en/rules/FutureDateFilter.js +25 -0
- package/src/lang/en/rules/LongSentenceRule.js +19 -0
- package/src/lang/en/rules/MorfologikAmericanSpellerRule.js +69 -0
- package/src/lang/en/rules/MorfologikAustralianSpellerRule.js +45 -0
- package/src/lang/en/rules/MorfologikBritishSpellerRule.js +47 -0
- package/src/lang/en/rules/MorfologikCanadianSpellerRule.js +45 -0
- package/src/lang/en/rules/MorfologikNewZealandSpellerRule.js +45 -0
- package/src/lang/en/rules/MorfologikSouthAfricanSpellerRule.js +45 -0
- package/src/lang/en/rules/NewYearDateFilter.js +25 -0
- package/src/lang/en/rules/NewZealandReplaceRule.js +56 -0
- package/src/lang/en/rules/NoDisambiguationEnglishPartialPosTagFilter.js +24 -0
- package/src/lang/en/rules/OrdinalSuffixFilter.js +33 -0
- package/src/lang/en/rules/SimpleReplaceProfanityRule.js +55 -0
- package/src/lang/en/rules/SimpleReplaceRule.js +46 -0
- package/src/lang/en/rules/StyleTooOftenUsedAdjectiveRule.js +58 -0
- package/src/lang/en/rules/StyleTooOftenUsedNounRule.js +58 -0
- package/src/lang/en/rules/StyleTooOftenUsedVerbRule.js +58 -0
- package/src/lang/en/rules/UnitConversionRule.js +47 -0
- package/src/lang/en/rules/UnitConversionRuleImperial.js +57 -0
- package/src/lang/en/rules/UnitConversionRuleUS.js +62 -0
- package/src/lang/en/rules/VariantInfo.js +23 -0
- package/src/lang/en/rules/WordCoherencyRule.js +40 -0
- package/src/lang/en/rules/YMDDateCheckFilter.js +25 -0
- package/src/lang/en/rules/YMDNewYearDateFilter.js +25 -0
- package/src/lang/en/rules/translation/BeoLingusTranslator.js +357 -0
- package/src/lang/en/rules/translation/Inflector.js +72 -0
- package/src/lang/en/synthesis/EnglishSynthesizer.js +109 -0
- package/src/lang/en/tagging/EnglishHybridDisambiguator.js +28 -0
- package/src/lang/en/tagging/EnglishTagger.js +78 -0
- package/src/lang/en/tokenizers/EnglishWordTokenizer.js +113 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
// Java: org.languagetool.tagging.en.EnglishTagger
|
|
2
|
+
import { NullPointerException } from '@valueerror/ltjs-core/src/lib/java/errors.js';
|
|
3
|
+
import { Locale } from '@valueerror/ltjs-core/src/lib/java/Locale.js';
|
|
4
|
+
import { toLowerCase } from '@valueerror/ltjs-core/src/lib/java/strings.js';
|
|
5
|
+
import { AnalyzedToken } from '@valueerror/ltjs-core/src/core/AnalyzedToken.js';
|
|
6
|
+
import { AnalyzedTokenReadings } from '@valueerror/ltjs-core/src/core/AnalyzedTokenReadings.js';
|
|
7
|
+
import { registerComponent, sharedComponent } from '@valueerror/ltjs-core/src/core/language/components.js';
|
|
8
|
+
import { BaseTagger } from '@valueerror/ltjs-core/src/core/tagging/BaseTagger.js';
|
|
9
|
+
import { isAllUppercase, isMixedCase, uppercaseFirstChar } from '@valueerror/ltjs-core/src/core/text/StringTools.js';
|
|
10
|
+
|
|
11
|
+
// Java: EnglishTagger
|
|
12
|
+
export class EnglishTagger extends BaseTagger {
|
|
13
|
+
static FQCN = 'org.languagetool.tagging.en.EnglishTagger';
|
|
14
|
+
|
|
15
|
+
// Java: EnglishTagger#INSTANCE
|
|
16
|
+
static get INSTANCE() {
|
|
17
|
+
return sharedComponent(EnglishTagger.FQCN);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Java: EnglishTagger#EnglishTagger()
|
|
21
|
+
constructor() {
|
|
22
|
+
super('/en/english.dict', Locale.ENGLISH, false, true);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// Java: EnglishTagger#tag(List)
|
|
26
|
+
tag(sentenceTokens) {
|
|
27
|
+
const tokenReadings = [];
|
|
28
|
+
let pos = 0;
|
|
29
|
+
for (let word of sentenceTokens) {
|
|
30
|
+
if (word === null || word === undefined) throw new NullPointerException('Cannot invoke "String.length()" because "word" is null');
|
|
31
|
+
let containsTypographicApostrophe = false;
|
|
32
|
+
if (word.length > 1) {
|
|
33
|
+
if (word.includes('’')) {
|
|
34
|
+
containsTypographicApostrophe = true;
|
|
35
|
+
word = word.replaceAll('’', "'");
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const l = [];
|
|
39
|
+
const lowerWord = toLowerCase(word, this.locale);
|
|
40
|
+
const isLowercase = word === lowerWord;
|
|
41
|
+
const isMixedCase_ = isMixedCase(word);
|
|
42
|
+
const isAllUpper = isAllUppercase(word);
|
|
43
|
+
const taggerTokens = this.asAnalyzedTokenListForTaggedWords(word, this.getWordTagger().tag(word));
|
|
44
|
+
l.push(...taggerTokens);
|
|
45
|
+
if (!isLowercase && !isMixedCase_) {
|
|
46
|
+
l.push(...this.asAnalyzedTokenListForTaggedWords(word, this.getWordTagger().tag(lowerWord)));
|
|
47
|
+
}
|
|
48
|
+
if (l.length === 0 && isAllUpper) {
|
|
49
|
+
const firstUpper = uppercaseFirstChar(lowerWord);
|
|
50
|
+
l.push(...this.asAnalyzedTokenListForTaggedWords(word, this.getWordTagger().tag(firstUpper)));
|
|
51
|
+
}
|
|
52
|
+
if (l.length === 0 && lowerWord.endsWith("in'")) {
|
|
53
|
+
let correctedWord = word;
|
|
54
|
+
if (isAllUpper) {
|
|
55
|
+
correctedWord = correctedWord.substring(0, correctedWord.length - 1) + 'G';
|
|
56
|
+
} else {
|
|
57
|
+
correctedWord = correctedWord.substring(0, correctedWord.length - 1) + 'g';
|
|
58
|
+
}
|
|
59
|
+
l.push(...this.asAnalyzedTokenListForTaggedWords(word, this.getWordTagger().tag(correctedWord)));
|
|
60
|
+
if (!isLowercase && !isMixedCase_) {
|
|
61
|
+
l.push(...this.asAnalyzedTokenListForTaggedWords(word, this.getWordTagger().tag(toLowerCase(correctedWord))));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (l.length === 0) {
|
|
65
|
+
l.push(new AnalyzedToken(word, null, null));
|
|
66
|
+
}
|
|
67
|
+
const atr = new AnalyzedTokenReadings(l, pos);
|
|
68
|
+
if (containsTypographicApostrophe) {
|
|
69
|
+
atr.setTypographicApostrophe();
|
|
70
|
+
}
|
|
71
|
+
tokenReadings.push(atr);
|
|
72
|
+
pos += word.length;
|
|
73
|
+
}
|
|
74
|
+
return tokenReadings;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
registerComponent(EnglishTagger.FQCN, () => new EnglishTagger());
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
// Java: org.languagetool.tokenizers.en.EnglishWordTokenizer
|
|
2
|
+
import { Pattern } from '@valueerror/ltjs-core/src/lib/java/regex/index.js';
|
|
3
|
+
import { StringTokenizer } from '@valueerror/ltjs-core/src/lib/java/StringTokenizer.js';
|
|
4
|
+
import { equalsIgnoreCase } from '@valueerror/ltjs-core/src/lib/java/strings.js';
|
|
5
|
+
import { NullPointerException } from '@valueerror/ltjs-core/src/lib/java/errors.js';
|
|
6
|
+
import { registerComponent, sharedComponent } from '@valueerror/ltjs-core/src/core/language/components.js';
|
|
7
|
+
import { WordTokenizer } from '@valueerror/ltjs-core/src/core/text/tokenizers/WordTokenizer.js';
|
|
8
|
+
import '../tagging/EnglishTagger.js';
|
|
9
|
+
|
|
10
|
+
const wordCharacters = '±§©@€£¥\\$\\p{L}\\d\\-̀-ͯ¨°%‰‱&�¬,?';
|
|
11
|
+
const tokenizerPattern = Pattern.compile(`[${wordCharacters}]+|[^${wordCharacters}]`);
|
|
12
|
+
const SINGLE_QUOTE = Pattern.compile("'");
|
|
13
|
+
const CURLY_QUOTE = Pattern.compile('’');
|
|
14
|
+
const patternList = [
|
|
15
|
+
Pattern.compile("^(fo['’]c['’]sle|rec['’][ds]|OK['’]d|cc['’][ds]|DJ['’][d]|[pd]m['’]d|rsvp['’]d)$", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE),
|
|
16
|
+
Pattern.compile(
|
|
17
|
+
"^(['’]?)(are|is|were|was|do|does|did|have|has|had|wo|would|ca|could|sha|should|must|ai|ought|might|need|may|am|dare|das|dass|hai|used|use)(n['’]t)$",
|
|
18
|
+
Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE),
|
|
19
|
+
Pattern.compile("^(.+)(['’]m|['’]re|['’]ll|['’]ve|['’]d|['’]s)(['’-]?)$", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE),
|
|
20
|
+
Pattern.compile("^(['’]t)(was|were|is)$", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE),
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
// Java: EnglishWordTokenizer
|
|
24
|
+
export class EnglishWordTokenizer extends WordTokenizer {
|
|
25
|
+
static FQCN = 'org.languagetool.tokenizers.en.EnglishWordTokenizer';
|
|
26
|
+
|
|
27
|
+
// Java: EnglishWordTokenizer#enTokenizingChars (field initializer)
|
|
28
|
+
enTokenizingChars = `${super.getTokenizingCharacters()}_`; // underscore
|
|
29
|
+
|
|
30
|
+
// Java: EnglishWordTokenizer#tokenize(String)
|
|
31
|
+
tokenize(text) {
|
|
32
|
+
const l = [];
|
|
33
|
+
let auxText = text;
|
|
34
|
+
auxText = SINGLE_QUOTE.matcher(auxText).replaceAll('xxAPOSTYPEWxx');
|
|
35
|
+
auxText = CURLY_QUOTE.matcher(auxText).replaceAll('xxAPOSTYPOGxx');
|
|
36
|
+
|
|
37
|
+
const tokenizerMatcher = tokenizerPattern.matcher(auxText);
|
|
38
|
+
while (tokenizerMatcher.find()) {
|
|
39
|
+
let s = tokenizerMatcher.group();
|
|
40
|
+
if (l.length > 0 && s.length === 1 && s.codePointAt(0) >= 0xFE00 && s.codePointAt(0) <= 0xFE0F) {
|
|
41
|
+
l[l.length - 1] = l[l.length - 1] + s;
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
s = s.replaceAll('xxAPOSTYPEWxx', "'");
|
|
45
|
+
s = s.replaceAll('xxAPOSTYPOGxx', '’');
|
|
46
|
+
let matchFound = false;
|
|
47
|
+
let matcher = null;
|
|
48
|
+
if (s.includes("'") || s.includes('’')) {
|
|
49
|
+
for (const pattern of patternList) {
|
|
50
|
+
matcher = pattern.matcher(s);
|
|
51
|
+
matchFound = matcher.find();
|
|
52
|
+
if (matchFound) {
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (matchFound) {
|
|
58
|
+
for (let i = 1; i <= matcher.groupCount(); i++) {
|
|
59
|
+
const groupStr = matcher.group(i);
|
|
60
|
+
l.push(...this.wordsToAdd(groupStr));
|
|
61
|
+
}
|
|
62
|
+
} else {
|
|
63
|
+
l.push(...this.wordsToAdd(s));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return this.joinEMailsAndUrls(l);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Java: EnglishWordTokenizer#wordsToAdd(String)
|
|
70
|
+
wordsToAdd(s) {
|
|
71
|
+
const l = [];
|
|
72
|
+
let hyphensAtEnd = 0;
|
|
73
|
+
if (s === null) throw new NullPointerException('Cannot invoke "String.isEmpty()" because "s" is null');
|
|
74
|
+
if (s.length !== 0) {
|
|
75
|
+
while (s.startsWith('-')) {
|
|
76
|
+
l.push('-');
|
|
77
|
+
s = s.substring(1);
|
|
78
|
+
}
|
|
79
|
+
while (s.endsWith('-')) {
|
|
80
|
+
s = s.substring(0, s.length - 1);
|
|
81
|
+
hyphensAtEnd++;
|
|
82
|
+
}
|
|
83
|
+
if (s.length !== 0) {
|
|
84
|
+
if (!s.includes('-') && !s.includes("'") && !s.includes('’')) {
|
|
85
|
+
l.push(s);
|
|
86
|
+
} else {
|
|
87
|
+
let normalized = s.replaceAll('', '');
|
|
88
|
+
normalized = normalized.replaceAll('’', "'");
|
|
89
|
+
if (sharedComponent('org.languagetool.tagging.en.EnglishTagger').tag([normalized])[0].isTagged()) {
|
|
90
|
+
l.push(s);
|
|
91
|
+
} else if (equalsIgnoreCase(s, 'mers-cov') || equalsIgnoreCase(s, 'mcgraw-hill')
|
|
92
|
+
|| equalsIgnoreCase(s, 'sars-cov-2') || equalsIgnoreCase(s, 'sars-cov') || equalsIgnoreCase(s, 'ph-metre')
|
|
93
|
+
|| equalsIgnoreCase(s, 'ph-metres') || equalsIgnoreCase(s, 'anti-ivg') || equalsIgnoreCase(s, 'anti-uv')
|
|
94
|
+
|| equalsIgnoreCase(s, 'anti-vih') || equalsIgnoreCase(s, 'al-qaida')) {
|
|
95
|
+
l.push(s);
|
|
96
|
+
} else {
|
|
97
|
+
const st2 = new StringTokenizer(s, "’'", true);
|
|
98
|
+
while (st2.hasMoreElements()) {
|
|
99
|
+
l.push(st2.nextToken());
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
while (hyphensAtEnd > 0) {
|
|
106
|
+
l.push('-');
|
|
107
|
+
hyphensAtEnd--;
|
|
108
|
+
}
|
|
109
|
+
return l;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
registerComponent(EnglishWordTokenizer.FQCN, () => new EnglishWordTokenizer());
|