@valueerror/ltjs-lang-en 0.0.0-stage → 0.1.1

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,14 @@
1
+ #word1 word2 match1 match2 context1 context2 [explanation1 explanation2]
2
+ #do not forget to add tests to EnglishWrongWordInContextRuleTest.java
3
+ # proscribe/prescribe
4
+ prescribe[ds]? proscribe[sd]? prescr proscr medication|medicine|antibiotics|doctors? theft|murder to recommend or authorize to forbid, to limit or to banish
5
+ heroin heroine oin oine addict.*|morphine|drug|narcotics?|withdrawal literature|novels?|author|story|poems?|play|female|dramatic|statue|heroes? highly addictive narcotic the chief female character; a woman admired for great deeds
6
+ bazaar bizarre azaar izarre oriental|marketplace|rummage|goods|buy|bought|sell|sold moment|odd|unusual|incident|behaviou?r|situations?|stor(y|ies)|reasons?|moments? a marketplace (noun) unusual, odd, or whimsically strange (adjective)
7
+ bridal bridle ridal ridle weddings?|brides?|boutique|gowns?|church|party|shower|shop|jewellery|dress|fashion horses?|cavalier|harness|headgear|headstall|rider?s? related to a bride a part of a horse's harness
8
+ desserts? deserts? esse ese chocolate|menu|wait(ers?|ress)|cookies|cakes? bec[ao]me|dry|arid|vegetation|camels?|precipitation|rain a confectionery course that concludes a main meal a barren area of landscape with little precipitation
9
+ statutes? statues? ute ue government|legislat(ure|ive)|laws?|senators?|regulat(ions?|ed?|ing)|Republicans?|Democrats?|limitations life-size|figur(ative|ine)|sculptur(ing|ed?)|modeling|art(ist)|temples?|marble|bronze|Gree(k|ce) a formal written enactment of a legislative authority a sculpture; a carved or shaped imitation of an object
10
+ gorilla guerilla o ue apes?|chimpanzees?|bonobos?|[Ss]ilverback|zoos? marketing|war(fares?)?|insurgents?|soldiers?|army|(para)?military|ambush(ed)? animal in ape family soldier specializing surprise attacks
11
+ massage message ma me Thai|relaxing|naked|therap(eutic|y|ist)|prostate|erotic|tantric|lymphatic|muscles? error|send(ing)?|sent|receive[dr]?|important|take|writ(e|ten) action of rubbing, kneading or hitting someone's body communication, or what is communicated
12
+ sing sign ing ign songs?|music|choirs? contracts? to produce musical or harmonious sounds with one’s voice to write one's signature
13
+ neutrons? neurons? utr ur [fF]ermion(ic)?|[pP]rotons?|[Aa]tom(s?|ic)|[Ee]lectrons?|[nN]uclear|[Ss]pins?|hadron(ic)?|[tT]hermal|bound ganglia|axons?|dendrits?|nervous|synapses?|stimul(i|us)|nerves?|neurotransmitters?|cerebral|(bi|uni)polar subatomic particle nerve cell
14
+ hangars? hangers? gar ger air(craft|plain)s?|aeroplains?|planes? cloth(es?|ing)|coats?|garments? shed or shelter a frame for hanging clothes
@@ -0,0 +1,108 @@
1
+ // org.languagetool.chunking.EnglishChunkFilter (adds singular/plural to OpenNLP noun phrase chunks)
2
+ import { IllegalStateException } from '@valueerror/ltjs-core/src/lib/java/errors.js';
3
+ import { ChunkTag } from '@valueerror/ltjs-core/src/core/chunking/ChunkTag.js';
4
+ import { ChunkTaggedToken } from '@valueerror/ltjs-core/src/core/chunking/ChunkTaggedToken.js';
5
+
6
+ const BEGIN_NOUN_PHRASE_TAG = new ChunkTag('B-NP');
7
+ const IN_NOUN_PHRASE_TAG = new ChunkTag('I-NP');
8
+
9
+ const ChunkType = Object.freeze({ SINGULAR: 'SINGULAR', PLURAL: 'PLURAL' });
10
+
11
+ // Java: EnglishChunkFilter
12
+ export class EnglishChunkFilter {
13
+ static FQCN = 'org.languagetool.chunking.EnglishChunkFilter';
14
+
15
+ // Java: EnglishChunkFilter#filter(List)
16
+ filter(tokens) {
17
+ const result = [];
18
+ let newChunkTag = null;
19
+ let i = 0;
20
+ for (const taggedToken of tokens) {
21
+ const chunkTags = [];
22
+ if (this.isBeginningOfNounPhrase(taggedToken)) {
23
+ const chunkType = this.getChunkType(tokens, i);
24
+ if (chunkType === ChunkType.SINGULAR || this.endOfNounPhraseIsSingular(tokens, i)) {
25
+ chunkTags.push(new ChunkTag('B-NP-singular'));
26
+ newChunkTag = 'NP-singular';
27
+ } else if (chunkType === ChunkType.PLURAL) {
28
+ chunkTags.push(new ChunkTag('B-NP-plural'));
29
+ newChunkTag = 'NP-plural';
30
+ } else {
31
+ throw new IllegalStateException(`Unknown chunk type: ${chunkType}`);
32
+ }
33
+ }
34
+ if (newChunkTag !== null && this.isEndOfNounPhrase(tokens, i)) {
35
+ chunkTags.push(new ChunkTag(`E-${newChunkTag}`));
36
+ newChunkTag = null;
37
+ }
38
+ if (newChunkTag !== null && this.isContinuationOfNounPhrase(taggedToken)) {
39
+ chunkTags.push(new ChunkTag(`I-${newChunkTag}`));
40
+ }
41
+ if (chunkTags.length > 0) {
42
+ result.push(new ChunkTaggedToken(taggedToken.getToken(), chunkTags, taggedToken.getReadings()));
43
+ } else {
44
+ result.push(taggedToken);
45
+ }
46
+ i++;
47
+ }
48
+ return result;
49
+ }
50
+
51
+ // Java: EnglishChunkFilter#endOfNounPhraseIsSingular(List,int)
52
+ endOfNounPhraseIsSingular(tokens, i) {
53
+ for (let j = i; j < tokens.length; j++) {
54
+ if (this.isEndOfNounPhrase(tokens, j)) {
55
+ return this.getChunkType(tokens, j) === ChunkType.SINGULAR;
56
+ }
57
+ }
58
+ return false;
59
+ }
60
+
61
+ // Java: EnglishChunkFilter#isBeginningOfNounPhrase(ChunkTaggedToken)
62
+ isBeginningOfNounPhrase(taggedToken) {
63
+ return taggedToken.getChunkTags().some((t) => t.equals(BEGIN_NOUN_PHRASE_TAG));
64
+ }
65
+
66
+ // Java: EnglishChunkFilter#isEndOfNounPhrase(List,int)
67
+ isEndOfNounPhrase(tokens, i) {
68
+ if (i > tokens.length - 2) {
69
+ return true;
70
+ }
71
+ if (!this.isContinuationOfNounPhrase(tokens[i + 1])) {
72
+ return true;
73
+ }
74
+ return false;
75
+ }
76
+
77
+ // Java: EnglishChunkFilter#isContinuationOfNounPhrase(ChunkTaggedToken)
78
+ isContinuationOfNounPhrase(taggedToken) {
79
+ return taggedToken.getChunkTags().some((t) => t.equals(IN_NOUN_PHRASE_TAG));
80
+ }
81
+
82
+ // Java: EnglishChunkFilter#getChunkType(List,int)
83
+ getChunkType(tokens, chunkStartPos) {
84
+ let isPlural = false;
85
+ for (let i = chunkStartPos; i < tokens.length; i++) {
86
+ const token = tokens[i];
87
+ if (!this.isBeginningOfNounPhrase(token) && !this.isContinuationOfNounPhrase(token)) {
88
+ break;
89
+ }
90
+ if (this.hasNounWithPluralReading(token)) {
91
+ isPlural = true;
92
+ }
93
+ }
94
+ return isPlural ? ChunkType.PLURAL : ChunkType.SINGULAR;
95
+ }
96
+
97
+ // Java: EnglishChunkFilter#hasNounWithPluralReading(ChunkTaggedToken)
98
+ hasNounWithPluralReading(token) {
99
+ if (token.getReadings() !== null && token.getReadings() !== undefined) {
100
+ for (const analyzedToken of token.getReadings().getReadings()) {
101
+ if (analyzedToken.getPOSTag() === 'NNS') {
102
+ return true;
103
+ }
104
+ }
105
+ }
106
+ return false;
107
+ }
108
+ }
@@ -0,0 +1,135 @@
1
+ // org.languagetool.chunking.EnglishChunker (OpenNLP tokenizer, POS tagger and chunker mapped to LT tokens)
2
+ import { RuntimeException } from '@valueerror/ltjs-core/src/lib/java/errors.js';
3
+ import { javaSplit, javaTrim } from '@valueerror/ltjs-core/src/lib/java/strings.js';
4
+ import { isSpaceChar } from '@valueerror/ltjs-core/src/lib/java/Character.js';
5
+ import { registerComponent } from '@valueerror/ltjs-core/src/core/language/components.js';
6
+ import { ChunkTag } from '@valueerror/ltjs-core/src/core/chunking/ChunkTag.js';
7
+ import { ChunkTaggedToken } from '@valueerror/ltjs-core/src/core/chunking/ChunkTaggedToken.js';
8
+ import { loadModels } from '@valueerror/ltjs-core/src/lib/opennlp/Models.js';
9
+ import { TokenizerME } from '@valueerror/ltjs-core/src/lib/opennlp/TokenizerME.js';
10
+ import { POSTaggerME } from '@valueerror/ltjs-core/src/lib/opennlp/POSTaggerME.js';
11
+ import { ChunkerME } from '@valueerror/ltjs-core/src/lib/opennlp/ChunkerME.js';
12
+ import { EnglishChunkFilter } from './EnglishChunkFilter.js';
13
+
14
+ // Java: EnglishChunker
15
+ export class EnglishChunker {
16
+ static FQCN = 'org.languagetool.chunking.EnglishChunker';
17
+
18
+ // Java: EnglishChunker#EnglishChunker() (models are static, loaded once)
19
+ constructor() {
20
+ try {
21
+ this.models = loadModels();
22
+ this.chunkFilter = new EnglishChunkFilter();
23
+ } catch (e) {
24
+ if (e.notPorted === true) throw e;
25
+ throw new RuntimeException('Could not initialize English chunker', e);
26
+ }
27
+ }
28
+
29
+ // Java: EnglishChunker#addChunkTags(List)
30
+ addChunkTags(tokenReadings) {
31
+ const origChunkTags = this.getChunkTagsForReadings(tokenReadings);
32
+ const chunkTags = this.chunkFilter.filter(origChunkTags);
33
+ this.assignChunksToReadings(chunkTags);
34
+ }
35
+
36
+ // Java: EnglishChunker#getChunkTagsForReadings(List)
37
+ getChunkTagsForReadings(tokenReadings) {
38
+ const sentence = this.getSentence(tokenReadings);
39
+ const tokens = this.cleanZeroWidthWhitespaces(this.tokenize(sentence));
40
+ const posTags = this.posTag(tokens);
41
+ const chunkTags = this.chunk(tokens, posTags);
42
+ if (tokens.length !== posTags.length || tokens.length !== chunkTags.length) {
43
+ throw new RuntimeException(`Length of results must be the same: ${tokens.length}, ${posTags.length}, ${chunkTags.length}`);
44
+ }
45
+ return this.getTokensWithTokenReadings(tokenReadings, tokens, chunkTags);
46
+ }
47
+
48
+ // Java: EnglishChunker#cleanZeroWidthWhitespaces(String[])
49
+ cleanZeroWidthWhitespaces(tokens) {
50
+ const cleanTokens = [];
51
+ for (const token of tokens) {
52
+ const splits = javaSplit(token, '');
53
+ for (const split of splits) {
54
+ if (split.length === 0) {
55
+ cleanTokens.push('');
56
+ } else {
57
+ cleanTokens.push(token);
58
+ }
59
+ }
60
+ }
61
+ return cleanTokens;
62
+ }
63
+
64
+ // Java: EnglishChunker#tokenize(String)
65
+ tokenize(sentence) {
66
+ const tokenizer = new TokenizerME(this.models.tm);
67
+ const cleanString = sentence.replaceAll('’', "'");
68
+ return tokenizer.tokenize(cleanString);
69
+ }
70
+
71
+ // Java: EnglishChunker#posTag(String[])
72
+ posTag(tokens) {
73
+ return new POSTaggerME(this.models.pm).tag(tokens);
74
+ }
75
+
76
+ // Java: EnglishChunker#chunk(String[],String[])
77
+ chunk(tokens, posTags) {
78
+ return new ChunkerME(this.models.cm).chunk(tokens, posTags);
79
+ }
80
+
81
+ // Java: EnglishChunker#getTokensWithTokenReadings(List,String[],String[])
82
+ getTokensWithTokenReadings(tokenReadings, tokens, chunkTags) {
83
+ const result = [];
84
+ let i = 0;
85
+ let pos = 0;
86
+ for (const chunkTag of chunkTags) {
87
+ const startPos = pos;
88
+ const endPos = startPos + tokens[i].length;
89
+ const readings = this.getAnalyzedTokenReadingsFor(startPos, endPos, tokenReadings);
90
+ result.push(new ChunkTaggedToken(tokens[i], [new ChunkTag(chunkTag)], readings));
91
+ pos = endPos;
92
+ i++;
93
+ }
94
+ return result;
95
+ }
96
+
97
+ // Java: EnglishChunker#assignChunksToReadings(List)
98
+ assignChunksToReadings(chunkTaggedTokens) {
99
+ for (const taggedToken of chunkTaggedTokens) {
100
+ const readings = taggedToken.getReadings();
101
+ if (readings !== null && readings !== undefined) {
102
+ readings.setChunkTags(taggedToken.getChunkTags());
103
+ }
104
+ }
105
+ }
106
+
107
+ // Java: EnglishChunker#getSentence(List)
108
+ getSentence(sentenceTokens) {
109
+ let sb = '';
110
+ for (const token of sentenceTokens) {
111
+ sb += token.getToken();
112
+ }
113
+ return sb;
114
+ }
115
+
116
+ // Java: EnglishChunker#getAnalyzedTokenReadingsFor(int,int,List)
117
+ getAnalyzedTokenReadingsFor(startPos, endPos, tokenReadings) {
118
+ let pos = 0;
119
+ for (const tokenReading of tokenReadings) {
120
+ const token = tokenReading.getToken();
121
+ if (javaTrim(token).length === 0 || (token.length === 1 && isSpaceChar(token.charCodeAt(0)))) {
122
+ continue;
123
+ }
124
+ const tokenStart = pos;
125
+ const tokenEnd = pos + token.length;
126
+ if (tokenStart === startPos && tokenEnd === endPos) {
127
+ return tokenReading;
128
+ }
129
+ pos = tokenEnd;
130
+ }
131
+ return null;
132
+ }
133
+ }
134
+
135
+ registerComponent(EnglishChunker.FQCN, () => new EnglishChunker());
@@ -0,0 +1,73 @@
1
+ // Java: org.languagetool.language.AmericanEnglish
2
+ import { RuntimeException, Throwable } from '@valueerror/ltjs-core/src/lib/java/errors.js';
3
+ import { Objects } from '@valueerror/ltjs-core/src/lib/java/Objects.js';
4
+ import { Languages } from '@valueerror/ltjs-core/src/core/Languages.js';
5
+ import { createComponent } from '@valueerror/ltjs-core/src/core/language/components.js';
6
+ import { registerClass } from '@valueerror/ltjs-core/src/core/resources/ClassBroker.js';
7
+ import { English } from './English.js';
8
+ import { MorfologikAmericanSpellerRule } from '../rules/MorfologikAmericanSpellerRule.js';
9
+ import { AmericanReplaceRule } from '../rules/AmericanReplaceRule.js';
10
+ import { UnitConversionRuleUS } from '../rules/UnitConversionRuleUS.js';
11
+
12
+ const LANGUAGE_SHORT_CODE = 'en-US';
13
+
14
+ let instantiationTrace = null; // Java: AmericanEnglish#instantiationTrace
15
+
16
+ // Java: AmericanEnglish
17
+ export class AmericanEnglish extends English {
18
+ static FQCN = 'org.languagetool.language.AmericanEnglish';
19
+
20
+ // Java: AmericanEnglish#AmericanEnglish() / protected AmericanEnglish(boolean) (fake constructor overload for subclasses)
21
+ constructor(fakeValue) {
22
+ super();
23
+ if (fakeValue === undefined) {
24
+ const trace = instantiationTrace;
25
+ if (trace !== null) {
26
+ throw new RuntimeException('Language was already instantiated, see the cause stacktrace below.', trace);
27
+ }
28
+ instantiationTrace = new Throwable();
29
+ }
30
+ }
31
+
32
+ // Java: AmericanEnglish#getCountries()
33
+ getCountries() {
34
+ return ['US'];
35
+ }
36
+
37
+ // Java: AmericanEnglish#getName()
38
+ getName() {
39
+ return 'English (US)';
40
+ }
41
+
42
+ // Java: AmericanEnglish#getRelevantRules(ResourceBundle,UserConfig,Language,List)
43
+ getRelevantRules(messages, userConfig, motherTongue, altLanguages) {
44
+ const rules = [...super.getRelevantRules(messages, userConfig, motherTongue, altLanguages)];
45
+ rules.push(new AmericanReplaceRule(messages, '/en/en-US/replace.txt'));
46
+ rules.push(new UnitConversionRuleUS(messages));
47
+ return rules;
48
+ }
49
+
50
+ // Java: AmericanEnglish#createDefaultSpellingRule(ResourceBundle)
51
+ createDefaultSpellingRule(messages) {
52
+ return createComponent('org.languagetool.rules.en.MorfologikAmericanSpellerRule', messages, this, null, []);
53
+ }
54
+
55
+ // Java: AmericanEnglish#getRelevantLanguageModelCapableRules(ResourceBundle,LanguageModel,GlobalConfig,UserConfig,Language,List)
56
+ getRelevantLanguageModelCapableRules(messages, lm, globalConfig, userConfig, motherTongue, altLanguages) {
57
+ const rules = [...super.getRelevantLanguageModelCapableRules(messages, lm, globalConfig, userConfig, motherTongue, altLanguages)];
58
+ // SuggestionsChanges.isRunningExperiment(SymSpell) is never true (experiments are not configured)
59
+ rules.push(new MorfologikAmericanSpellerRule(messages, this, globalConfig, userConfig, altLanguages, lm, motherTongue));
60
+ return rules;
61
+ }
62
+
63
+ // Java: AmericanEnglish#getInstance()
64
+ static getInstance() {
65
+ const language = Objects.requireNonNull(Languages.getLanguageForShortCode(LANGUAGE_SHORT_CODE));
66
+ if (language instanceof English) {
67
+ return language;
68
+ }
69
+ throw new RuntimeException(`AmericanEnglish language expected, got ${language}`);
70
+ }
71
+ }
72
+
73
+ registerClass(AmericanEnglish.FQCN, AmericanEnglish);
@@ -0,0 +1,42 @@
1
+ // Java: org.languagetool.language.AustralianEnglish
2
+ import { createComponent } from '@valueerror/ltjs-core/src/core/language/components.js';
3
+ import { registerClass } from '@valueerror/ltjs-core/src/core/resources/ClassBroker.js';
4
+ import { English } from './English.js';
5
+ import { MorfologikAustralianSpellerRule } from '../rules/MorfologikAustralianSpellerRule.js';
6
+ import { UnitConversionRuleImperial } from '../rules/UnitConversionRuleImperial.js';
7
+
8
+ // Java: AustralianEnglish
9
+ export class AustralianEnglish extends English {
10
+ static FQCN = 'org.languagetool.language.AustralianEnglish';
11
+
12
+ // Java: AustralianEnglish#getCountries()
13
+ getCountries() {
14
+ return ['AU'];
15
+ }
16
+
17
+ // Java: AustralianEnglish#getName()
18
+ getName() {
19
+ return 'English (Australian)';
20
+ }
21
+
22
+ // Java: AustralianEnglish#createDefaultSpellingRule(ResourceBundle)
23
+ createDefaultSpellingRule(messages) {
24
+ return createComponent('org.languagetool.rules.en.MorfologikAustralianSpellerRule', messages, this, null, []);
25
+ }
26
+
27
+ // Java: AustralianEnglish#getRelevantRules(ResourceBundle,UserConfig,Language,List)
28
+ getRelevantRules(messages, userConfig, motherTongue, altLanguages) {
29
+ const rules = [...super.getRelevantRules(messages, userConfig, motherTongue, altLanguages)];
30
+ rules.push(new UnitConversionRuleImperial(messages));
31
+ return rules;
32
+ }
33
+
34
+ // Java: AustralianEnglish#getRelevantLanguageModelCapableRules(ResourceBundle,LanguageModel,GlobalConfig,UserConfig,Language,List)
35
+ getRelevantLanguageModelCapableRules(messages, lm, globalConfig, userConfig, motherTongue, altLanguages) {
36
+ const rules = [...super.getRelevantLanguageModelCapableRules(messages, lm, globalConfig, userConfig, motherTongue, altLanguages)];
37
+ rules.push(new MorfologikAustralianSpellerRule(messages, this, globalConfig, userConfig, altLanguages, lm, motherTongue));
38
+ return rules;
39
+ }
40
+ }
41
+
42
+ registerClass(AustralianEnglish.FQCN, AustralianEnglish);
@@ -0,0 +1,91 @@
1
+ // Java: org.languagetool.language.BritishEnglish
2
+ import { RuntimeException, Throwable } from '@valueerror/ltjs-core/src/lib/java/errors.js';
3
+ import { Objects } from '@valueerror/ltjs-core/src/lib/java/Objects.js';
4
+ import { JavaHashMap } from '@valueerror/ltjs-core/src/lib/java/collections/JavaHashMap.js';
5
+ import { Languages } from '@valueerror/ltjs-core/src/core/Languages.js';
6
+ import { createComponent } from '@valueerror/ltjs-core/src/core/language/components.js';
7
+ import { registerClass } from '@valueerror/ltjs-core/src/core/resources/ClassBroker.js';
8
+ import { English } from './English.js';
9
+ import { MorfologikBritishSpellerRule } from '../rules/MorfologikBritishSpellerRule.js';
10
+ import { BritishReplaceRule } from '../rules/BritishReplaceRule.js';
11
+ import { UnitConversionRuleImperial } from '../rules/UnitConversionRuleImperial.js';
12
+ import { ID2PRIO_ENTRIES } from './id2prioBritishEnglish.js';
13
+
14
+ const LANGUAGE_SHORT_CODE = 'en-GB';
15
+
16
+ let instantiationTrace = null; // Java: BritishEnglish#instantiationTrace
17
+
18
+ const id2prio = new JavaHashMap(); // Java: BritishEnglish#id2prio
19
+ for (const [k, v] of ID2PRIO_ENTRIES) id2prio.put(k, v);
20
+
21
+ // Java: BritishEnglish
22
+ export class BritishEnglish extends English {
23
+ static FQCN = 'org.languagetool.language.BritishEnglish';
24
+
25
+ // Java: BritishEnglish#BritishEnglish() / protected BritishEnglish(boolean) (fake constructor overload for subclasses)
26
+ constructor(fakeValue) {
27
+ super();
28
+ if (fakeValue === undefined) {
29
+ const trace = instantiationTrace;
30
+ if (trace !== null) {
31
+ throw new RuntimeException('Language was already instantiated, see the cause stacktrace below.', trace);
32
+ }
33
+ instantiationTrace = new Throwable();
34
+ }
35
+ }
36
+
37
+ // Java: BritishEnglish#getCountries()
38
+ getCountries() {
39
+ return ['GB'];
40
+ }
41
+
42
+ // Java: BritishEnglish#getName()
43
+ getName() {
44
+ return 'English (GB)';
45
+ }
46
+
47
+ // Java: BritishEnglish#getRelevantRules(ResourceBundle,UserConfig,Language,List)
48
+ getRelevantRules(messages, userConfig, motherTongue, altLanguages) {
49
+ const rules = [...super.getRelevantRules(messages, userConfig, motherTongue, altLanguages)];
50
+ rules.push(new BritishReplaceRule(messages, '/en/en-GB/replace.txt'));
51
+ rules.push(new UnitConversionRuleImperial(messages));
52
+ return rules;
53
+ }
54
+
55
+ // Java: BritishEnglish#createDefaultSpellingRule(ResourceBundle)
56
+ createDefaultSpellingRule(messages) {
57
+ return createComponent('org.languagetool.rules.en.MorfologikBritishSpellerRule', messages, this, null, []);
58
+ }
59
+
60
+ // Java: BritishEnglish#getRelevantLanguageModelCapableRules(ResourceBundle,LanguageModel,GlobalConfig,UserConfig,Language,List)
61
+ getRelevantLanguageModelCapableRules(messages, lm, globalConfig, userConfig, motherTongue, altLanguages) {
62
+ const rules = [...super.getRelevantLanguageModelCapableRules(messages, lm, globalConfig, userConfig, motherTongue, altLanguages)];
63
+ rules.push(new MorfologikBritishSpellerRule(messages, this, globalConfig, userConfig, altLanguages, lm, motherTongue));
64
+ return rules;
65
+ }
66
+
67
+ // Java: BritishEnglish#getPriorityMap()
68
+ getPriorityMap() {
69
+ return id2prio;
70
+ }
71
+
72
+ // Java: BritishEnglish#getPriorityForId(String)
73
+ getPriorityForId(id) {
74
+ const prio = id2prio.get(id);
75
+ if (prio !== null) {
76
+ return prio;
77
+ }
78
+ return super.getPriorityForId(id);
79
+ }
80
+
81
+ // Java: BritishEnglish#getInstance()
82
+ static getInstance() {
83
+ const language = Objects.requireNonNull(Languages.getLanguageForShortCode(LANGUAGE_SHORT_CODE));
84
+ if (language instanceof English) {
85
+ return language;
86
+ }
87
+ throw new RuntimeException(`BritishEnglish language expected, got ${language}`);
88
+ }
89
+ }
90
+
91
+ registerClass(BritishEnglish.FQCN, BritishEnglish);
@@ -0,0 +1,70 @@
1
+ // Java: org.languagetool.language.CanadianEnglish
2
+ import { RuntimeException, Throwable } from '@valueerror/ltjs-core/src/lib/java/errors.js';
3
+ import { Objects } from '@valueerror/ltjs-core/src/lib/java/Objects.js';
4
+ import { Languages } from '@valueerror/ltjs-core/src/core/Languages.js';
5
+ import { createComponent } from '@valueerror/ltjs-core/src/core/language/components.js';
6
+ import { registerClass } from '@valueerror/ltjs-core/src/core/resources/ClassBroker.js';
7
+ import { English } from './English.js';
8
+ import { MorfologikCanadianSpellerRule } from '../rules/MorfologikCanadianSpellerRule.js';
9
+ import { UnitConversionRuleImperial } from '../rules/UnitConversionRuleImperial.js';
10
+
11
+ const LANGUAGE_SHORT_CODE = 'en-CA';
12
+
13
+ let instantiationTrace = null; // Java: CanadianEnglish#instantiationTrace
14
+
15
+ // Java: CanadianEnglish
16
+ export class CanadianEnglish extends English {
17
+ static FQCN = 'org.languagetool.language.CanadianEnglish';
18
+
19
+ // Java: CanadianEnglish#CanadianEnglish() / protected CanadianEnglish(boolean) (fake constructor overload for subclasses)
20
+ constructor(fakeValue) {
21
+ super();
22
+ if (fakeValue === undefined) {
23
+ const trace = instantiationTrace;
24
+ if (trace !== null) {
25
+ throw new RuntimeException('Language was already instantiated, see the cause stacktrace below.', trace);
26
+ }
27
+ instantiationTrace = new Throwable();
28
+ }
29
+ }
30
+
31
+ // Java: CanadianEnglish#getCountries()
32
+ getCountries() {
33
+ return ['CA'];
34
+ }
35
+
36
+ // Java: CanadianEnglish#getName()
37
+ getName() {
38
+ return 'English (Canadian)';
39
+ }
40
+
41
+ // Java: CanadianEnglish#createDefaultSpellingRule(ResourceBundle)
42
+ createDefaultSpellingRule(messages) {
43
+ return createComponent('org.languagetool.rules.en.MorfologikCanadianSpellerRule', messages, this, null, []);
44
+ }
45
+
46
+ // Java: CanadianEnglish#getRelevantRules(ResourceBundle,UserConfig,Language,List)
47
+ getRelevantRules(messages, userConfig, motherTongue, altLanguages) {
48
+ const rules = [...super.getRelevantRules(messages, userConfig, motherTongue, altLanguages)];
49
+ rules.push(new UnitConversionRuleImperial(messages));
50
+ return rules;
51
+ }
52
+
53
+ // Java: CanadianEnglish#getRelevantLanguageModelCapableRules(ResourceBundle,LanguageModel,GlobalConfig,UserConfig,Language,List)
54
+ getRelevantLanguageModelCapableRules(messages, lm, globalConfig, userConfig, motherTongue, altLanguages) {
55
+ const rules = [...super.getRelevantLanguageModelCapableRules(messages, lm, globalConfig, userConfig, motherTongue, altLanguages)];
56
+ rules.push(new MorfologikCanadianSpellerRule(messages, this, globalConfig, userConfig, altLanguages, lm, motherTongue));
57
+ return rules;
58
+ }
59
+
60
+ // Java: CanadianEnglish#getInstance()
61
+ static getInstance() {
62
+ const language = Objects.requireNonNull(Languages.getLanguageForShortCode(LANGUAGE_SHORT_CODE));
63
+ if (language instanceof English) {
64
+ return language;
65
+ }
66
+ throw new RuntimeException(`CanadianEnglish language expected, got ${language}`);
67
+ }
68
+ }
69
+
70
+ registerClass(CanadianEnglish.FQCN, CanadianEnglish);