@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,74 @@
1
+ #American words confused with British ones
2
+ #(c) 2012 Marcin Milkowski
3
+ #Licensed under LGPL
4
+ #The list includes mostly words from http://www.learnenglish.de/mistakes/USvsBrEnglish.html
5
+ # en-GB -> en-US
6
+ aeroplane=airplane
7
+ aeroplanes=airplanes
8
+ pram=stroller
9
+ prams=strollers
10
+ #toilet=!toilet #to be researched
11
+ #page=bellboy
12
+ toffee apple=candy apple
13
+ toffee apples=candy apples
14
+ #funfair=carnival
15
+ #current account=checking account
16
+ crisps=chips
17
+ candy floss=cotton candy
18
+ washing powder=detergent
19
+ nappies=diapers
20
+ #curtains=drapes
21
+ drink-driving=drunk driving
22
+ #lift=elevator #exception: grain elevator [AE=BE], verb "to lift"
23
+ compere=emcee
24
+ #rubber=eraser
25
+ fish fingers=fish sticks
26
+ #spare time=free time
27
+ motorway=freeway
28
+ #motorway=turnpike # duplicate ???
29
+ #rubbish=garbage
30
+ #suspenders=garters
31
+ #petrol=gas
32
+ #petrol=gasoline
33
+ #main road=highway #to be researched
34
+ #bonnet=hood #careful, those are also hats in AE and BE
35
+ #crossroads=intersection
36
+ #jam=jelly #possible problems with verb "jam" and non-food jelly
37
+ #rucksack=knapsack
38
+ removal van=moving van
39
+ removal vans=moving vans
40
+ #porridge=oatmeal
41
+ #knickers=panties #do not tell AE to say knickers=panties
42
+ #tights=pantyhose
43
+ traffic warden=parking enforcement officer
44
+ traffic wardens=parking enforcement officers
45
+ #jug=pitcher
46
+ #public school=private school
47
+ #bank holiday=public holiday
48
+ #handbag=purse
49
+ #during breaktime=at recess
50
+ #school report=report card
51
+ wellingtons=galoshes
52
+ #ladder=run #make into rule: only nylon context
53
+ #spring onion=scallion
54
+ Sellotape=Scotch tape
55
+ washbasin=bathroom sink
56
+ washbasins=bathroom sinks
57
+ mackintosh=slicker
58
+ #tram=streetcar
59
+ #braces=suspenders
60
+ #jumper=sweater
61
+ #last post=taps
62
+ drawing-pin=thumbtack
63
+ drawing pin=thumbtack
64
+ drawing-pins=thumbtacks
65
+ drawing pins=thumbtacks
66
+ #rubbish=trash
67
+ #dustbin=trash can
68
+ lorry=truck
69
+ lorries=trucks
70
+ #boot=trunk #make a rule! trunks and boots are a thing in both AE and BE
71
+ #vest=undershirt
72
+ #windscreen=windshield
73
+ holidaying=vacationing
74
+ holidayed=vacationed
@@ -0,0 +1,524 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <?xml-stylesheet type="text/xsl" href="../../../../../../../../../languagetool-core/src/main/resources/org/languagetool/rules/print.xsl" title="Pretty print" ?>
3
+ <?xml-stylesheet type="text/css" href="../../../../../../../../../languagetool-core/src/main/resources/org/languagetool/rules/rules.css" title="Easy editing stylesheet" ?>
4
+ <!--
5
+ English Style Rules for LanguageTool
6
+ See tagset.txt for the meaning of the POS tags
7
+ Copyright (C) 2001-2023 Daniel Naber (http://www.danielnaber.de),
8
+ Marcin Miłkowski, and the LanguageTool contributors
9
+
10
+ This library is free software; you can redistribute it and/or
11
+ modify it under the terms of the GNU Lesser General Public
12
+ License as published by the Free Software Foundation; either
13
+ version 2.1 of the License, or (at your option) any later version.
14
+
15
+ This library is distributed in the hope that it will be useful,
16
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
17
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18
+ Lesser General Public License for more details.
19
+
20
+ You should have received a copy of the GNU Lesser General Public
21
+ License along with this library; if not, write to the Free Software
22
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
23
+ USA
24
+ -->
25
+ <!--suppress CheckTagEmptyBody -->
26
+
27
+ <!DOCTYPE rules [
28
+ <!ENTITY apostrophe "['’`´‘ʻ]">
29
+
30
+ <!ENTITY weekdays "Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday">
31
+ <!ENTITY abbrevWeekdays "Mon|Mo|Tue|Tu|Wed|We|Thu|Th|Fri|Fr|Sat|Sa|Sun|Su">
32
+ <!ENTITY months "January|February|March|April|May|June|July|August|September|October|November|December">
33
+ <!ENTITY abbrevMonths "Jan|Feb|Mar|Apr|Jun|Jul|Aug|Sep|Sept|Oct|Nov|Dec">
34
+
35
+ <!ENTITY hyphen "(?:[-‑])">
36
+ <!ENTITY subordinating_conjunctions "after|although|as|because|before|if|lest|like|once|since|than|that|though|unless|until|whenever|where|whereas|wherever|whether|while|why"><!-- #2988 -->
37
+ <!ENTITY ambiguous_date '
38
+ <token regexp="yes">0?[1-9]|1[0-2]</token>
39
+ <token>/</token>
40
+ <token regexp="yes">0?[1-9]|1[0-2]</token>
41
+ <token>/</token>
42
+ <token regexp="yes">\d\d\d\d</token>
43
+ '>
44
+ <!-- "7 October 2014" and "7th October 2014" -->
45
+ <!ENTITY date_dmy '
46
+ <token regexp="yes">\d\d?(th)?</token>
47
+ <token regexp="yes">&months;|&abbrevMonths;</token>
48
+ <token regexp="yes">\d\d\d\d</token>
49
+ '>
50
+ <!ENTITY date_dmy_skip '
51
+ <token regexp="yes">\d\d?</token>
52
+ <token regexp="yes">&months;|&abbrevMonths;</token>
53
+ <token regexp="yes" skip="-1">\d\d\d\d</token>
54
+ '>
55
+ <!-- "October 7, 2014" -->
56
+ <!ENTITY date_mdy '
57
+ <token regexp="yes">&months;|&abbrevMonths;</token>
58
+ <token regexp="yes">\d\d?</token>
59
+ <token>,</token>
60
+ <token regexp="yes">\d\d\d\d</token>
61
+ '>
62
+ <!ENTITY date_mdy_skip '
63
+ <token regexp="yes">&months;|&abbrevMonths;</token>
64
+ <token regexp="yes">\d\d?</token>
65
+ <token>,</token>
66
+ <token regexp="yes" skip="-1">\d\d\d\d</token>
67
+ '>
68
+ <!-- "31/10/2014" -->
69
+ <!ENTITY date_dmy_numbers '
70
+ <token regexp="yes">0?[1-9]|[12][0-9]|3[01]</token>
71
+ <token>/</token>
72
+ <token regexp="yes">0?[1-9]|1[0-2]</token>
73
+ <token>/</token>
74
+ <token regexp="yes">\d\d\d\d</token>
75
+ '>
76
+ <!ENTITY date_dmy_numbers_skip '
77
+ <token regexp="yes">0?[1-9]|[12][0-9]|3[01]</token>
78
+ <token>/</token>
79
+ <token regexp="yes">0?[1-9]|1[0-2]</token>
80
+ <token>/</token>
81
+ <token regexp="yes" skip="-1">\d\d\d\d</token>
82
+ '>
83
+ <!-- "10/31/2014" -->
84
+ <!ENTITY date_mdy_numbers '
85
+ <token regexp="yes">0?[1-9]|1[0-2]</token>
86
+ <token>/</token>
87
+ <token regexp="yes">0?[1-9]|[12][0-9]|3[01]</token>
88
+ <token>/</token>
89
+ <token regexp="yes">\d\d\d\d</token>
90
+ '>
91
+ <!ENTITY date_mdy_numbers_skip '
92
+ <token regexp="yes">0?[1-9]|1[0-2]</token>
93
+ <token>/</token>
94
+ <token regexp="yes">0?[1-9]|[12][0-9]|3[01]</token>
95
+ <token>/</token>
96
+ <token regexp="yes" skip="-1">\d\d\d\d</token>
97
+ '>
98
+ ]>
99
+
100
+ <rules lang="en" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/languagetool-org/languagetool/master/languagetool-core/src/main/resources/org/languagetool/rules/rules.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema">
101
+ <category id="STYLE" name="Style" type="style">
102
+ <rule id="HAPPY_CHRISTMAS" name="Happy (Merry) Christmas" tags="picky">
103
+ <antipattern>
104
+ <token>christmas</token>
105
+ <token regexp="yes">holidays?|days?|birthday|eve</token>
106
+ </antipattern>
107
+ <pattern>
108
+ <token>happy</token>
109
+ <token>christmas</token>
110
+ </pattern>
111
+ <message>It's more common to wish someone <suggestion>Merry Christmas</suggestion>.</message>
112
+ <url>https://www.countryliving.com/life/a37128/origin-of-merry-christmas/</url>
113
+ <example correction="Merry Christmas">I wish you a <marker>happy christmas</marker>.</example>
114
+ <example>Happy Christmas Days!</example>
115
+ </rule>
116
+ <rule id="THRU" name="thru / through">
117
+ <antipattern>
118
+ <token>thru</token>
119
+ <token regexp="yes">axles?</token>
120
+ </antipattern>
121
+ <pattern>
122
+ <token>thru</token>
123
+ </pattern>
124
+ <message>The word 'thru' is informal. Consider replacing it with <suggestion>through</suggestion>.</message>
125
+ <url>https://www.merriam-webster.com/dictionary/thru</url>
126
+ <example correction="through">I'm going <marker>thru</marker> hell.</example>
127
+ <example>A thru axle (TA) is a wheel attachment system that secures a wheel on a hub between a pair of dropouts on a bicycle frame or fork.</example>
128
+ </rule>
129
+ </category>
130
+ <category id="AMERICAN_ENGLISH_STYLE" name="American English Style" type="style">
131
+ <rulegroup id="EG_NO_COMMA" name="'e.g.' without a comma" tags="picky">
132
+ <rule>
133
+ <antipattern>
134
+ <token>e</token>
135
+ <token>.</token>
136
+ <token>g</token>
137
+ <token>.</token>
138
+ <token regexp="yes" spacebefore="no">[a-z]{1,2}</token>
139
+ </antipattern>
140
+ <antipattern>
141
+ <token>.</token>
142
+ <token spacebefore="no">e</token>
143
+ <token>.</token>
144
+ <token>g</token>
145
+ <token>.</token>
146
+ </antipattern>
147
+ <pattern>
148
+ <marker>
149
+ <token>e</token>
150
+ <token>.</token>
151
+ <token spacebefore="no">g</token>
152
+ <token>.</token>
153
+ </marker>
154
+ <token negate="yes">,</token>
155
+ </pattern>
156
+ <message>A comma is missing here.</message>
157
+ <suggestion>e.g.,</suggestion>
158
+ <short>Punctuation error</short>
159
+ <example>There are several grammar checkers for English, e.g., LanguageTool.</example>
160
+ <example correction="e.g.,">There are several grammar checkers for English, <marker>e.g.</marker> LanguageTool.</example>
161
+ <example>Davies, R.E.G. Delta - An Airline and Its Aircraft.</example>
162
+ </rule>
163
+ <rule>
164
+ <pattern>
165
+ <marker>
166
+ <token>eg</token>
167
+ </marker>
168
+ <token negate="yes" regexp="yes">,|\.</token>
169
+ </pattern>
170
+ <message>A comma and a dot are missing here.</message>
171
+ <suggestion>e.g.,</suggestion>
172
+ <short>Punctuation error</short>
173
+ <example>There are several grammar checkers for English, e.g., LanguageTool.</example>
174
+ <example correction="e.g.,">There are several grammar checkers for English, <marker>eg</marker> LanguageTool.</example>
175
+ </rule>
176
+ </rulegroup>
177
+ <rulegroup id="IE_NO_COMMA" name="'i.e.' without a comma" tags="picky">
178
+ <rule>
179
+ <pattern>
180
+ <marker>
181
+ <token>i</token>
182
+ <token>.</token>
183
+ <token spacebefore="no">e</token>
184
+ <token>.</token>
185
+ </marker>
186
+ <token negate="yes" regexp="yes">,|-|–|:|;|\.|\/</token>
187
+ </pattern>
188
+ <message>A comma is missing here.</message>
189
+ <suggestion>i.e.,</suggestion>
190
+ <short>Punctuation error</short>
191
+ <example>Who's responsible for providing public facilities, <marker>i.e.,</marker> a post office, library, etc. for the Northwest?</example>
192
+ <example correction="i.e.,">Who's responsible for providing public facilities, <marker>i.e.</marker> a post office, library, etc. for the Northwest?</example>
193
+ </rule>
194
+ <rule>
195
+ <antipattern>
196
+ <token>ie</token>
197
+ <token>:</token>
198
+ </antipattern>
199
+ <antipattern>
200
+ <token case_sensitive="yes">IE</token>
201
+ <token regexp="yes">\d+</token>
202
+ </antipattern>
203
+ <antipattern>
204
+ <token regexp="yes">the|in</token>
205
+ <token case_sensitive="yes">IE</token>
206
+ </antipattern>
207
+ <antipattern>
208
+ <token>.</token>
209
+ <token spacebefore="no">ie</token>
210
+ </antipattern>
211
+ <antipattern>
212
+ <token>ie</token>
213
+ <token>'s</token>
214
+ </antipattern>
215
+ <antipattern case_sensitive="yes">
216
+ <token>IE</token>
217
+ <token regexp="yes">[a-z].*</token>
218
+ </antipattern>
219
+ <pattern>
220
+ <marker>
221
+ <token>ie</token>
222
+ </marker>
223
+ <token negate="yes" regexp="yes">,|-|–|:|;|\.|\/</token>
224
+ </pattern>
225
+ <message>The comma and dots are missing here:<suggestion>i.e.,</suggestion>.</message>
226
+ <short>Punctuation error</short>
227
+ <example>Who's responsible for providing public facilities, <marker>i.e.,</marker> a post office, library, etc. for the Northwest?</example>
228
+ <example correction="i.e.,">Who's responsible for providing public facilities, <marker>ie</marker> a post office, library, etc. for the Northwest?</example>
229
+ <example>Atlantipedia.ie: Encyclopedic collection of information on Atlantis.</example>
230
+ </rule>
231
+ <rule>
232
+ <antipattern>
233
+ <token>.</token>
234
+ <token spacebefore="no">ie</token>
235
+ </antipattern>
236
+ <pattern>
237
+ <marker>
238
+ <token>ie</token>
239
+ <token>.</token>
240
+ </marker>
241
+ <token negate="yes">,</token>
242
+ </pattern>
243
+ <message>The comma and dots are missing here.</message>
244
+ <suggestion>i.e.,</suggestion>
245
+ <short>Punctuation error</short>
246
+ <example>Who's responsible for providing public facilities, <marker>i.e.,</marker> a post office, library, etc. for the Northwest?</example>
247
+ <example correction="i.e.,">Who's responsible for providing public facilities, <marker>ie.</marker> a post office, library, etc. for the Northwest?</example>
248
+ </rule>
249
+ </rulegroup>
250
+ <rule id="ETC_PERIOD" name="period after abbreviation 'etc.'">
251
+ <antipattern>
252
+ <token>etc</token>
253
+ <token regexp="yes">/|_|…|#</token>
254
+ </antipattern>
255
+ <antipattern>
256
+ <token regexp="yes">[/\\]</token>
257
+ <token spacebefore="no">etc</token>
258
+ </antipattern>
259
+ <antipattern>
260
+ <token>the</token>
261
+ <token>etc</token>
262
+ </antipattern>
263
+ <antipattern>
264
+ <token>etc</token>
265
+ <token regexp="yes">folders?|director(y|ies)</token>
266
+ </antipattern>
267
+ <antipattern>
268
+ <token>etc</token>
269
+ <token regexp="yes" spacebefore="no">[/\\]</token>
270
+ </antipattern>
271
+ <pattern>
272
+ <marker>
273
+ <token case_sensitive="yes">etc</token>
274
+ </marker>
275
+ <token><exception>.</exception></token>
276
+ </pattern>
277
+ <message>In American English, abbreviations like "etc." require a period.</message>
278
+ <suggestion>etc.</suggestion>
279
+ <url>https://languagetool.org/insights/post/spelling-etc-or-ect/</url>
280
+ <short>Abbreviation</short>
281
+ <example correction="etc.">Tennis, soccer, baseball, <marker>etc</marker> are outdoor games.</example>
282
+ <example correction="etc.">I use things like Java, Microsoft, Unix, <marker>etc</marker> at work.</example>
283
+ <example correction="etc.">Make sure you bring your fishing pole, tackle, bait, <marker>etc</marker> as we will not make any stops.</example>
284
+ <example correction="etc.">No check engine lights <marker>etc</marker>?</example>
285
+ <example correction="etc.">Removed the alarm listener and replaced with lights, <marker>etc</marker>, etc.</example>
286
+ <example>Process: 4264 ExecStart=/etc/rc.d/init.d/newrelic-daemon start (code=exited, status=0/SUCCESS)</example>
287
+ <example>DND_ETC__List1</example>
288
+ <example>Device Handlers, etc…</example>
289
+ <example>root@de1lvapp098p:/etc# ls -l /dev/disk/by-uuid</example>
290
+ <example>Diversity Dick Liebert reported that questions for the ETC survey are currently being developed.</example>
291
+ </rule>
292
+ <rule id="MISSING_COMMA_AFTER_YEAR" name="Potentially missing comma after year">
293
+ <pattern>
294
+ <token regexp="yes">&months;</token>
295
+ <token regexp="yes">[0123]?[0-9]</token>
296
+ <token min="0">,</token>
297
+ <marker>
298
+ <token regexp="yes">[0-9]{4}</token>
299
+ </marker>
300
+ <token regexp="yes">[a-z]+</token>
301
+ </pattern>
302
+ <message>Some style guides suggest that commas should set off the year in a month-day-year date.</message>
303
+ <suggestion>\4,</suggestion>
304
+ <url>http://www.thepunctuationguide.com/comma.html#dates</url>
305
+ <short>Potentially missing comma</short>
306
+ <example correction="2011,">The meeting scheduled for July 10, <marker>2011</marker> was canceled.</example>
307
+ <example>My birthday is October 8, <marker>1983,</marker> but I usually do not celebrate.</example>
308
+ </rule>
309
+
310
+ <rulegroup id="TOILET" name="offensive word 'toilet'">
311
+ <rule>
312
+ <pattern>
313
+ <token>toilet</token>
314
+ <token regexp='yes' min="0">rooms?</token>
315
+ </pattern>
316
+ <message>This expression can be considered mildly offensive (especially in Canadian and American English).</message>
317
+ <suggestion>rest\2</suggestion>
318
+ <suggestion>wash\2</suggestion>
319
+ <suggestion>bath\2</suggestion>
320
+ <suggestion>powder \2</suggestion>
321
+ <url>http://www.englishteachermelanie.com/vocabulary-do-not-call-it-toilet/</url>
322
+ <example correction="restrooms|washrooms|bathrooms|powder rooms">Have you seen the <marker>toilet rooms</marker>?</example>
323
+ </rule>
324
+ <rule>
325
+ <pattern>
326
+ <token regexp="yes">go|visit|on|use</token>
327
+ <token min="0">to</token>
328
+ <token regexp="yes">the|a</token>
329
+ <marker>
330
+ <token>
331
+ toilet
332
+ <exception scope="next" regexp="yes">game|song|paper|bowls?|bar|store|seat|plunger|flange|water</exception>
333
+ </token>
334
+ </marker>
335
+ </pattern>
336
+ <message>This expression can be considered mildly offensive (especially in Canadian and American English).</message>
337
+ <suggestion>restroom</suggestion>
338
+ <suggestion>washroom</suggestion>
339
+ <suggestion>bathroom</suggestion>
340
+ <suggestion>powder room</suggestion>
341
+ <url>http://www.englishteachermelanie.com/vocabulary-do-not-call-it-toilet/</url>
342
+ <example correction="restroom|washroom|bathroom|powder room">I need to go to the <marker>toilet</marker>.</example>
343
+ </rule>
344
+ </rulegroup>
345
+ <rule id="IVE_I_HAVE_AMERICAN_STYLE" name="I've (I have) two tickets to see the Dodgers tonight">
346
+ <antipattern>
347
+ <token>'ve</token>
348
+ <token>at</token>
349
+ <token>least</token>
350
+ <token postag="VBN" />
351
+ <example>Until now, everything that's come out I've at least heard of or had some idea of what they were from the company's filings or discussions.</example>
352
+ </antipattern>
353
+ <antipattern>
354
+ <token skip="1">'ve</token>
355
+ <token postag="VBN" />
356
+ <example>I've fact checked the IM and have a couple of questions for you and some language suggestions.</example>
357
+ <example>I've hand selected these 10 matches below with you in mind.</example>
358
+ </antipattern>
359
+ <antipattern>
360
+ <token>'ve</token>
361
+ <token regexp="yes" postag="NN:UN">.+e</token> <!-- because they're not tagged as VB -->
362
+ <example>I've place electronic copies of the Desert Sky warranty agreement on the service2 network under the TSA_and_aggreement folder for Desert Sky.</example>
363
+ <example>In addition, I've note "Other Risks/Opportunities" for the quarter that could have significant impacts on our ultimate results.</example>
364
+ <example>I've place another call into David and let him know that the information we received included most points except for Tomcat.</example>
365
+ <example>As I am sure you've notice, this is not a textbook.</example>
366
+ </antipattern>
367
+ <antipattern>
368
+ <token>'ve</token>
369
+ <token min="0" postag="DT" />
370
+ <token min="0" postag="J.*|RB" postag_regexp="yes" />
371
+ <token postag="VBN" />
372
+ <example>I've clean forgotten.</example>
373
+ <example>You've all underestimated Tom.</example>
374
+ <example>I've already seen it.</example>
375
+ </antipattern>
376
+ <pattern>
377
+ <marker>
378
+ <token regexp="yes">I|you|we|they</token>
379
+ <token>'ve</token>
380
+ </marker>
381
+ <token chunk_re="B-NP.*" />
382
+ <token><exception>'d</exception></token>
383
+ </pattern>
384
+ <message>In American English, "\1" and "have" do not usually form a contraction unless they're followed by a past participle.</message>
385
+ <suggestion>\1 have</suggestion>
386
+ <suggestion>\1\2 got</suggestion>
387
+ <url>https://languagetool.org/insights/post/grammar-contractions/</url>
388
+ <example correction="I have|I've got"><marker>I've</marker> two tickets to see the Dodgers tonight.</example>
389
+ <example correction="you have|you've got">I've got more pounds to my name than <marker>you've</marker> hairs on your head.</example>
390
+ <example correction="We have|We've got"><marker>We've</marker> a lot to thank Tom for.</example>
391
+ <example correction="they have|they've got">Seeing as they're poor, <marker>they've</marker> no choice but to work their hardest.</example>
392
+ <example>Off photos he took we've ID'd six possible locations for Blankfein's safe house.</example>
393
+ </rule>
394
+ <rule id="SAY_SORRY" name="say sorry (apologize)">
395
+ <antipattern>
396
+ <token postag="PCT|SENT_START" postag_regexp="yes" />
397
+ <token>say</token>
398
+ <token>sorry</token>
399
+ <token>!</token>
400
+ </antipattern>
401
+ <antipattern>
402
+ <token>wanna</token>
403
+ <token>say</token>
404
+ </antipattern>
405
+ <pattern>
406
+ <marker>
407
+ <token inflected="yes">say</token>
408
+ <token>sorry</token>
409
+ </marker>
410
+ </pattern>
411
+ <message>Consider using <suggestion><match no="1" postag=".*" postag_regexp="yes">apologize</match></suggestion> to improve your wording.</message>
412
+ <example correction="apologize">I just wanted to <marker>say sorry</marker> for everything I did.</example>
413
+ </rule>
414
+ <rulegroup id="THANKS_FOR_CONTACTING_ME" name="Thanks for contacting us (reaching out to us)">
415
+ <!-- TODO: maybe picky -->
416
+ <rule>
417
+ <pattern>
418
+ <token regexp="yes" skip="3">thanks?</token>
419
+ <token>for</token>
420
+ <token postag="RB" min="0" />
421
+ <marker>
422
+ <token regexp="yes">contacting|e-?mailing</token>
423
+ <token regexp="yes">us|me</token>
424
+ </marker>
425
+ <token>
426
+ <exception regexp="yes">about|with</exception>
427
+ </token>
428
+ </pattern>
429
+ <message>Consider an alternative to improve your overall wording. The verb "\4" is considered neutral, while "reach out" is about seeking a positive relationship.</message>
430
+ <suggestion>reaching out to \5</suggestion>
431
+ <example correction="reaching out to us">Thank you for <marker>contacting us</marker>.</example>
432
+ <example>Anne, Thanks for contacting me about this.</example>
433
+ </rule>
434
+ <rule default="off">
435
+ <pattern>
436
+ <token regexp="yes" skip="3">thanks?</token>
437
+ <token>for</token>
438
+ <marker>
439
+ <token>your</token>
440
+ <token regexp="yes">e-?mail|message</token>
441
+ </marker>
442
+ <token postag="CC|PCT|TO" postag_regexp="yes" />
443
+ </pattern>
444
+ <message>Consider an alternative to improve your overall wording.</message>
445
+ <suggestion>reaching out</suggestion>
446
+ <suggestion>reaching out to us</suggestion>
447
+ <example correction="reaching out|reaching out to us">Thank you for <marker>your email</marker>.</example>
448
+ </rule>
449
+ <rule>
450
+ <pattern>
451
+ <token regexp="yes" skip="3">thanks?</token>
452
+ <token>for</token>
453
+ <marker>
454
+ <token regexp="yes">getting|stepping</token>
455
+ <token>in</token>
456
+ <token>contact</token>
457
+ <token>with</token>
458
+ <token regexp="yes">us|me</token>
459
+ </marker>
460
+ </pattern>
461
+ <message>Consider an alternative to improve your overall wording.</message>
462
+ <suggestion>reaching out to \7</suggestion>
463
+ <example correction="reaching out to us">Thank you for <marker>getting in contact with us</marker>.</example>
464
+ </rule>
465
+ <rule>
466
+ <pattern>
467
+ <token regexp="yes" skip="3">thanks?</token>
468
+ <token>for</token>
469
+ <marker>
470
+ <token regexp="yes">getting|stepping</token>
471
+ <token>in</token>
472
+ <token>contact</token>
473
+ </marker>
474
+ <token postag="CC|PCT|TO" postag_regexp="yes" />
475
+ </pattern>
476
+ <message>Consider an alternative to improve your overall wording.</message>
477
+ <suggestion>reaching out</suggestion>
478
+ <example correction="reaching out">Thank you for <marker>getting in contact</marker>.</example>
479
+ </rule>
480
+ <rule>
481
+ <pattern>
482
+ <token regexp="yes">will|'ll</token>
483
+ <marker>
484
+ <token>contact</token>
485
+ <token regexp="yes">you|me</token>
486
+ </marker>
487
+ <token regexp="yes">regarding|to|\.</token>
488
+ </pattern>
489
+ <message>Consider an alternative to improve your overall wording. The verb "\2" is considered neutral, while "reach out" is about seeking a positive relationship.</message>
490
+ <suggestion>reach out to \3</suggestion>
491
+ <suggestion>inform \3</suggestion>
492
+ <suggestion>let \3 know</suggestion>
493
+ <example correction="reach out to you|inform you|let you know">I will <marker>contact you</marker> regarding next week's meeting.</example>
494
+ </rule>
495
+ <rule>
496
+ <pattern>
497
+ <token regexp="yes">can|could</token>
498
+ <token>you</token>
499
+ <token postag="RB" min="0" />
500
+ <marker>
501
+ <token>contact</token>
502
+ <token regexp="yes">him|her|you|them|my|y?our|their|his</token>
503
+ </marker>
504
+ </pattern>
505
+ <message>Consider an alternative to improve your overall wording. The verb "contact" is considered neutral, while "reach out" is about seeking a positive relationship.</message>
506
+ <suggestion>reach out to \5</suggestion>
507
+ <suggestion>inform \5</suggestion>
508
+ <example correction="reach out to our|inform our">Could you please <marker>contact our</marker> lawyer?</example>
509
+ </rule>
510
+ </rulegroup>
511
+ <rule id="EX_FORMER" name="ex- (former)">
512
+ <pattern>
513
+ <marker>
514
+ <token>ex</token>
515
+ </marker>
516
+ <token postag='JJ.*' postag_regexp='yes'><exception regexp='yes'>officio|parte|ante|on|post|tempore|cathedra</exception></token>
517
+ <token postag='NN.*' postag_regexp='yes'></token>
518
+ </pattern>
519
+ <message>Consider using <suggestion>former</suggestion> instead of "ex".</message>
520
+ <example correction='former'>He was a <marker>ex</marker> political prisoner.</example>
521
+ <example>He was an ex officio member.</example>
522
+ </rule>
523
+ </category>
524
+ </rules>