@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.
Files changed (158) hide show
  1. package/LICENSE +232 -0
  2. package/NOTICE +10 -0
  3. package/README.md +25 -2
  4. package/index.js +34 -0
  5. package/licenses/LGPL-2.1.txt +504 -0
  6. package/licenses/english-pos-dict.pom.xml +135 -0
  7. package/licenses/resource_en_12dicts-readme.html +738 -0
  8. package/licenses/resource_en_agid-readme.txt +340 -0
  9. package/licenses/resource_en_pos-readme.txt +115 -0
  10. package/package.json +60 -4
  11. package/resource-root.js +4 -0
  12. package/resources/META-INF/org/languagetool/language-module.properties +1 -0
  13. package/resources/en-chunker.bin +0 -0
  14. package/resources/en-pos-maxent.bin +0 -0
  15. package/resources/en-token.bin +0 -0
  16. package/resources/org/languagetool/resource/en/12dicts-readme.html +738 -0
  17. package/resources/org/languagetool/resource/en/added.txt +446 -0
  18. package/resources/org/languagetool/resource/en/added_custom.txt +4 -0
  19. package/resources/org/languagetool/resource/en/agid-readme.txt +340 -0
  20. package/resources/org/languagetool/resource/en/compounds.txt +9059 -0
  21. package/resources/org/languagetool/resource/en/confusion_sets.txt +871 -0
  22. package/resources/org/languagetool/resource/en/disambiguation.xml +17238 -0
  23. package/resources/org/languagetool/resource/en/do-not-synthesize.txt +13 -0
  24. package/resources/org/languagetool/resource/en/en-US-GB.txt +4804 -0
  25. package/resources/org/languagetool/resource/en/en.sor +211 -0
  26. package/resources/org/languagetool/resource/en/english.dict +0 -0
  27. package/resources/org/languagetool/resource/en/english.info +8 -0
  28. package/resources/org/languagetool/resource/en/english_synth.dict +0 -0
  29. package/resources/org/languagetool/resource/en/english_synth.info +7 -0
  30. package/resources/org/languagetool/resource/en/english_tags.txt +88 -0
  31. package/resources/org/languagetool/resource/en/hunspell/en_AU.dict +0 -0
  32. package/resources/org/languagetool/resource/en/hunspell/en_AU.info +16 -0
  33. package/resources/org/languagetool/resource/en/hunspell/en_CA.dict +0 -0
  34. package/resources/org/languagetool/resource/en/hunspell/en_CA.info +13 -0
  35. package/resources/org/languagetool/resource/en/hunspell/en_GB.dict +0 -0
  36. package/resources/org/languagetool/resource/en/hunspell/en_GB.info +15 -0
  37. package/resources/org/languagetool/resource/en/hunspell/en_NZ.dict +0 -0
  38. package/resources/org/languagetool/resource/en/hunspell/en_NZ.info +18 -0
  39. package/resources/org/languagetool/resource/en/hunspell/en_US.dict +0 -0
  40. package/resources/org/languagetool/resource/en/hunspell/en_US.info +15 -0
  41. package/resources/org/languagetool/resource/en/hunspell/en_ZA.dict +0 -0
  42. package/resources/org/languagetool/resource/en/hunspell/en_ZA.info +16 -0
  43. package/resources/org/languagetool/resource/en/hunspell/ignore.txt +11070 -0
  44. package/resources/org/languagetool/resource/en/hunspell/prohibit.txt +383 -0
  45. package/resources/org/languagetool/resource/en/hunspell/prohibit_custom.txt +1 -0
  46. package/resources/org/languagetool/resource/en/hunspell/spelling.txt +477 -0
  47. package/resources/org/languagetool/resource/en/hunspell/spelling_custom.txt +1 -0
  48. package/resources/org/languagetool/resource/en/hunspell/spelling_en-AU.txt +34 -0
  49. package/resources/org/languagetool/resource/en/hunspell/spelling_en-CA.txt +28 -0
  50. package/resources/org/languagetool/resource/en/hunspell/spelling_en-GB.txt +44 -0
  51. package/resources/org/languagetool/resource/en/hunspell/spelling_en-NZ.txt +31 -0
  52. package/resources/org/languagetool/resource/en/hunspell/spelling_en-US.txt +41 -0
  53. package/resources/org/languagetool/resource/en/hunspell/spelling_en-ZA.txt +32 -0
  54. package/resources/org/languagetool/resource/en/hunspell/spelling_merged.txt +0 -0
  55. package/resources/org/languagetool/resource/en/multiwords.txt +8210 -0
  56. package/resources/org/languagetool/resource/en/pos-readme.txt +115 -0
  57. package/resources/org/languagetool/resource/en/removed.txt +31 -0
  58. package/resources/org/languagetool/resource/en/removed_custom.txt +4 -0
  59. package/resources/org/languagetool/resource/en/specific_case.txt +5621 -0
  60. package/resources/org/languagetool/resource/en/word_definitions.txt +1510 -0
  61. package/resources/org/languagetool/rules/en/coherency.txt +2501 -0
  62. package/resources/org/languagetool/rules/en/contractions.txt +198 -0
  63. package/resources/org/languagetool/rules/en/det_a.txt +959 -0
  64. package/resources/org/languagetool/rules/en/det_an.txt +4080 -0
  65. package/resources/org/languagetool/rules/en/diacritics.txt +1415 -0
  66. package/resources/org/languagetool/rules/en/en-AU/grammar.xml +171 -0
  67. package/resources/org/languagetool/rules/en/en-CA/grammar.xml +197 -0
  68. package/resources/org/languagetool/rules/en/en-GB/grammar.xml +555 -0
  69. package/resources/org/languagetool/rules/en/en-GB/replace.txt +104 -0
  70. package/resources/org/languagetool/rules/en/en-GB/style.xml +302 -0
  71. package/resources/org/languagetool/rules/en/en-NZ/grammar.xml +171 -0
  72. package/resources/org/languagetool/rules/en/en-NZ/replace.txt +5 -0
  73. package/resources/org/languagetool/rules/en/en-US/grammar.xml +913 -0
  74. package/resources/org/languagetool/rules/en/en-US/replace.txt +74 -0
  75. package/resources/org/languagetool/rules/en/en-US/style.xml +524 -0
  76. package/resources/org/languagetool/rules/en/grammar-l2-de.xml +227 -0
  77. package/resources/org/languagetool/rules/en/grammar-l2-fr.xml +39 -0
  78. package/resources/org/languagetool/rules/en/grammar.xml +142537 -0
  79. package/resources/org/languagetool/rules/en/redundancies.txt +866 -0
  80. package/resources/org/languagetool/rules/en/remote-rule-filters.xml +3622 -0
  81. package/resources/org/languagetool/rules/en/replace.txt +221 -0
  82. package/resources/org/languagetool/rules/en/replace_custom.txt +7 -0
  83. package/resources/org/languagetool/rules/en/replace_profanity.txt +540 -0
  84. package/resources/org/languagetool/rules/en/style.xml +12556 -0
  85. package/resources/org/languagetool/rules/en/synonyms.txt +42 -0
  86. package/resources/org/languagetool/rules/en/wordiness.txt +1061 -0
  87. package/resources/org/languagetool/rules/en/wrongWordInContext.txt +14 -0
  88. package/src/lang/en/chunking/EnglishChunkFilter.js +108 -0
  89. package/src/lang/en/chunking/EnglishChunker.js +135 -0
  90. package/src/lang/en/language/AmericanEnglish.js +73 -0
  91. package/src/lang/en/language/AustralianEnglish.js +42 -0
  92. package/src/lang/en/language/BritishEnglish.js +91 -0
  93. package/src/lang/en/language/CanadianEnglish.js +70 -0
  94. package/src/lang/en/language/English.js +398 -0
  95. package/src/lang/en/language/NewZealandEnglish.js +44 -0
  96. package/src/lang/en/language/SouthAfricanEnglish.js +40 -0
  97. package/src/lang/en/language/id2prioBritishEnglish.js +6 -0
  98. package/src/lang/en/language/id2prioEnglish.js +333 -0
  99. package/src/lang/en/rules/AbstractEnglishSpellerRule.js +677 -0
  100. package/src/lang/en/rules/AbstractEnglishSpellerRuleData.js +778 -0
  101. package/src/lang/en/rules/AdvancedSynthesizerFilter.js +12 -0
  102. package/src/lang/en/rules/AdverbFilter.js +538 -0
  103. package/src/lang/en/rules/AmericanReplaceRule.js +57 -0
  104. package/src/lang/en/rules/AvsAnData.js +37 -0
  105. package/src/lang/en/rules/AvsAnRule.js +182 -0
  106. package/src/lang/en/rules/BritishReplaceRule.js +57 -0
  107. package/src/lang/en/rules/CompoundRule.js +150 -0
  108. package/src/lang/en/rules/ConsistentApostrophesRule.js +87 -0
  109. package/src/lang/en/rules/ContractionSpellingRule.js +64 -0
  110. package/src/lang/en/rules/DateCheckFilter.js +58 -0
  111. package/src/lang/en/rules/DateFilterHelper.js +51 -0
  112. package/src/lang/en/rules/EnglishConvertToSentenceCaseFilter.js +17 -0
  113. package/src/lang/en/rules/EnglishDashRule.js +42 -0
  114. package/src/lang/en/rules/EnglishDiacriticsRule.js +67 -0
  115. package/src/lang/en/rules/EnglishMultitokenSpeller.js +15 -0
  116. package/src/lang/en/rules/EnglishNumberInWordFilter.js +38 -0
  117. package/src/lang/en/rules/EnglishPartialPosTagFilter.js +29 -0
  118. package/src/lang/en/rules/EnglishPlainEnglishRule.js +67 -0
  119. package/src/lang/en/rules/EnglishRedundancyRule.js +67 -0
  120. package/src/lang/en/rules/EnglishRepeatedWordsRule.js +212 -0
  121. package/src/lang/en/rules/EnglishSpecificCaseRule.js +47 -0
  122. package/src/lang/en/rules/EnglishSuppressMisspelledSuggestionsFilter.js +12 -0
  123. package/src/lang/en/rules/EnglishUnpairedBracketsRule.js +25 -0
  124. package/src/lang/en/rules/EnglishUnpairedQuotesRule.js +41 -0
  125. package/src/lang/en/rules/EnglishWordRepeatBeginningRule.js +107 -0
  126. package/src/lang/en/rules/EnglishWordRepeatRule.js +126 -0
  127. package/src/lang/en/rules/EnglishWrongWordInContextRule.js +50 -0
  128. package/src/lang/en/rules/FindSuggestionsFilter.js +41 -0
  129. package/src/lang/en/rules/FutureDateFilter.js +25 -0
  130. package/src/lang/en/rules/LongSentenceRule.js +19 -0
  131. package/src/lang/en/rules/MorfologikAmericanSpellerRule.js +69 -0
  132. package/src/lang/en/rules/MorfologikAustralianSpellerRule.js +45 -0
  133. package/src/lang/en/rules/MorfologikBritishSpellerRule.js +47 -0
  134. package/src/lang/en/rules/MorfologikCanadianSpellerRule.js +45 -0
  135. package/src/lang/en/rules/MorfologikNewZealandSpellerRule.js +45 -0
  136. package/src/lang/en/rules/MorfologikSouthAfricanSpellerRule.js +45 -0
  137. package/src/lang/en/rules/NewYearDateFilter.js +25 -0
  138. package/src/lang/en/rules/NewZealandReplaceRule.js +56 -0
  139. package/src/lang/en/rules/NoDisambiguationEnglishPartialPosTagFilter.js +24 -0
  140. package/src/lang/en/rules/OrdinalSuffixFilter.js +33 -0
  141. package/src/lang/en/rules/SimpleReplaceProfanityRule.js +55 -0
  142. package/src/lang/en/rules/SimpleReplaceRule.js +46 -0
  143. package/src/lang/en/rules/StyleTooOftenUsedAdjectiveRule.js +58 -0
  144. package/src/lang/en/rules/StyleTooOftenUsedNounRule.js +58 -0
  145. package/src/lang/en/rules/StyleTooOftenUsedVerbRule.js +58 -0
  146. package/src/lang/en/rules/UnitConversionRule.js +47 -0
  147. package/src/lang/en/rules/UnitConversionRuleImperial.js +57 -0
  148. package/src/lang/en/rules/UnitConversionRuleUS.js +62 -0
  149. package/src/lang/en/rules/VariantInfo.js +23 -0
  150. package/src/lang/en/rules/WordCoherencyRule.js +40 -0
  151. package/src/lang/en/rules/YMDDateCheckFilter.js +25 -0
  152. package/src/lang/en/rules/YMDNewYearDateFilter.js +25 -0
  153. package/src/lang/en/rules/translation/BeoLingusTranslator.js +357 -0
  154. package/src/lang/en/rules/translation/Inflector.js +72 -0
  155. package/src/lang/en/synthesis/EnglishSynthesizer.js +109 -0
  156. package/src/lang/en/tagging/EnglishHybridDisambiguator.js +28 -0
  157. package/src/lang/en/tagging/EnglishTagger.js +78 -0
  158. 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());