diff options
Diffstat (limited to 'JLanguageTool/src/rules/en')
-rw-r--r-- | JLanguageTool/src/rules/en/det_a.txt | 209 | ||||
-rw-r--r-- | JLanguageTool/src/rules/en/det_an.txt | 89 | ||||
-rw-r--r-- | JLanguageTool/src/rules/en/grammar.xml | 5816 |
3 files changed, 6114 insertions, 0 deletions
diff --git a/JLanguageTool/src/rules/en/det_a.txt b/JLanguageTool/src/rules/en/det_a.txt new file mode 100644 index 0000000..3c86418 --- /dev/null +++ b/JLanguageTool/src/rules/en/det_a.txt @@ -0,0 +1,209 @@ +# words that require 'a' instead of 'an' as a determiner, even +# though they begin with [aeiou] (words are case-insensitive unless the +# line starts with '*'). +# Also see: http://www.learnenglish.org.uk/grammar/archive/articles_pronunciation.html +Eucharistic +eukaryote +euphemism +euphemistic +euphemistically +euphonium +Eurasia +Eurasian +Eurasians +Euridyce +Euripides +Euro +Eurocentric +Euroclydon +Eurocommunism +Eurocrat +Eurodollar +Eurodollars +Euromarket +Europa +Europe +European +Europeans +Europeanisation +Europeanise +Europeanised +Eurovision +Eustachian +Unix +eucalyptus +eucharist +euclidean +eugene +eugenic +eugenics +eulogy +eulogist +eulogized +eulogistic +eunice +eunuch +euphemistic +euphemistically +euphony +euphoria +euphoric +euphuism +eureka +eurhythmic +eurhythmy +euripus +eurodollar +euthanasia +ewe +ewer +Ms +one +onetime +oneness +oneway +oneyear +once +ubiquitous +ubiquity +Uganda +Ugandan +ukase +ukulele +ululated +ululation +unary +unanimity +unanimous +unanimously +Unesco +uni +unicameral +unicameralism +Unicef +unicycle +unicellular +unicorn +unicorns +unidimensional +unidirectional +unification +unified +unifier +uniform +uniformally +uniformed +uniformisation +uniformise +uniformitarian +uniformitarianism +uniformity +uniformly +unify +unifying +unijugate +unilateral +unilaterally +unilateralisation +unilateralise +unilateralist +unilinear +unilingual +uniliteral +uniliteralism +uniliteralist +union +unionism +unionist +unionized +unipolar +uniprocessor +unique +uniquely +uniqueness +unisex +unison +unit +unitary +Unitarian +Unitarianism +Unitarians +united +unitedly +uniter +uniting +unitless +unity +univariate +universal +universally +universalisation +universalization +universalise +universalising +universalize +universalizing +universalism +universalist +universalistic +universality +universe +university +univocal +uranium +Uranus +uranyl +urate +uric +urinal +urinary +urinated +urine +urologist +Uruguay +Uruguayan +Uruguayans +Utah +utility +utilizable +utilization +utilized +utilitarian +utilitarianism +utopia +utopian +Utrecht +Uttoxeter +*U +*US +usable +usage +useless +uselessly +uselessness +useful +usefully +usefulness +use +used +user +users +using +usual +usually +usurer +usurious +usurpation +usurped +usury +usurper +utensil +uterine +uterus +*UK +*UN +*UEFA +*UNHCR +unanimous +uvula +uvular diff --git a/JLanguageTool/src/rules/en/det_an.txt b/JLanguageTool/src/rules/en/det_an.txt new file mode 100644 index 0000000..c5e3b1b --- /dev/null +++ b/JLanguageTool/src/rules/en/det_an.txt @@ -0,0 +1,89 @@ +# words that require 'an' instead of 'a' as a determiner, even +# though they don't begin with [aeiou] (words are case-insensitive unless +# the line starts with '*'). +# Also see: http://www.learnenglish.org.uk/grammar/archive/articles_pronunciation.html +8 +8m +11 +11,000 +11th +18 +18th +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +800 +F +*FBI +*FDA +L +M +N +*NFL +*NBA +*NBC +*NHL +*NGO +Nvidia +S +R +h-bomb +hauteur +heir +heirdom +heiress +heirloom +heirship +honest +honestly +honesty +honor +honored +honors +honorable +honorably +honorarium +honorary +honorific +honour +honoured +Honours +honourary +honourable +honourably +honourarium +honourific +hour +hourglass +hourlong +hourly +*HIV +lbw +lcd +mpg +mph +*MBA +*MRI +MSc +*MTV +HTML +R&D +*SGML +*SOS +*SMS +X +*XML +Xmas +X-ray +X-rays +Xbox +*SUV +*STD +*SPF diff --git a/JLanguageTool/src/rules/en/grammar.xml b/JLanguageTool/src/rules/en/grammar.xml new file mode 100644 index 0000000..13282d2 --- /dev/null +++ b/JLanguageTool/src/rules/en/grammar.xml @@ -0,0 +1,5816 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?xml-stylesheet type="text/xsl" href="../print.xsl" ?> +<?xml-stylesheet type="text/css" href="../rules.css" +title="Easy editing stylesheet" ?> +<!-- +English Grammar and Typo Rules for LanguageTool +See tagset.txt for the meaning of the POS tags +Copyright (C) 2001-2007 Daniel Naber (http://www.danielnaber.de) +$Id$ +--> +<!--suppress CheckTagEmptyBody --> +<rules lang="en" xsi:noNamespaceSchemaLocation="../rules.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema"> + <!-- ====================================================================== --> + <!-- Possible typos --> + <!-- ====================================================================== --> + <category name="Possible Typos"> + <rule id="I_THIN" name="I thin (think)"> + <pattern mark_from="2"> + <token negate="yes" regexp="yes">am|do|can|will</token> + <token>I</token> + <token>thin</token> + </pattern> + <message>Did you mean <suggestion>think</suggestion>?</message> + <short>Possible typo</short> + <example correction="think" type="incorrect">I <marker>thin</marker> you are right.</example> + <example type="correct">How do I <marker>thin</marker> heavier acrylics for Airbrushing?</example> + <example type="correct">I <marker>think</marker> you are right.</example> + <example type="correct">How can I <marker>thin</marker> out my face?</example> + <example type="correct">Am I <marker>Thin</marker> Enough Yet?</example> + </rule> + <rule id="SUPPOSE_TO" name="suppose to (supposed to)"> + <pattern mark_from="0" mark_to="-2"> + <token inflected="no">suppose</token> + <token>to</token> + <token inflected="no">be</token> + </pattern> + <message>Probably you should use a past participle here: <suggestion>supposed</suggestion>.</message> + <short>Possible typo</short> + <example correction="supposed" type="incorrect">What jar is this <marker>suppose</marker> to be comming from?</example> + <example type="correct">What jar is this <marker>supposed</marker> to be comming from?</example> + </rule> + <rule id="ALL_BE_IT" name="all be it (albeit)"> + <pattern> + <token>all</token> + <token>be</token> + <token>it</token> + </pattern> + <message>Did you mean <suggestion>albeit</suggestion> (=although)?</message> + <short>Possible typo</short> + <example correction="albeit" type="incorrect">The good news is there are several redeeming factors to (<marker>all be it</marker> barely).</example> + <example type="correct">The good news is there are several redeeming factors to (albeit barely)</example> + </rule> + <rule id="ALL_FOR_NOT" name="all for not (all for naught)"> + <pattern mark_to="-1"> + <token>all</token> + <token>for</token> + <token regexp="yes">not|knot</token> + <token><exception postag="VBG"></exception></token> + </pattern> + <message>Did you mean <suggestion>all for naught</suggestion> (=all for nothing)?</message> + <short>Possible typo</short> + <example type="correct">Sorry all for not being in the chat.</example> + <example correction="all for naught" type="incorrect">My farmer pants were <marker>all for not</marker>...</example> + </rule> + <rule id="ALL_OVER_THE_WORD" name="all over the word (all over the world)"> + <pattern> + <token>all</token> + <token>over</token> + <token>the</token> + <token>word</token> + </pattern> + <message>Did you mean <suggestion>\1 \2 \3 world</suggestion> (=globally)?</message> + <short>Possible typo</short> + <example correction="all over the world" type="incorrect">The company employs over 25 000 people <marker>all over the word</marker>.</example> + <example type="correct">The company employs over 25,000 people all over the world.</example> + </rule> + <rule id="ANOTHER_WORDS" name="another words (in other words)"> + <pattern mark_to="-1"> + <token postag="SENT_START"></token> + <token>another</token> + <token>words</token> + <token>,</token> + </pattern> + <message>Did you mean <suggestion>in other words</suggestion>?</message> + <short>Possible typo</short> + <example correction="In other words" type="incorrect"><marker>Another words</marker>, he is an ideal husband.</example> + <example type="correct">In other words, he is an ideal husband.</example> + </rule> + <rule id="BACK_AND_FOURTH" name="back and fourth (back and forth)"> + <pattern> + <token>back</token> + <token>and</token> + <token>fourth</token> + </pattern> + <message>Did you mean <suggestion>back and forth</suggestion>?</message> + <short>Possible typo</short> + <example correction="back and forth" type="incorrect">How to move <marker>back and fourth</marker> from linux to xmb?</example> + <example type="correct">"How to move back and forth from linux to xmb?"</example> + </rule> + <rule id="BACK_IN_FORTH" name="back in forth (back and forth)"> + <pattern> + <token>back</token> + <token>in</token> + <token>forth</token> + </pattern> + <message>Did you mean <suggestion>back and forth</suggestion>?</message> + <short>Possible typo</short> + <example correction="back and forth" type="incorrect">I've been texting <marker>back in forth</marker> with him for the past 3 days.</example> + <example type="correct">I've been texting back and forth with him for the past 3 days</example> + </rule> + <rulegroup id="BEING_BEGIN" name="being (begin)"> + <rule> + <pattern mark_from="2" mark_to="-2"> + <token postag="SENT_START"></token> + <token>To</token> + <token>being</token> + <token>with</token> + <token>,</token> + </pattern> + <message>Did you mean <suggestion>begin</suggestion>?</message> + <short>Possible typo</short> + <example correction="begin" type="incorrect">To <marker>being</marker> with, she is a Russian spy.</example> + <example type="correct">To begin with, she's a spy.</example> + </rule> + <rule> + <pattern mark_to="-1"> + <token>begin</token> + <token postag="VBD|VBN" postag_regexp="yes"></token> + </pattern> + <message>Did you mean <suggestion>being</suggestion>?</message> + <short>Possible typo</short> + <example correction="being" type="incorrect">I was willing to risk <marker>begin</marker> interrogated about what I was going to do with the information.</example> + <example type="correct">I was willing to risk being interrogated about what I was going to do with the information.</example> + </rule> + </rulegroup> + <rule id="BOB_WIRE" name="bob/barb wire (barbed wire)"> + <pattern> + <token regexp="yes">bob|barb</token> + <token>wire</token> + </pattern> + <message>Did you mean <suggestion>barbed wire</suggestion>?</message> + <short>Possible typo</short> + <example correction="barbed wire" type="incorrect">Building a <marker>bob wire</marker> fence</example> + <example type="correct">Building a barbed wire fence</example> + </rule> + <rule id="BYE_THE_WAY" name="bye the way (by the way)"> + <pattern> + <token>bye</token> + <token>the</token> + <token>way</token> + </pattern> + <message>Did you mean <suggestion>by the way</suggestion>?</message> + <short>Possible typo</short> + <example correction="by the way" type="incorrect">And <marker>bye the way</marker>, this program is open source.</example> + <example type="correct">And <marker>by the way</marker>, this program is open source.</example> + </rule> + <rulegroup id="CA_PRP" name="ca I (can I)"> + <rule> + <pattern case_sensitive="yes" mark_from="0" mark_to="-1"> + <token>ca</token> + <token postag="PRP"></token> + </pattern> + <message>Possible typo. Did you mean <suggestion>can</suggestion>?</message> + <example correction="can" type="incorrect">What <marker>ca</marker> I do?</example> + <example type="correct">I live in Los Angeles, CA.</example> + </rule> + <rule> + <pattern case_sensitive="yes" mark_from="1" mark_to="0"> + <token postag="PRP"></token> + <token>ca</token> + </pattern> + <message>Possible typo. Did you mean <suggestion>can</suggestion>?</message> + <example correction="can" type="incorrect">You <marker>ca</marker> do it!</example> + <example type="correct">I live in Los Angeles, CA.</example> + </rule> + </rulegroup> + <rule id="CHALK_FULL" name="chalk full (chock-full)"> + <pattern> + <token>chalk</token> + <token>full</token> + </pattern> + <message>Did you mean <suggestion>chock-full</suggestion>?</message> + <short>Possible typo</short> + <example correction="Chock-full" type="incorrect"><marker>Chalk full</marker> of mobile content</example> + <example type="correct">Chock-full of mobile content</example> + </rule> + <rule id="EGG_YOKE" name="egg yoke (egg yolk)"> + <pattern> + <token>egg</token> + <token>yoke</token> + </pattern> + <message>Did you mean <suggestion>egg yolk</suggestion>?</message> + <short>Possible typo</short> + <example correction="egg yolk" type="incorrect">Chocolate mousse with <marker>egg yoke</marker></example> + <example type="correct">Chocolate mousse with egg yolk</example> + </rule> + <rule id="ET_ALL" name="et all (et al.)"> + <pattern> + <token>et</token> + <token>all</token> + </pattern> + <message>Did you mean <suggestion>et al.</suggestion> (=and others) or <suggestion>at all</suggestion>?</message> + <short>Possible typo</short> + <example correction="et al.|at all" type="incorrect">In the recent paper by Shakespeare <marker>et all</marker>, it is argued that envy is not unique to primates.</example> + <example type="correct">In the recent paper by Shakespeare <marker>et al.</marker>, it is argued that envy is not unique to primates.</example> + </rule> + <rule id="EYE_BROW" name="eye brow/lash/lid/sight/sore (eyebrow/eyelash/eyelid/eyesight/eyesore)"> + <pattern> + <token>eye</token> + <token inflected="yes" regexp="yes">brow|lash|sight|sore|lid</token> + </pattern> + <message>This word is usually spelt together: <suggestion>\1\2</suggestion>.</message> + <short>Possible typo</short> + <example correction="eyelids" type="incorrect">Calcium deposits on <marker>eye lids</marker></example> + <example type="correct">Calcium deposits on eyelids</example> + </rule> + <rule id="FOR_SELL" name="for sell (for sale)"> + <pattern> + <token>for</token> + <token>sell</token> + </pattern> + <message>Did you mean <suggestion>for sale</suggestion>?</message> + <short>Possible typo</short> + <example correction="for sale" type="incorrect">Current Michigan homes <marker>for sell</marker></example> + <example type="correct">Current Michigan homes for sale</example> + </rule> + <rulegroup id="FROM_FORM" name="from (form)"> + <rule> + <pattern> + <token>in</token> + <token>any</token> + <token>from</token> + </pattern> + <message>Did you mean <suggestion>in any form</suggestion>?</message> + <short>Possible typo</short> + <example correction="in any form" type="incorrect">Do not duplicate or redistribute <marker>in any from</marker>.</example> + <example type="correct">Do not duplicate or redistribute in any form.</example> + </rule> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token postag="DT"><exception>the</exception></token> + <token>from</token> + <token postag="SENT_END"></token> + </pattern> + <message>Did you mean <suggestion>form</suggestion>?</message> + <short>Possible typo</short> + <example correction="form" type="incorrect">Fill in this <marker>from</marker>.</example> + <example type="correct">Fill in this form.</example> + </rule> + <rule> + <pattern> + <token>the</token> + <token>from</token> + </pattern> + <message>Did you mean <suggestion>the form</suggestion>?</message> + <short>Possible typo</short> + <example correction="the form" type="incorrect">Fill in <marker>the from</marker> as shown below.</example> + <example type="correct">Fill in the form as shown below.</example> + </rule> + </rulegroup> + <rule id="THERE_EXITS" name="there exits (there exists)"> + <pattern mark_from="1"> + <token>there</token> + <token>exits</token> + </pattern> + <message>Did you mean <suggestion>exists</suggestion>?</message> + <short>Possible typo</short> + <example correction="exists" type="incorrect">There <marker>exits</marker> an α-evaluating homomorphism π.</example> + <example type="correct">Then there exists an α-evaluating homomorphism π.</example> + </rule> + <rule id="HE_THE" name="he (the)"> + <pattern> + <token postag="IN"><exception regexp="yes">as|while|before|until|ago|than|after</exception></token> + <token>he</token> + <token postag="NN.*" postag_regexp="yes"></token> + </pattern> + <message>Did you mean <suggestion>\1 the \3</suggestion>?</message> + <short>Possible typo</short> + <example correction="At the beginning" type="incorrect"><marker>At he beginning</marker>, I was afraid.</example> + <example type="correct">At the beginning, I was afraid.</example> + </rule> + <rule id="INSURE_THAT" name="insure that (ensure that)"> + <pattern mark_to="-1"> + <token>insure</token> + <token>that</token> + </pattern> + <message>Did you mean <suggestion>ensure </suggestion>(=make sure)? 'Insure' means 'pay money to insurance company'.</message> + <short>Possible typo</short> + <example type="incorrect">Please <marker>insure</marker> that you are registered with us.</example> + <example type="correct">Please insure your car against theft.</example> + </rule> + <rule id="IN_MASSE" name="in masse (en masse)"> + <pattern> + <token>in</token> + <token>masse</token> + </pattern> + <message>Did you mean <suggestion>en masse</suggestion>?</message> + <short>Possible typo</short> + <example correction="en masse" type="incorrect">HP Already Shipping Linux <marker>in Masse</marker></example> + <example type="correct">HP Already Shipping Linux En Masse</example> + </rule> + <rule id="IN_PARENTHESIS" name="in parenthesis (in parentheses)"> + <pattern> + <token>in</token> + <token>parenthesis</token> + </pattern> + <message>Did you mean <suggestion>in parentheses</suggestion>?</message> + <short>Possible typo</short> + <example correction="in parentheses" type="incorrect">This is indicated by the number not <marker>in parenthesis</marker>.</example> + <example type="correct">This is indicated by the number not in parentheses.</example> + </rule> + <rule id="IN_STEAD_OF" name="in stead of (instead of)"> + <pattern> + <token>in</token> + <token>stead</token> + <token>of</token> + </pattern> + <message>Did you mean <suggestion>\1\2 \3</suggestion>?</message> + <short>Possible typo</short> + <example correction="instead of" type="incorrect">Can my car really use water <marker>in stead of</marker> gas?</example> + <example type="correct">Can my car really use water instead of gas?</example> + </rule> + <rule id="IN_TACT" name="in tact (intact)"> + <pattern> + <token><exception scope="previous">lacking</exception>in</token> + <token>tact</token> + </pattern> + <message>Did you mean <suggestion>intact</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">Trendy T-shirts lacking in tact</example> + <example correction="Intact" type="incorrect">Outdoor Activities in Louisiana Remain <marker>In Tact</marker></example> + </rule> + <rule id="IN_VEIN" name="in vein (in vain)"> + <pattern> + <token>in</token> + <token>vein</token> + </pattern> + <message>Did you mean <suggestion>in vain</suggestion> (=unsuccessfully)?</message> + <short>Possible typo</short> + <example correction="in vain" type="incorrect">I have been looking <marker>in vein</marker> 30 plus years with no luck.</example> + <example type="correct">I have been looking in vain for 30 years.</example> + </rule> + <rule id="IT_SELF" name="it self (itself)"> + <pattern> + <token>it</token> + <token>self</token> + </pattern> + <message>Did you mean <suggestion>itself</suggestion>?</message> + <short>Possible typo</short> + <example correction="itself" type="incorrect">I believe that such advertisements indicate a clear statement about the issue <marker>it self</marker> and they clarify the main cause of the problem.</example> + <example type="correct">Was it self-defence?</example> + <example type="correct">I believe that such advertisements indicate a clear statement about the issue itself and they clarify the main cause of the problem.</example> + </rule> + <rulegroup id="KNOW_NOW" name="know (now)"> + <rule> + <pattern> + <token>know</token> + <token>and</token> + <token>then</token> + </pattern> + <message>Did you mean <suggestion>now and then</suggestion>?</message> + <short>Possible typo</short> + <example correction="now and then" type="incorrect">My mom used to make a hell of a burrito every <marker>know and then</marker>.</example> + <example type="correct">My mom used to make a hell of a burrito every now and then.</example> + </rule> + <rule> + <pattern> + <token>right</token> + <token>know</token> + </pattern> + <message>Did you mean <suggestion>right now</suggestion>?</message> + <short>Possible typo</short> + <example correction="right now" type="incorrect">Girls wanting to meet you <marker>right know</marker>!</example> + <example type="correct">Girls wanting to meet you right now!</example> + </rule> + <rule> + <pattern> + <token>from</token> + <token>know</token> + <token>on</token> + </pattern> + <message>Did you mean <suggestion>from now on</suggestion>?</message> + <short>Possible typo</short> + <example correction="From now on" type="incorrect"><marker>From know on</marker>, he is the "Big Kahuna."</example> + <example type="correct">From now on, he is the "Big Kahuna."</example> + </rule> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token regexp="yes"><exception scope="previous">t</exception>and|but|by|even|from|so</token> + <token>know</token> + <token postag="PRP"></token> + </pattern> + <message>Did you mean <suggestion>now</suggestion>?</message> + <short>Possible typo</short> + <example correction="now" type="incorrect">And <marker>know</marker> he is leaving.</example> + <example type="correct">I don't even know myself.</example> + <example type="correct">And now he is leaving.</example> + </rule> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token postag="MD"></token> + <token>know</token> + <token postag="VB"></token> + </pattern> + <message>Did you mean <suggestion>now</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">I can now say something more.</example> + <example correction="now" type="incorrect">I can <marker>know</marker> say something more.</example> + </rule> + </rulegroup> + <rule id="VE_GO_TO" name="I've go to (I've got to)"> + <pattern mark_from="1" mark_to="-1"> + <token>ve</token> + <token>go</token> + <token>to</token> + </pattern> + <message>Did you mean <suggestion>got</suggestion>?</message> + <short>Possible typo</short> + <example correction="got" type="incorrect">I've <marker>go</marker> to go.</example> + <example type="correct">I've got to go.</example> + </rule> + <rule id="FOR_ALONG_TIME" name="for along time (for a long time)"> + <pattern> + <token>for</token> + <token>along</token> + <token>time</token> + </pattern> + <message>Did you mean <suggestion>for a long time</suggestion>?</message> + <short>Possible typo</short> + <example correction="for a long time" type="incorrect">I have been interested in wicca <marker>for along time</marker>.</example> + <example type="correct">i have been interested in wicca for a long time.</example> + </rule> + <rulegroup id="FOR_AWHILE" name="awhile (a while)"> + <rule> + <pattern mark_from="1"> + <token postag="IN"></token> + <token>awhile</token> + </pattern> + <message>Did you mean <suggestion>a while</suggestion>?</message> + <short>Possible typo</short> + <example correction="a while" type="incorrect">I haven't posted in <marker>awhile</marker>.</example> + <example type="correct">I haven't posted in a while.</example> + </rule> + <rule> + <pattern mark_from="2"> + <token postag="IN"></token> + <token>quite</token> + <token>awhile</token> + </pattern> + <message>Did you mean <suggestion>a while</suggestion>?</message> + <short>Possible typo</short> + <example correction="a while" type="incorrect">I haven't posted in quite <marker>awhile</marker>.</example> + <example type="correct">I haven't posted in quite a while.</example> + </rule> + </rulegroup> + <rule id="FOR_ALL_INTENSIVE_PURPOSES" name="for all intensive purposes (for all intents and purposes)"> + <pattern> + <token>for</token> + <token>all</token> + <token>intensive</token> + <token>purposes</token> + </pattern> + <message>Did you mean <suggestion>\1 all intents and purposes</suggestion>?</message> + <short>Possible typo</short> + <example correction="for all intents and purposes" type="incorrect">Well, not all of it, but <marker>for all intensive purposes</marker>, I read it.</example> + <example type="correct">Well, not all of it, but for all intents and purposes, I read it.</example> + </rule> + <rule id="AWAY_FRO" name="away fro (away from)"> + <pattern> + <token>away</token> + <token>fro</token> + </pattern> + <message>Did you mean <suggestion>away from</suggestion>?</message> + <short>Possible typo</short> + <example correction="away from" type="incorrect">He is <marker>away fro</marker> the sea.</example> + <example type="correct">He is away from the sea.</example> + </rule> + <rule id="FRO_A_WHILE" name="fro a while (for a while)"> + <pattern mark_to="-2"> + <token>fro</token> + <token regexp="yes">a|an</token> + <token regexp="yes">while|weekend|month|year|hour|minute|second|week</token> + </pattern> + <message>Did you mean <suggestion>for</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">I went there for a weekend.</example> + <example correction="for" type="incorrect">I went there <marker>fro</marker> a weekend.</example> + </rule> + <rulegroup id="HOUR_OUR" name="half an our (half an hour)"> + <rule> + <pattern mark_from="2"> + <token>half</token> + <token>an</token> + <token>our</token> + </pattern> + <message>Did you mean <suggestion>hour</suggestion> (=60 minutes)?</message> + <short>Possible typo</short> + <example correction="hour" type="incorrect">It happened half an <marker>our</marker> ago.</example> + <example type="correct">It happened half an <marker>hour</marker> ago.</example> + </rule> + </rulegroup> + <rule id="ONE_IN_THE_SAME" name="one in the same (one and the same)"> + <pattern> + <token>one</token> + <token>in</token> + <token>the</token> + <token>same</token> + </pattern> + <message>Did you mean <suggestion>one and the same</suggestion>?</message> + <short>Possible typo</short> + <example correction="one and the same" type="incorrect">Our town is a place where neighbours and friends are <marker>one in the same</marker>.</example> + <example type="correct">Our town is a place where neighbours and friends are one and the same.</example> + </rule> + <rule id="PER_SE" name="per say (per se)"> + <pattern> + <token>per</token> + <token>say</token> + </pattern> + <message>Did you mean <suggestion>per se</suggestion> (=by itself, by themselves)?</message> + <short>Possible typo</short> + <example correction="per se" type="incorrect">Not a car lover <marker>per say</marker>…</example> + <example type="correct">Not a car lover per se…</example> + </rule> + <rule id="SNEAK_PEAK" name="sneak peak (sneak peek)"> + <pattern> + <token>sneak</token> + <token>peak</token> + </pattern> + <message>Did you mean <suggestion>\1 peek</suggestion> (=preview)?</message> + <short>Possible typo</short> + <example correction="sneak peek" type="incorrect">Yahoo! has released a <marker>sneak peak</marker> into Yahoo! BrowserPlus.</example> + <example type="correct">Yahoo! has released a sneak peek into Yahoo! BrowserPlus.</example> + </rule> + <rule id="SOME_WHAT_JJ" name="some what (somewhat)"> + <pattern> + <token>some</token> + <token>what</token> + </pattern> + <message>Did you mean <suggestion>\1\2</suggestion> (=slightly)?</message> + <short>Possible typo</short> + <example correction="Somewhat" type="incorrect"><marker>Some what</marker> disappointed</example> + <example type="correct">Somewhat disappointed</example> + </rule> + <rule id="STAND_ALONE_NN" name="stand alone (standalone)"> + <pattern mark_to="-1"> + <token>stand</token> + <token>alone</token> + <token postag="NN:.*|NNS|NN" postag_regexp="yes"></token> + </pattern> + <message>This world is usually written together in this context: <suggestion>\1\2</suggestion>.</message> + <short>Possible typo</short> + <example correction="standalone" type="incorrect">This is a <marker>stand alone</marker> computer.</example> + <example type="correct">I stand alone at the parking.</example> + </rule> + <rule id="TEEM_TEAM" name="football teem (football team)"> + <pattern> + <token regexp="yes">management|football|research|project|home|display|youth|cup|development|design|sales|rescue|cricket|production|care|action|hockey|rugby|league|campaign|inspection|support|soccer|mortar|test|specialist|negotiating|relay|buy-out|course|world|health|investigation|planning|school|treasury|inquiry|planting|service|styling|division|improvement|marketing|review|services|ward|policy|work|area|basketball|club|control|dream|hospital|insight|protection|sports|town|baseball|executive|touring|university|buyout</token> + <token>teem</token> + </pattern> + <message>Did you mean <suggestion>\1 team</suggestion>?</message> + <short>Possible typo</short> + <example correction="football team" type="incorrect">This is my favorite <marker>football teem</marker>.</example> + <example type="correct">The gardens teem with with squawking parrots.</example> + </rule> + <rule id="UNDER_WEAR" name="under wear (underwear)"> + <pattern> + <token>under</token> + <token>wear</token> + </pattern> + <message>Did you mean <suggestion>underwear</suggestion> (=underclothes)?</message> + <short>Possible typo</short> + <example correction="Underwear" type="incorrect">Designer's <marker>Under Wear</marker></example> + <example type="correct">Designer's Underwear</example> + </rule> + <rule id="WHERE_AS" name="where as/by (whereas/whereby)"> + <pattern> + <token>where</token> + <token regexp="yes">as|by|upon</token> + </pattern> + <message>Did you mean <suggestion>\1\2</suggestion>?</message> + <short>Possible typo</short> + <example correction="whereas" type="incorrect">The northern and urban areas of the state do not generally offer sweet tea in the most restaurants, <marker>where as</marker> it is a staple beverage for the southern part ...</example> + <example type="correct">The northern and urban areas of the state do not generally offer sweet tea in the most restaurants, whereas it is a staple beverage for the southern part ...</example> + </rule> + <rule id="WITCH_HAUNT" name="witch haunt (witch hunt)"> + <pattern> + <token>witch</token> + <token>haunt</token> + </pattern> + <message>Did you mean <suggestion>\1 hunt</suggestion> (=search for witches)?</message> + <short>Possible typo</short> + <example correction="witch hunt" type="incorrect">An anti-Polish <marker>witch haunt</marker></example> + <example type="correct">An anti-Polish witch hunt</example> + </rule> + <rule id="YOUR_S" name="your's (yours)"> + <pattern> + <token regexp="yes">your|hers|our|their</token> + <token>'</token> + <token>s</token> + </pattern> + <message>Did you mean <suggestion>\1</suggestion> or <suggestion>\1\3</suggestion>?</message> + <short>Possible typo</short> + <example correction="your|yours" type="incorrect">It's not mine, it's <marker>your's</marker>.</example> + <example type="correct">It's not mine, it's yours.</example> + </rule> + <rule id="YOURS_APOSTROPHE" name="Possessive pronoun with apostrophe"> + <pattern mark_from="1"> + <token postag="SENT_START" postag_regexp="yes" skip="-1"><exception scope="next">'</exception></token> + <token postag="PRP$" postag_regexp="yes" regexp="yes">.*s</token> + <token>'</token> + </pattern> + <message>An apostrophe is never used to form possessive case pronouns. Did you mean: <suggestion>\2</suggestion>?</message> + <short>Possible typo</short> + <example correction="yours" type="incorrect">This house is <marker>yours'</marker>.</example> + <example type="correct">My heart is hers.</example> + </rule> + <rulegroup id="HERE_HEAR" name="here (hear)"> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token>can</token> + <token>here</token> + <token postag="PRP|DT" postag_regexp="yes"></token> + </pattern> + <message>Did you mean <suggestion>hear</suggestion>?</message> + <short>Possible typo</short> + <example correction="hear" type="incorrect">I can <marker>here</marker> you!</example> + <example type="correct">I can hear you!</example> + </rule> + <rule> + <pattern mark_from="2" mark_to="-1"> + <token>can</token> + <token postag="RB"></token> + <token>here</token> + <token postag="PRP|DT" postag_regexp="yes"></token> + </pattern> + <message>Did you mean <suggestion>hear</suggestion>?</message> + <short>Possible typo</short> + <example correction="hear" type="incorrect">I can almost <marker>here</marker> you crying.</example> + <example type="correct">I can almost hear you crying.</example> + </rule> + </rulegroup> + <rule id="HEAR_HERE" name="hear (here)"> + <pattern mark_to="-1"> + <token postag="SENT_START"></token> + <token>hear</token> + <token>is</token> + </pattern> + <message>Did you mean <suggestion>here</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">Here is an entertainment fit for giants.</example> + <example correction="Here" type="incorrect"><marker>Hear</marker> is an entertainment fit for giants.</example> + </rule> + <rule id="TOT_HE" name="tot he (to the)"> + <pattern> + <token>tot</token> + <token>he</token> + </pattern> + <message>Did you mean <suggestion>to the</suggestion>?</message> + <short>Possible typo</short> + <example correction="to the" type="incorrect">The Hitchhiker's Guide <marker>tot he</marker> Galaxy</example> + <example type="correct">The Hitchhiker's Guide to the Galaxy</example> + </rule> + <rule id="WITH_OUT" name="with out (without)"> + <pattern> + <token>with</token> + <token>out</token> + </pattern> + <message>This word is usually written together. Did you mean <suggestion>without</suggestion>?</message> + <short>Possible typo</short> + <example correction="without" type="incorrect">We must take the bus before it leaves <marker>with out</marker> us.</example> + <example type="correct">We must take the bus before it leaves without us.</example> + </rule> + <rulegroup id="IT_IS_NO" name="It is no (It is not/It is now)"> + <rule> + <pattern mark_from="2" mark_to="-2"> + <token>it</token> + <token regexp="yes">is|was</token> + <token>no</token> + <token postag="JJ.*" postag_regexp="yes"><exception regexp="yes">more|less|longer</exception></token> + <token><exception postag="NN.*" postag_regexp="yes"></exception></token> + </pattern> + <message>Did you mean <suggestion>not</suggestion> or <suggestion>now</suggestion>?</message> + <short>Possible typo</short> + <example correction="not|now" type="incorrect">It is <marker>no</marker> possible.</example> + <example type="correct">It is no mystical intuition.</example> + <example type="correct">It is not possible.</example> + <example type="correct">It is no surprise.</example> + <example type="correct">It is no more a united nation than the Equator.</example> + </rule> + <rule> + <pattern mark_from="3" mark_to="-1"> + <token>it</token> + <token>'</token> + <token>s</token> + <token>no</token> + <token postag="JJ.*" postag_regexp="yes"></token> + </pattern> + <message>Did you mean <suggestion>not</suggestion> or <suggestion>now</suggestion>?</message> + <short>Possible typo</short> + <example correction="not|now" type="incorrect">It's <marker>no</marker> possible.</example> + <example type="correct">It isn't possible.</example> + <example type="correct">It is no surprise.</example> + </rule> + </rulegroup> + <rule id="ALLOT_OF" name="allot of (a lot of)"> + <pattern> + <token>allot</token> + <token>of</token> + </pattern> + <message>Did you mean <suggestion>a lot of</suggestion> (=plenty)?</message> + <short>Possible typo</short> + <example type="correct">I've got a lot of questions to you.</example> + <example correction="a lot of" type="incorrect">I've got <marker>allot of</marker> questions to you.</example> + </rule> + <rule id="I_HERD" name="I herd (heard)"> + <pattern mark_from="1"> + <token regexp="yes">I|you|he|she|it|we|they</token> + <token>herd</token> + </pattern> + <message>Did you mean <suggestion>heard</suggestion> (past tense of 'hear')?</message> + <short>Possible typo</short> + <example type="correct">I <marker>heard</marker> of a new song by Madonna.</example> + <example type="incorrect">I <marker>herd</marker> of a new song by Madonna.</example> + </rule> + <rulegroup id="LOOSE_LOSE" name="loose (lose)"> + <rule> + <pattern mark_to="-2"> + <token>loose</token> + <token postag="DT"></token> + <token regexp="yes">key|connection|password</token> + </pattern> + <message>Did you mean <suggestion>lose</suggestion> (= miss, waste, suffer the loss etc.)?</message> + <short>Possible typo</short> + <example type="incorrect">I always <marker>loose</marker> the password.</example> + <example type="correct">I always <marker>lose</marker> the password.</example> + </rule> + <rule> + <pattern mark_to="-1"> + <token>loose</token> + <token postag="PRP$"></token> + </pattern> + <message>Did you mean <suggestion>lose</suggestion> (= miss, waste, suffer the loss etc.)?</message> + <short>Possible typo</short> + <example correction="lose" type="incorrect">Who do I contact if I <marker>loose</marker> my passport?</example> + <example type="correct">Who do I contact if I lose my passport?</example> + </rule> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token>to</token> + <token>loose</token> + <token negate_pos="yes" postag="PRP$"></token> + </pattern> + <message>Did you mean <suggestion>lose</suggestion> (= miss, waste, suffer the loss etc.)?</message> + <short>Possible typo</short> + <example correction="lose" type="incorrect">You don't want to <marker>loose</marker> this job, do you?</example> + <example type="correct">You don't want to lose this job, do you?</example> + </rule> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token postag="MD"></token> + <token>loose</token> + <token negate_pos="yes" postag="PRP$"></token> + </pattern> + <message>Did you mean <suggestion>lose</suggestion> (= miss, waste, suffer the loss etc.)?</message> + <short>Possible typo</short> + <example correction="lose" type="incorrect">You can <marker>loose</marker> so much and gain so little.</example> + <example type="correct">You can <marker>lose</marker> so much and gain so little.</example> + </rule> + </rulegroup> + <rulegroup id="LOSE_LOOSE" name="lose (loose)"> + <rule> + <pattern> + <token>on</token> + <token>the</token> + <token>lose</token> + </pattern> + <message>Did you mean <suggestion>on the loose</suggestion> (=at large, free)?</message> + <short>Possible typo</short> + <example correction="on the loose" type="incorrect">Spammer <marker>on the lose</marker>?</example> + <example type="correct">Spammer on the loose?</example> + </rule> + </rulegroup> + <rulegroup id="LOSE_LOSS" name="at a lose (at a loss)"> + <rule> + <pattern mark_from="0"> + <token>at</token> + <token>a</token> + <token>lose</token> + </pattern> + <message>Did you mean <suggestion>at a loss</suggestion> (=puzzled, without any idea)?</message> + <short>Possible typo</short> + <example correction="at a loss" type="incorrect">Feeling <marker>at a lose</marker> and frustrated.</example> + <example type="correct">Feeling at a loss and frustrated.</example> + </rule> + </rulegroup> + <rulegroup id="GIVE_ADVISE" name="give/any/of advise (advice)"> + <rule> + <pattern mark_from="2"> + <token regexp="yes">give|gave|given</token> + <token postag="PRP"></token> + <token>advise</token> + </pattern> + <message>Did you mean <suggestion>advice</suggestion> (a noun)?</message> + <short>Possible typo</short> + <example type="correct">Please give me advice, I don't know what to do.</example> + <example type="incorrect">Please give me <marker>advise</marker>, I don't know what to do.</example> + </rule> + <rule> + <pattern mark_from="1"> + <token postag="DT"></token> + <token>advise</token> + </pattern> + <message>Did you mean <suggestion>advice</suggestion> (a noun)?</message> + <short>Possible typo</short> + <example correction="advice" type="incorrect">Any <marker>advise</marker> is welcome!</example> + <example type="correct">Any advice is welcome.</example> + </rule> + <rule> + <pattern mark_from="1"> + <token regexp="yes">of|from</token> + <token>advise</token> + </pattern> + <message>Did you mean <suggestion>advice</suggestion> (a noun)?</message> + <short>Possible typo</short> + <example correction="advice" type="incorrect">What was the best piece of <marker>advise</marker> that you ever got?</example> + <example type="correct">What was the best piece of advice that you ever got?</example> + </rule> + <rule> + <pattern mark_from="1"> + <token postag="MD"></token> + <token>advice</token> + </pattern> + <message>Did you mean <suggestion>advise</suggestion> (a verb)?</message> + <short>Possible typo</short> + <example correction="advise" type="incorrect">I must <marker>advice</marker> you to go.</example> + <example type="correct">I cannot advise you anything.</example> + </rule> + </rulegroup> + <rule id="I_WE_ADVICE" name="I/we advice (advise)"> + <pattern mark_from="1"> + <token regexp="yes">I|we</token> + <token>advice</token> + </pattern> + <message>Did you mean <suggestion>advise</suggestion> (a verb)?</message> + <short>Possible typo</short> + <example type="correct">We <marker>advise</marker> you to come by public transport</example> + <example correction="advise" type="incorrect">We <marker>advice</marker> you to come by public transport.</example> + </rule> + <rulegroup id="ALL_READY" name="all ready (already)"> + <rule> + <pattern mark_from="2"> + <token postag="PRP"></token> + <token regexp="yes">have|has|had</token> + <token>all</token> + <token>ready</token> + </pattern> + <message>Did you mean <suggestion>already</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">I have already bought it.</example> + <example correction="already" type="incorrect">I have <marker>all ready</marker> bought it.</example> + </rule> + <rule> + <pattern mark_from="1"> + <!-- contraction --> + <token regexp="yes">ve|s</token> + <token>all</token> + <token>ready</token> + </pattern> + <message>Did you mean <suggestion>already</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">I've already bought it.</example> + <example correction="already" type="incorrect">I've <marker>all ready</marker> bought it.</example> + </rule> + </rulegroup> + <rule id="ALL_MOST" name="all most (almost)"> + <pattern mark_to="-1"> + <token>all</token> + <token>most</token> + <token postag="PDT"></token> + </pattern> + <message>Did you mean <suggestion>almost</suggestion>?</message> + <short>Possible typo</short> + <example correction="Almost" type="incorrect"><marker>All most</marker> all the patents were rejected...</example> + <example type="correct"><marker>Almost</marker> all the patents were rejected...</example> + </rule> + <!-- TODO: make more general --> + <rule id="ANALYSIS_IF" name="analysis if (of)"> + <pattern mark_from="2"> + <token postag="DT"></token> + <token regexp="yes">analysis|kind</token> + <token>if</token> + </pattern> + <message>Did you mean <suggestion>of</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">An Analysis <marker>of</marker> Rock Music</example> + <example type="incorrect">An Analysis <marker>if</marker> Rock Music</example> + <example type="incorrect">That's the kind <marker>if</marker> blue I like.</example> + <example type="correct">This is the kind of journalism that I like!</example> + </rule> + <rulegroup id="SHELL_WE" name="shell (shall) we"> + <rule> + <pattern case_sensitive="yes" mark_from="1" mark_to="-2"> + <token postag="SENT_START"></token> + <token>Shell</token> + <token regexp="yes">we|I</token> + <token postag="VB"></token> + </pattern> + <message>Did you mean <suggestion>Shall</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">Shall we dance?</example> + <example type="incorrect"><marker>Shell</marker> we dance?</example> + </rule> + <rule> + <pattern case_sensitive="yes" mark_from="2" mark_to="-1"> + <token postag="SENT_START"></token> + <token regexp="yes">We|I</token> + <token>shell</token> + <token postag="VB"></token> + </pattern> + <message>Did you mean <suggestion>shall</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">We shall overcome.</example> + <example type="incorrect">We <marker>shell</marker> overcome.</example> + </rule> + </rulegroup> + <rule id="BED_ENGLISH" name="bed/bat (bad) English/..."> + <pattern mark_to="-1"> + <token regexp="yes">bed|bat</token> + <token regexp="yes">English|attitude</token> + </pattern> + <message>Did you mean <suggestion>bad</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">Sorry for my <marker>bad</marker> English.</example> + <example type="incorrect">Sorry for my <marker>bed</marker> English.</example> + </rule> + <rule id="PIGEON_ENGLISH" name="pigeon (pidgin) English/..."> + <pattern mark_to="-1"> + <token>pigeon</token> + <token regexp="yes">English|French|Spanish|Chinese|Russian</token> + </pattern> + <message>Did you mean <suggestion>pidgin</suggestion> (=simplified language)?</message> + <short>Possible typo</short> + <example type="correct"><marker>Pidgin</marker> English is spoken widely across Nigeria.</example> + <example type="incorrect"><marker>Pigeon</marker> English is spoken widely across Nigeria.</example> + </rule> + <rule id="TELEPHONE_POLL" name="telephone/... poll (pole)"> + <pattern mark_from="1"> + <token regexp="yes">telephone|telegraph|totem</token> + <token>poll</token> + </pattern> + <message>Did you mean <suggestion>pole</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">As sort of life crises go, this is low on the totem <marker>pole</marker>.</example> + <example type="incorrect">As sort of life crises go, this is low on the totem <marker>poll</marker>.</example> + </rule> + <rule id="OPINION_POLE" name="opinion/... pole (poll)"> + <pattern mark_from="1"> + <token regexp="yes">opinion|government|election|exit</token> + <token>pole</token> + </pattern> + <message>Did you mean <suggestion>poll</suggestion>?</message> + <short>Possible typo</short> + <example type="incorrect">Is it possible to add an opinion <marker>pole</marker> to my Myspace page?</example> + <example type="correct">Is it possible to add an opinion <marker>poll</marker> to my Myspace page?</example> + </rule> + <rulegroup id="YOUR" name="your (you're)"> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token><exception postag="IN|VB.*" postag_regexp="yes"></exception><exception>t</exception></token> + <token>your</token> + <token postag="VBG"></token> + </pattern> + <message>Did you mean <suggestion>you're</suggestion> or <suggestion>you are</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">It wasn't your painting.</example> + <example type="correct">Let's see if <marker>you're</marker> using multiple search servers.</example> + <example type="correct">Let's see if <marker>you are</marker> using multiple search servers.</example> + <example type="incorrect">Let's see if <marker>your</marker> using multiple search servers.</example> + </rule> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token>if</token> + <token>your</token> + <token>a</token> + </pattern> + <message>Did you mean <suggestion>you're</suggestion> or <suggestion>you are</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">Let's see if <marker>you're</marker> a developer.</example> + <example type="incorrect">Let's see if <marker>your</marker> a developer.</example> + </rule> + </rulegroup> + <rule id="BOTTLE_NECK" name="bottle neck (bottleneck)"> + <pattern> + <token>bottle</token> + <token>neck</token> + </pattern> + <message>Did you mean <suggestion>bottleneck</suggestion>? This word sequence is usually spelled together.</message> + <short>Possible typo</short> + <example type="correct">Finding the <marker>bottleneck</marker></example> + <example type="incorrect">Finding the <marker>bottle neck</marker></example> + </rule> + <rule id="FIRE_ARM" name="fire arm (firearm)"> + <pattern> + <token>fire</token> + <token>arm</token> + </pattern> + <message>Did you mean <suggestion>\1\2</suggestion>? This word sequence is usually spelled together.</message> + <short>Possible typo</short> + <example type="correct">The term gun is often used as a synonym for firearm</example> + <example type="incorrect">The term gun is often used as a synonym for <marker>fire arm</marker></example> + </rule> + <rule id="NEWS_PAPER" name="news paper (newspaper)"> + <pattern> + <token>news</token> + <token>paper</token> + </pattern> + <message>Did you mean <suggestion>newspaper</suggestion>? This word sequence is usually spelled together.</message> + <short>Possible typo</short> + <example type="correct">Subscribing the <marker>newspaper</marker></example> + <example correction="newspaper" type="incorrect">Subscribing the <marker>news paper</marker></example> + </rule> + <rule id="AN_OTHER" name="an other (another)"> + <pattern> + <token>an</token> + <token>other</token> + </pattern> + <message>Did you mean <suggestion>another</suggestion>? This word sequence is usually spelled together.</message> + <short>Possible typo</short> + <example type="correct">Yet Another Resource List</example> + <example correction="Another" type="incorrect">Yet <marker>An other</marker> Resource List</example> + </rule> + <rulegroup id="MOTHER-IN-LOW" name="mother-in-low (mother-in-law)"> + <rule> + <pattern> + <token regexp="yes">(mother|sister|brother|father|relative|son)s?-in-low</token> + </pattern> + <message>You probably meant: <suggestion><match no="1" regexp_match="(.*)-in-low" regexp_replace="$1-in-law"></match></suggestion></message> + <short>Possible typo</short> + <example type="correct">This is her <marker>mother-in-law</marker>.</example> + <example correction="mother-in-law" type="incorrect">This is her <marker>mother-in-low</marker>.</example> + </rule> + <rule> + <pattern> + <token regexp="yes">(mother|sister|brother|father|son|relative)s?</token> + <token>in</token> + <token>low</token> + </pattern> + <message>Possible typos. This word is usually spelled with hyphens: <suggestion>\1-\2-law</suggestion>.</message> + <short>Possible typo</short> + <example type="correct">This is her <marker>mother-in-law</marker>.</example> + <example correction="mother-in-law" type="incorrect">This is her <marker>mother in low</marker>.</example> + </rule> + </rulegroup> + <rule id="IN_THE_PASSED" name="in the passed (in the past)"> + <pattern> + <token>in</token> + <token>the</token> + <token>passed</token> + </pattern> + <message>Did you mean <suggestion>in the past</suggestion>?</message> + <short>Possible typo</short> + <example correction="in the past" type="incorrect">We succeeded <marker>in the passed</marker>.</example> + <example type="correct">In the past, we had a number of successes.</example> + </rule> + <rule id="SENT_START_THEM" name="'Them (Then)' at sentence start"> + <pattern mark_from="1"> + <token postag="SENT_START"></token> + <token regexp="yes">Them|Than</token> + </pattern> + <message>Did you mean <suggestion>Then</suggestion>?</message> + <short>Possible typo</short> + <example type="correct"><marker>Then</marker> it became clear.</example> + <example type="correct">And <marker>then</marker> it became clear.</example> + <example type="incorrect"><marker>Them</marker> it became clear.</example> + <example type="incorrect"><marker>Than</marker> it became clear.</example> + </rule> + <rule id="TOO_TO" name="too go (to go)"> + <pattern> + <token>too</token> + <token postag="VB"><exception postag="JJ|RB" postag_regexp="yes"></exception></token> + </pattern> + <message>Did you mean <suggestion>to \2</suggestion>?</message> + <short>Possible typo</short> + <example correction="to go" type="incorrect">I want <marker>too go</marker> abroad.</example> + <example type="correct">I want to go abroad.</example> + <example type="correct">He succeeded almost too well.</example> + <example type="correct">It is too narrow.</example> + </rule> + <rulegroup id="TO_TOO" name="to/two (too) late/soon/much"> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token regexp="yes">much|is|was|be|were|are|been|s|re</token> + <token regexp="yes">to|two</token> + <token regexp="yes">late|easy</token> + </pattern> + <message>Did you mean <suggestion>too</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">It was <marker>too</marker> late.</example> + <example type="correct">It was much <marker>too</marker> late.</example> + <example type="incorrect">It was <marker>to</marker> late.</example> + <example type="incorrect">It was much <marker>to</marker> late.</example> + </rule> + <rule> + <pattern mark_from="1" mark_to="-2"> + <token regexp="yes">comes|came|much|is|was|were|are|been|s|re</token> + <token regexp="yes">to|two</token> + <token>soon</token> + <token><exception postag="VB"></exception></token> + <!-- token postag="VBP" negate_pos="yes"/ --> + </pattern> + <message>Did you mean <suggestion>too</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">The plan is <marker>to</marker> soon launch a new plane.</example> + <example type="correct">His idea came much <marker>too</marker> soon to be successful.</example> + <example type="correct">It is <marker>too</marker> soon to move the entire industry.</example> + <example type="incorrect">His idea came much <marker>to</marker> soon to be successful.</example> + <example type="incorrect">It is <marker>to</marker> soon to move the entire industry.</example> + </rule> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token negate="yes">access</token> + <token regexp="yes">to|two</token> + <token regexp="yes">much|few</token> + </pattern> + <message>Did you mean <suggestion>too</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">Because <marker>too</marker> much snow was on it.</example> + <example type="correct">the password provides access <marker>to</marker> much more data.</example> + <example correction="too" type="incorrect">Because <marker>to</marker> much snow was on it.</example> + </rule> + <rule> + <pattern mark_to="-1"> + <token>two</token> + <token>many</token> + </pattern> + <message>Did you mean <suggestion>too</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">But I see the problem of <marker>too</marker> many files.</example> + <example correction="too" type="incorrect">But I see the problem of <marker>two</marker> many files.</example> + </rule> + <rule> + <pattern mark_from="1" mark_to="-2"> + <token regexp="yes">is|was|be|were|are|been|s|re</token> + <token>to</token> + <token postag="JJ?" postag_regexp="yes"></token> + <token postag="SENT_END"></token> + </pattern> + <message>Did you mean <suggestion>too</suggestion>?</message> + <short>Possible typo</short> + <example correction="too" type="incorrect">It's <marker>to</marker> early.</example> + <example type="correct">It's too early.</example> + </rule> + <rule> + <pattern mark_from="1" mark_to="-3"> + <token regexp="yes">is|was|be|were|are|been|s|re</token> + <token>to</token> + <token postag="JJ?" postag_regexp="yes"></token> + <token>to</token> + <token postag="VB"></token> + </pattern> + <message>Did you mean <suggestion>too</suggestion>?</message> + <short>Possible typo</short> + <example correction="too" type="incorrect">It's <marker>to</marker> good to be true.</example> + <example type="correct">It's too good to be true.</example> + </rule> + </rulegroup> + <rule id="THINK_YOU_A" name="think you a/an (are)"> + <pattern mark_from="2"> + <token>think</token> + <token>you</token> + <token regexp="yes">a|an</token> + </pattern> + <message>Did you mean <suggestion>are</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">Some would think you <marker>are</marker> a fortunate man.</example> + <example correction="are" type="incorrect">Some would think you <marker>a</marker> fortunate man.</example> + </rule> + <rulegroup id="SOME_EXTEND" name="some/certain extend (extent)"> + <rule> + <pattern mark_from="1"> + <token regexp="yes">some|certain</token> + <token>extend</token> + </pattern> + <message>Did you mean <suggestion>extent</suggestion> ("extent" is a noun, "extend" is a verb)?</message> + <short>Possible typo</short> + <example type="correct">Yes it is, to a certain <marker>extent</marker>.</example> + <example correction="extent" type="incorrect">Yes it is, to a certain <marker>extend</marker>.</example> + </rule> + <rule> + <pattern mark_from="2"> + <token>to</token> + <token>the</token> + <token>extend</token> + </pattern> + <message>Did you mean <suggestion>extent</suggestion> ("extent" is a noun, "extend" is a verb)?</message> + <short>Possible typo</short> + <example type="correct">To the <marker>extent</marker> permitted by law</example> + <example correction="extent" type="incorrect">To the <marker>extend</marker> permitted by law</example> + </rule> + </rulegroup> + <rule id="IS_WERE" name="is were (where)"> + <pattern mark_from="1"> + <token>is</token> + <token>were</token> + </pattern> + <message>Did you mean <suggestion>where</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">Now, this is <marker>where</marker> my ignorance sets in.</example> + <example correction="where" type="incorrect">Now, this is <marker>were</marker> my ignorance sets in.</example> + </rule> + <rule id="ONE_ORE" name="one ore (or)"> + <pattern mark_from="1"> + <token postag="CD"></token> + <token>ore</token> + </pattern> + <message>Did you mean <suggestion>or</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">Type in one <marker>or</marker> more words.</example> + <example correction="or" type="incorrect">Type in one <marker>ore</marker> more words.</example> + </rule> + <rule id="THE_ONLY_ON" name="the only on (one)"> + <pattern mark_from="2"> + <token>the</token> + <token>only</token> + <token>on</token> + </pattern> + <message>Did you mean <suggestion>one</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">The trash folder is the only <marker>one</marker> for me that works.</example> + <example correction="one" type="incorrect">The trash folder is the only <marker>on</marker> for me that works.</example> + </rule> + <rule id="THEIR_IS" name="their (there) is/are"> + <pattern mark_to="-1"> + <token>their</token> + <token regexp="yes">is|are|a</token> + </pattern> + <message>Did you mean <suggestion>there</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">He noticed that <marker>there</marker> is a new test.</example> + <example correction="there" type="incorrect">He noticed that <marker>their</marker> is a new test.</example> + </rule> + <rule id="I_A" name="I a/an (I am)"> + <!--added exception for: 'Am I an annoyance' --> + <pattern mark_from="1"> + <token><exception scope="previous">am</exception>I</token> + <token regexp="yes">a|an</token> + </pattern> + <message>Did you mean <suggestion>am</suggestion> (first person of "to be")?</message> + <short>Possible typo</short> + <example type="correct">I <marker>am</marker> not sure.</example> + <example type="correct">Am I An Atheist Or An Agnostic?</example> + <example correction="am" type="incorrect">I <marker>a</marker> not sure.</example> + </rule> + <rule id="I_NEW" name="I/he/we new (knew)"> + <!-- not you because of: we need to buy you new shoes --> + <pattern mark_from="1"> + <token regexp="yes">I|he|we</token> + <token>new</token> + </pattern> + <message>Did you mean <suggestion>knew</suggestion> (past of "to know")?</message> + <short>Possible typo</short> + <example type="correct">Ah, I <marker>knew</marker> you would say that.</example> + <example correction="knew" type="incorrect">Ah, I <marker>new</marker> you would say that.</example> + </rule> + <rule id="PLEASE_NOT_THAT" name="please not (note) that"> + <pattern mark_from="1" mark_to="-1"> + <token>please</token> + <token>not</token> + <token>that</token> + </pattern> + <message>Did you mean <suggestion>note</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">Please <marker>note</marker> that saying "Open Source" does not mean very much.</example> + <example correction="note" type="incorrect">Please <marker>not</marker> that saying "Open Source" does not mean very much.</example> + </rule> + <rule id="NUT_NOT" name="nut (not)"> + <pattern mark_to="-1"> + <token>nut</token> + <token postag="(RB|JJ|NN|NN:.*)" postag_regexp="yes"><exception inflected="yes" regexp="yes">case|tree|job|butter|mixture|flour|bread|oil|shell|cracker|allergy|cake</exception></token> + </pattern> + <message>Did you mean <suggestion>not</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">I'm <marker>not</marker> sure.</example> + <example type="correct">I love nut oil!</example> + <example correction="not" type="incorrect">I'm <marker>nut</marker> sure.</example> + </rule> + <rule id="AND_SO_ONE" name="and so one (on)"> + <pattern> + <token>and</token> + <token>so</token> + <token>one</token> + </pattern> + <message>Did you mean <suggestion>and so on</suggestion> (="etc.")?</message> + <short>Possible typo</short> + <example type="correct">We think it helps finding bottlenecks <marker>and so on</marker>.</example> + <example correction="and so on" type="incorrect">We think it helps finding bottlenecks <marker>and so one</marker>.</example> + </rule> + <rule id="THROUGH_AWAY" name="through (throw) away"> + <pattern mark_to="-1"> + <token>through</token> + <token>away</token> + </pattern> + <message>Did you mean <suggestion>throw</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">Or we just <marker>throw</marker> away all bugs.</example> + <example correction="throw" type="incorrect">Or we just <marker>through</marker> away all bugs.</example> + </rule> + <rule id="OR_WAY_IT" name="or way (was) it"> + <pattern mark_from="1" mark_to="-1"> + <token>or</token> + <token>way</token> + <token regexp="yes">(it|that|this)</token> + </pattern> + <message>Did you mean <suggestion>was</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">Or <marker>was</marker> that a very recent change in Qt?</example> + <example correction="was" type="incorrect">Or <marker>way</marker> that a very recent change in Qt?</example> + </rule> + <rule id="DT_RESPONDS" name="the/a responds (response)"> + <pattern mark_from="1"> + <token postag="DT"></token> + <token>responds</token> + </pattern> + <message>Did you mean <suggestion>response</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">Thanks for the <marker>response</marker>.</example> + <example correction="response" type="incorrect">Thanks for the <marker>responds</marker>.</example> + </rule> + <rule id="THINK_OFF" name="think/know off (of)"> + <pattern mark_from="1"> + <token regexp="yes">(think|know|thought|thinking)</token> + <token>off</token> + </pattern> + <message>Did you mean <suggestion>of</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">It's the only part of KDE I know <marker>of</marker> that uses automasking.</example> + <example correction="of" type="incorrect">It's the only part of KDE I know <marker>off</marker> that uses automasking.</example> + </rule> + <rulegroup id="NOT_US1" name="not us (use)"> + <rule> + <pattern mark_from="1"> + <token>not</token> + <token>us</token> + </pattern> + <message>Did you mean <suggestion>use</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">Please do not <marker>use</marker> dispose.</example> + <example correction="use" type="incorrect">Please do not <marker>us</marker> dispose.</example> + </rule> + <rule> + <pattern mark_from="2"> + <token>'</token> + <token>t</token> + <token>us</token> + </pattern> + <message>Did you mean <suggestion>use</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">Please don't <marker>use</marker> dispose.</example> + <example correction="use" type="incorrect">Please don't <marker>us</marker> dispose.</example> + </rule> + </rulegroup> + <rule id="YOU_THING" name="I/you/... thing (think)"> + <pattern mark_from="1"> + <token regexp="yes">I|you|he|she|they|we</token> + <token regexp="yes">thing|things</token> + </pattern> + <message>Did you mean <suggestion>think</suggestion> or <suggestion>thinks</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">I <marker>think</marker> that's a good idea.</example> + <example correction="think|thinks" type="incorrect">I <marker>thing</marker> that's a good idea.</example> + </rule> + <!--FIXME: this is a very crude rule, should be refined.--> + <rulegroup id="WERE_VBB" name="were (where/we)"> + <rule> + <pattern mark_from="2" mark_to="-1"> + <token><exception postag="CC"></exception></token> + <token><exception postag="WP|NNS|WRB" postag_regexp="yes"></exception><exception regexp="yes">there|they|we|you</exception></token> + <token>were</token> + <token postag="VB|VBP|PRP" postag_regexp="yes"><exception postag="JJ|VBN|IN|PRP\$" postag_regexp="yes"></exception><exception regexp="yes">there|they|we|you</exception></token> + </pattern> + <message>Did you mean <suggestion>where</suggestion> or <suggestion>we</suggestion>?</message> + <short>Possible typo</short> + <example type="correct"><marker>We</marker> are in the process of implementing this.</example> + <example type="correct">These relations were long marked by conflict.</example> + <example type="incorrect">They went <marker>were</marker> he wanted.</example> + <example type="correct">Black peppercorns were found lodged in the nostrils...</example> + <example type="correct">There were stage productions...</example> + <example type="correct">...and both the hedgehogs were out of sight.</example> + </rule> + <rule> + <pattern mark_to="-1"> + <token postag="SENT_START"></token> + <token>were</token> + <token postag="VB|VBP" postag_regexp="yes"><exception postag="JJ|VBN" postag_regexp="yes"></exception><exception regexp="yes">there|they|we|you</exception></token> + </pattern> + <message>Did you mean <suggestion>where</suggestion> or <suggestion>we</suggestion>?</message> + <short>Possible typo</short> + <example type="correct"><marker>We</marker> are in the process of implementing this.</example> + <example type="incorrect"><marker>Were</marker> are in the process of implementing this.</example> + <example type="correct">These relations were long marked by conflict.</example> + <example type="correct">Black peppercorns were found lodged in the nostrils...</example> + <example type="correct">There were stage productions...</example> + </rule> + </rulegroup> + <rule id="VBZ_VBD" name="it (is)"> + <pattern mark_to="-1"> + <token>is</token> + <token regexp="yes">was|wasn</token> + </pattern> + <message>Did you mean <suggestion>it</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">...which <marker>it</marker> wasn't the last day.</example> + <example type="correct">...which <marker>it</marker> was the last day.</example> + <example type="incorrect">...which <marker>is</marker> wasn't the last day.</example> + <example type="incorrect">...which <marker>is</marker> was not the last day.</example> + </rule> + <rule id="FORE_DPS" name="fore (for)"> + <pattern mark_to="-1"> + <token>fore</token> + <token postag="PRP$"></token> + </pattern> + <message>Did you mean <suggestion>for</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">Thanks again <marker>for</marker> your help.</example> + <example type="incorrect">Thanks again <marker>fore</marker> your help.</example> + </rule> + <!-- TODO + <rule id="ADJ_THAT" name="that/than"> + <pattern mark_from="1"><token postag="(JJR|JJ)" postag_regexp="yes"> <token>that</token></pattern> + <message>Did you mean <em>than</em>?</message> + <example type="correct">I am not wiser <em>than</em> you.</example> + <example type="incorrect">I am not wiser <em>that</em> you.</example> + </rule> + --> + <rule id="LESS_MORE_THEN" name="less/more ... then (than)"> + <pattern mark_from="2"> + <token regexp="yes">(less|more)</token> + <token postag="(JJ|NN|NN:.*|NNS)" postag_regexp="yes"></token> + <token>then</token> + </pattern> + <message>Did you mean <suggestion>than</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">It's less controversial <marker>than</marker> one would think.</example> + <example type="incorrect">It's less controversial <marker>then</marker> one would think.</example> + </rule> + <rule id="COMMA_THAN" name="..., than (then)"> + <pattern mark_from="1"> + <token><exception postag="JJR" postag_regexp="yes" scope="previous"></exception>,</token> + <token>than</token> + </pattern> + <message>Did you mean <suggestion>then</suggestion>?</message> + <short>Possible typo</short> + <example correction="then" type="incorrect">If we want to eat, <marker>than</marker> we need to get some money.</example> + <example type="correct">If we want to eat, <marker>then</marker> we need to get some money.</example> + </rule> + <rule id="FROM_THAN_ON" name="from than on (from then on)"> + <pattern> + <token>from</token> + <token>than</token> + <token>on</token> + </pattern> + <message>Did you mean <suggestion>from then on</suggestion>?</message> + <short>Possible typo</short> + <example correction="From then on" type="incorrect"><marker>From than on</marker> I entered a period of dullness, nothing bothered me anymore.</example> + <example type="correct">From then on I entered a period of dullness, nothing bothered me anymore.</example> + </rule> + <rule id="AND_THAN" name="and than (then)"> + <pattern mark_from="1"> + <token>and</token> + <token>than</token> + </pattern> + <message>Did you mean <suggestion>then</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">How to add equal values and <marker>then</marker> replace them with their sum?</example> + <example type="incorrect">How to add equal values and <marker>than</marker> replace them with their sum?</example> + </rule> + <rule id="THAN_INTERJ" name="..., than, ... (then)"> + <pattern mark_from="1" mark_to="-1"> + <token>,</token> + <token>than</token> + <token>,</token> + </pattern> + <message>Did you mean <suggestion>then</suggestion>?</message> + <short>Possible typo</short> + <example correction="then" type="incorrect">The genuinely interesting question, <marker>than</marker>, becomes...</example> + <example type="correct">The genuinely interesting question, then, becomes...</example> + </rule> + <rule id="WHO_THAN" name="who than (then)"> + <pattern mark_from="1"> + <token>who</token> + <token>than</token> + </pattern> + <message>Did you mean <suggestion>then</suggestion>?</message> + <short>Possible typo</short> + <example correction="then" type="incorrect">Please, who <marker>than</marker> can help!</example> + <example type="correct">Please, who then can help?</example> + </rule> + <rulegroup id="RATHER_THEN" name="rather/other/different then (than)"> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token regexp="yes">rather|other</token> + <token>then</token> + <token><exception postag="SENT_END"></exception><exception>,</exception></token> + </pattern> + <message>Did you mean <suggestion>than</suggestion>? 'than' is used for comparisons, 'then' is an expression of time.</message> + <short>Possible typo</short> + <example type="correct">Single Clicking rather <marker>than</marker> Double Clicking</example> + <example type="correct">If you bore each other <marker>then</marker>, heaven help you.</example> + <example type="incorrect">Single Clicking rather <marker>then</marker> Double Clicking</example> + </rule> + <rule> + <pattern mark_from="1"> + <token>different</token> + <token regexp="yes">then|than</token> + </pattern> + <message>Did you mean 'different <suggestion>from</suggestion>'? 'Different than' is often considered colloquial style.</message> + <short>Possible typo</short> + <example type="correct">Are human beings any different from animals?</example> + <example type="incorrect">Are human beings any different <marker>than</marker> animals?</example> + <example type="incorrect">Are human beings any different <marker>then</marker> animals?</example> + </rule> + </rulegroup> + <rulegroup id="PEACE_PIECE" name="peace (piece)"> + <rule> + <pattern mark_to="-2"> + <token>peace</token> + <token>of</token> + <token regexp="yes">cake|work|information</token> + </pattern> + <message>Did you mean <suggestion>piece</suggestion>?</message> + <short>Possible typo</short> + <example correction="piece" type="incorrect">It's a <marker>peace</marker> of cake!</example> + <example type="correct">It's a piece of cake!</example> + </rule> + </rulegroup> + <rulegroup id="QUIET_QUITE" name="quite (quiet)"> + <rule> + <pattern mark_to="-1"> + <token>quite</token> + <token postag="SENT_END"></token> + </pattern> + <message>Did you mean <suggestion>quiet</suggestion>? 'quiet' means 'silent', 'quite' mean 'very' or 'to a moderate extent'</message> + <short>Possible typo</short> + <example correction="quiet" type="incorrect">Be <marker>quite</marker>!</example> + <example type="correct">Be quiet!</example> + </rule> + </rulegroup> + <rule id="OF_CAUSE" name="of cause (course)"> + <pattern mark_to="-1"> + <token>of</token> + <token>cause</token> + <token negate="yes" regexp="yes">(and|to)</token> + </pattern> + <message>Did you mean <suggestion>of course</suggestion> (=naturally)?</message> + <short>Possible typo</short> + <example type="correct">The law of cause and effect.</example> + <example type="correct"><marker>Of course</marker> all these things are relative.</example> + <example type="incorrect"><marker>Of cause</marker> all these things are relative.</example> + </rule> + <rule id="LOOK_ATE" name="look ate (at)"> + <pattern mark_from="1"> + <token>look</token> + <token>ate</token> + </pattern> + <message>Did you mean <suggestion>at</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">Although I must admit when I look <marker>at</marker> the paperback...</example> + <example type="incorrect">Although I must admit when I look <marker>ate</marker> the paperback...</example> + </rule> + <rule id="A_KNOW_BUG" name="a know (known) bug/problem"> + <pattern mark_from="1" mark_to="-1"> + <token>a</token> + <token>know</token> + <token regexp="yes">bug|problem</token> + </pattern> + <message>Did you mean <suggestion>known</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">This is a <marker>known</marker> problem.</example> + <example type="incorrect">This is a <marker>know</marker> problem.</example> + </rule> + <rule id="MY_BE" name="my (may) be"> + <pattern> + <token>my</token> + <token>be</token> + </pattern> + <message>Did you mean <suggestion>may be</suggestion> or <suggestion>might be</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">Something that <marker>might be</marker> interesting...</example> + <example type="correct">Something that <marker>may be</marker> interesting...</example> + <example type="incorrect">Something that <marker>my be</marker> interesting...</example> + </rule> + <rule id="IS_SHOULD" name="is (it) should/could"> + <pattern mark_from="0" mark_to="-1"> + <token>is</token> + <token regexp="yes">(should|could)</token> + </pattern> + <message>Did you mean <suggestion>it</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">I definitely think <marker>it</marker> should be less than four years.</example> + <example type="incorrect">I definitely think <marker>is</marker> should be less than four years.</example> + </rule> + <rule id="THE_FLEW" name="the flew (flu)"> + <pattern mark_from="1"> + <token>the</token> + <token>flew</token> + </pattern> + <message>Did you mean <suggestion>flu</suggestion> (flew is past tense of fly, flu is a viral disease)?</message> + <short>Possible typo</short> + <example type="correct">I have been out with the <marker>flu</marker> for the past 3 days.</example> + <example type="incorrect">I have been out with the <marker>flew</marker> for the past 3 days.</example> + </rule> + <rule id="DT_FORM" name="from (form)"> + <pattern mark_from="1"> + <token regexp="yes">a|the</token> + <!--most determiners are OK, this way it's shorter--> + <token>from</token> + </pattern> + <message>Did you mean <suggestion>form</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">Type in the <marker>form</marker> on the web page.</example> + <example type="incorrect">Type in the <marker>from</marker> on the web page.</example> + </rule> + <rule id="CAN_NOT" name="can not (cannot)"> + <pattern> + <token>can</token> + <token>not</token> + </pattern> + <message>Did you mean <suggestion>cannot</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">You <marker>cannot</marker> use the keyboard to select an item.</example> + <example type="incorrect">You <marker>can not</marker> use the keyboard to select an item.</example> + </rule> + <rule id="CANT" name="cant (can't)"> + <pattern> + <token>cant</token> + </pattern> + <message>Did you mean <suggestion>can't</suggestion> or <suggestion>cannot</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">I <marker>can't</marker> view pdf files in Explorer.</example> + <example type="incorrect">I <marker>cant</marker> view pdf files in Explorer.</example> + </rule> + <rulegroup id="LETS_LET" name="let's (lets)"> + <rule> + <pattern mark_to="-1"> + <token postag="SENT_START"></token> + <token>Lets</token> + <token postag="VB|RB?" postag_regexp="yes"></token> + </pattern> + <message>Did you mean <suggestion>Let's</suggestion>?</message> + <short>Possible typo</short> + <example correction="Let's" type="incorrect"><marker>Lets</marker> go home.</example> + <example type="correct">It lets you sleep all night.</example> + </rule> + <rule> + <pattern mark_to="-1"> + <token>let</token> + <token>'</token> + <token>s</token> + <token><exception postag="VB|RB?" postag_regexp="yes"></exception><exception regexp="yes">all|just</exception></token> + </pattern> + <message>Did you mean <suggestion>\1s</suggestion> or <suggestion>\1</suggestion>?</message> + <short>Possible typo</short> + <example correction="lets|let" type="incorrect">It <marker>let's</marker> you quickly search for the product.</example> + <example type="correct">Let's go home!</example> + <example type="correct">Let's all go home!</example> + <example type="correct">Let's just say that I never wanted to kill him.</example> + <example type="correct">It lets you quickly search for the product,</example> + </rule> + <rule> + <pattern mark_to="-2"> + <token>let</token> + <token>'</token> + <token>s</token> + <token>all</token> + <token><exception postag="VB|RB?" postag_regexp="yes"></exception></token> + </pattern> + <message>Did you mean <suggestion>\1s</suggestion> or <suggestion>\1</suggestion>?</message> + <short>Possible typo</short> + <example correction="lets|let" type="incorrect">The system <marker>let's</marker> all students enter the building.</example> + <example type="correct">Let's go home!</example> + <example type="correct">Let's all go home!</example> + <example type="correct">It lets you quickly search for the product,</example> + </rule> + </rulegroup> + <rulegroup id="IT_IS" name="its (it's)"> + <rule> + <!-- TODO: "its of", "its to" --> + <pattern mark_from="1" mark_to="-2"> + <token><exception postag="IN|CC" postag_regexp="yes"></exception></token> + <token>its</token> + <token postag="(CC|DT|IN|MD|POS|PP|RB|WDT|WP|WRB)" postag_regexp="yes"><exception>many</exception><exception postag="NN.*" postag_regexp="yes"></exception></token> + <token><exception postag="VBN|JJ" postag_regexp="yes"></exception></token> + </pattern> + <message>Did you mean <suggestion>it's</suggestion> (=<suggestion>it is</suggestion>) instead of 'its' (possessive pronoun)?</message> + <short>Possible typo</short> + <example type="correct"><marker>It's</marker> where people walk around.</example> + <example type="incorrect"><marker>Its</marker> where people walk around.</example> + <example type="correct">It has not yet found its way either into the pharmacopoeia.</example> + <example type="correct">London is counting iconic landmarks such as the Houses of Parliament, Tower Bridge and Buckingham Palace amongst its many attractions.</example> + <example reason="'every' is tagged as AT0" type="triggers_error">London is a necropolis, <marker>its</marker> every corner the site of a murder, its soil a pudding of blood and tears.</example> + </rule> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token regexp="yes">on|of</token> + <token>it</token> + <token>'</token> + <token>s</token> + <token>own</token> + </pattern> + <message>Did you mean <suggestion>its</suggestion> (possessive pronoun) instead of 'it's' (=it is)?</message> + <short>Possible typo</short> + <example type="correct">New Robot Reproduces on <marker>Its</marker> Own.</example> + <example type="incorrect">New Robot Reproduces on <marker>It's</marker> Own.</example> + </rule> + <rule> + <pattern mark_from="2"> + <token>such</token> + <token>as</token> + <token>it</token> + <token>'</token> + <token>s</token> + </pattern> + <message>Did you mean <suggestion>its</suggestion> (possessive pronoun) instead of 'it's' (=it is)?</message> + <short>Possible typo</short> + <example type="correct">RDF can also be used to express metaproperties of a thesaurus, such as <marker>its</marker> title.</example> + <example type="incorrect">RDF can also be used to express metaproperties of a thesaurus, such as <marker>it's</marker> title.</example> + </rule> + <rule> + <pattern mark_from="2"> + <token regexp="yes">from|by</token> + <token>all</token> + <token>it</token> + <token>'</token> + <token>s</token> + </pattern> + <message>Did you mean <suggestion>its</suggestion> (possessive pronoun) instead of 'it's' (=it is)?</message> + <short>Possible typo</short> + <example type="correct">I would still consider assembling it from all <marker>its</marker> basic components.</example> + <example type="incorrect">I would still consider assembling it from all <marker>it's</marker> basic components.</example> + </rule> + <rule> + <pattern mark_to="-1"> + <token>it</token> + <token>'</token> + <token>s</token> + <token regexp="yes">approach|idea</token> + </pattern> + <message>Did you mean <suggestion>its</suggestion> (possessive pronoun) instead of 'it's' (=it is)?</message> + <short>Possible typo</short> + <example type="correct">We could borrow <marker>its</marker> approach.</example> + <example type="incorrect">We could borrow <marker>it's</marker> approach.</example> + </rule> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token>at</token> + <token>it</token> + <token>'</token> + <token>s</token> + <token>best</token> + </pattern> + <message>Did you mean <suggestion>its</suggestion> (possessive pronoun) instead of 'it's' (=it is)?</message> + <short>Possible typo</short> + <example type="correct">Linux at <marker>its</marker> best</example> + <example type="incorrect">Linux at <marker>it's</marker> best</example> + </rule> + <rule> + <pattern mark_from="2" mark_to="-1"> + <token>some</token> + <token>of</token> + <token>it</token> + <token>'</token> + <token>s</token> + <token postag="NNS"></token> + </pattern> + <message>Did you mean <suggestion>its</suggestion> (possessive pronoun) instead of 'it's' (=it is)?</message> + <short>Possible typo</short> + <example type="correct">When some of <marker>its</marker> clauses match.</example> + <example type="incorrect">When some of <marker>it's</marker> clauses match.</example> + </rule> + <rule> + <pattern case_sensitive="yes" mark_from="1"> + <token regexp="yes">[Bb]y</token> + <token>it</token> + <token>'</token> + <token>s</token> + </pattern> + <message>Did you mean <suggestion>its</suggestion> (possessive pronoun) instead of 'it's' (=it is)?</message> + <short>Possible typo</short> + <example type="correct">Don't judge a book by <marker>its</marker> cover.</example> + <example type="incorrect">Don't judge a book by <marker>it's</marker> cover.</example> + </rule> + <!-- TODO: + <rule> + <pattern mark_from="0</token>mark_to="-1"><token>its</token><token postag="VBG"/>/pattern> + <message>Did you mean <em>it's</em> (=<em>it is</em>) instead of 'its' (possessive pronoun)?</message> + <example type="correct"><em>It's</em> going to be difficult.</example> + <example type="incorrect"><em>Its</em> going to be difficult.</example> + </rule> + --> + <rule> + <pattern mark_from="0" mark_to="-1"> + <token>its</token> + <token regexp="yes">(a|the|your|her|his|our|their|mine|ours|theirs|yours)</token> + </pattern> + <message>Did you mean <suggestion>it's</suggestion> (=<suggestion>it is</suggestion>) instead of 'its' (possessive pronoun)?</message> + <short>Possible typo</short> + <example type="correct"><marker>It's</marker> a good opportunity.</example> + <example correction="It's|It is" type="incorrect"><marker>Its</marker> his uncle.</example> + <example type="incorrect"><marker>Its</marker> a good opportunity.</example> + <example type="triggers_error">Currently, there are fifteen records on <marker>its</marker> A list and twenty on its B list.</example> + </rule> + <rule> + <pattern case_sensitive="yes" mark_from="1" mark_to="-1"> + <token regexp="yes">[wW]ith|[Ii]n|[Ww]ithout|[Ff]rom|[Uu]nder|[Oo]ver|[Aa]bove</token> + <!-- not using postag="IN" because of "like" and "to", + not sure about other prepositions --> + <token>it</token> + <token>'</token> + <token>s</token> + <token postag="JJ.*|NN.*" postag_regexp="yes"></token> + </pattern> + <message>Did you mean <suggestion>its</suggestion> (possessive pronoun) instead of 'it's' (=it is)?</message> + <short>Possible typo</short> + <example type="correct">Scene from It's a Boy Girl Thing</example> + <example type="correct">This lovely and interesting area with <marker>its</marker> friendly people will make a welcoming break</example> + <example type="incorrect">This lovely and interesting area with <marker>it's</marker> friendly people will make a welcoming break</example> + <example type="incorrect">In <marker>it's</marker> heyday it was a bustling port.</example> + <example type="correct">In <marker>its</marker> heyday it was a bustling port.</example> + </rule> + </rulegroup> + <rulegroup id="NOW" name="no/now"> + <rule> + <pattern mark_from="1" mark_to="-2"> + <token><exception postag="IN"></exception><exception regexp="yes">is|are|was|were|be|had|have|has</exception></token> + <token>no</token> + <token postag="MD|VBD|VBN" postag_regexp="yes"><exception regexp="yes">known|need</exception></token> + <token><exception postag="NN.*|JJ.*" postag_regexp="yes"></exception></token> + </pattern> + <message>Did you mean <suggestion>now</suggestion> (=at this moment) instead of 'no' (negation)?</message> + <short>Possible typo</short> + <example type="correct">There <marker>now</marker> will be a park.</example> + <example type="incorrect">There <marker>no</marker> will be a park.</example> + <example type="correct">Although in no state the repression has been as great as it was in Soviet times.</example> + </rule> + <rule> + <!-- TODO: "no the", "no of" --> + <pattern mark_to="-1"> + <token>no</token> + <token postag="CC|DT|IN|MD|NP|RP|WDT|WP|WRB" postag_regexp="yes"><exception regexp="yes">such|for</exception><exception postag="JJR|NN.*" postag_regexp="yes"></exception></token> + </pattern> + <message>Did you mean <suggestion>now</suggestion> (=at this moment) instead of 'no' (negation)?</message> + <short>Possible typo</short> + <example type="correct">There's <marker>now</marker> a new building.</example> + <example type="correct">Get out of bed no later than ten minutes after the alarm goes off.</example> + <example type="incorrect">There's <marker>no</marker> a new building.</example> + </rule> + <rule> + <pattern mark_to="-1"> + <token>no</token> + <token regexp="yes">were|was|been|be|is</token> + </pattern> + <message>Did you mean <suggestion>now</suggestion> (=at this moment) instead of 'no' (negation)?</message> + <short>Possible typo</short> + <example type="correct"><marker>Now</marker> is the right time.</example> + <example type="incorrect"><marker>No</marker> is the right time.</example> + </rule> + </rulegroup> + <rule id="MANGER_MANAGER" name="manger (manager)"> + <pattern mark_from="0"> + <token regexp="yes">lifespan|bank|team|project|marketing|development|area|group|line|business|branch|production|lan|stage|fund|module|office|system|store|football|presentation|file|product|farm|training|package|program|centre|quality|shop|administration|window|city|care|district|player|transport|campaign|caretaker|deputy|hotel|service|station|unit|forest|section|restaurant|club|database|company|case|desktop|investment|catering|site|account|tour|type|beverage|credit|lead|cricket|practice|programme|publicity|test|trainee|colliery|department|engineering|night|plant|floor|theatre|dealing|duty|house|cinema|estate|brand|insurance|nurse|palace|producer/editorial|safety|storage|technology|town|copy|depot|distribution|mill|county|print|bureau|factory|hospital|library|network|research</token> + <token>manger</token> + </pattern> + <message>Did you mean <suggestion>\1 manager</suggestion>?</message> + <short>Possible typo</short> + <example correction="project manager" type="incorrect">He's our new <marker>project manger</marker>.</example> + <example type="correct">Jesus lies in the manger.</example> + <example type="correct">He's our new project manager.</example> + </rule> + <rule id="MODAL_OF" name="could of (could have)"> + <pattern mark_to="-1"> + <token regexp="yes">could|would|should|might|may|must|will</token> + <token>of</token> + <token postag="VBN"></token> + </pattern> + <message>It's never correct to use "of" after a modal verb. Use <suggestion>\1 have</suggestion>, or, in informal register, <suggestion>\1've</suggestion>.</message> + <short>Possible typo</short> + <example type="correct">I could have bought this house!</example> + <example type="correct">I must of course have something of my own before many more years have passed over my head.</example> + <example type="incorrect">Something terrible <marker>must of</marker> happened here.</example> + <example type="incorrect">It <marker>could of</marker> been you, the one that I was givin' my love to.</example> + </rule> + <rule id="HAD_OF" name="had of (had)"> + <pattern mark_to="-1"> + <token>had</token> + <token>of</token> + <token postag="VBN"></token> + </pattern> + <message>It's never correct to use 'of' after 'had' to form a 'plupluperfect' tense. Use <suggestion>had</suggestion>.</message> + <short>Possible typo</short> + <example type="correct">I had bought this house.</example> + <example type="incorrect">I <marker>had of</marker> bought this house.</example> + </rule> + <rule id="ONES" name="ones (one's)"> + <pattern mark_from="1" mark_to="-1"> + <token><exception postag="JJ.*" postag_regexp="yes"></exception></token> + <token>ones</token> + <token postag="NN.*" postag_regexp="yes"></token> + </pattern> + <message>Did you mean <suggestion>one's</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">the common ones clashing with the noble ones</example> + <example type="correct">One should always wash one's feet in the morning.</example> + <example type="incorrect">One should always wash <marker>ones</marker> feet in the morning.</example> + </rule> + <rulegroup id="POSSESIVE_APOSTROPHE" name="Possessive apostrophe error"> + <rule> + <pattern mark_from="2" mark_to="-2"> + <token><exception postag="PRP$"></exception></token> + <token postag="DT|JJ.*" postag_regexp="yes"><exception postag="CD"></exception></token> + <token postag="NNS|NNPS" postag_regexp="yes" regexp="yes">.[^']*s<exception>his</exception><exception postag="VBZ|RB|IN|JJ|NN:.*|NN|NNP" postag_regexp="yes"></exception></token> + <token postag="NN|NN:.*" postag_regexp="yes" regexp="yes">.{2,}<exception regexp="yes">today|yesterday|tomorrow|now|in|are</exception><exception postag="VBG|VB|VBP|VBD|VBN|VBG|RB|MD|IN|JJ.*|CC|PRP|NNP.*" postag_regexp="yes"></exception></token> + <token><exception regexp="yes">\p{Punct}</exception></token> + </pattern> + <message>Possible typo: apostrophe is missing. Did you mean <suggestion><match no="3"></match>'</suggestion> or <suggestion><match no="3" postag="NN(P)?S" postag_regexp="yes" postag_replace="NN$1(:U.?)?" setpos="no"></match>'s</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">This is a transcript of the president's speech.</example> + <example type="correct">Publishers today are at loss...</example> + <example type="correct">Owen was seven years younger.</example> + <example type="correct">My random thoughts day after day...</example> + <example type="correct">The Romans may have marked the centre of Londinium.</example> + <example type="correct">Universities A and B are old universities...</example> + <example correction="presidents'|president's" type="incorrect">This is a transcript of the <marker>presidents</marker> oration from March.</example> + <example type="correct">Legalized Abortion on Crime, authored by the economists Steven D. Levitt and John Donohue.</example> + </rule> + <rule> + <pattern mark_from="2" mark_to="-2"> + <token><exception postag="PRP$"></exception></token> + <token postag="DT|JJ.*" postag_regexp="yes"><exception postag="CD"></exception></token> + <token postag="NNS|NNPS" postag_regexp="yes" regexp="yes">.[^']*s<exception>his</exception><exception postag="VBZ|RB|IN|JJ|NN:.*|NN|NNP" postag_regexp="yes"></exception></token> + <token postag="NN|NN:.*" postag_regexp="yes" regexp="yes">.{2,}<exception regexp="yes">today|yesterday|tomorrow|now|in</exception><exception postag="RB|MD|IN|JJ.*|CC|VBP|VBG" postag_regexp="yes"></exception></token> + <token regexp="yes">\p{Punct}</token> + </pattern> + <message>Possible typo: apostrophe is missing. Did you mean <suggestion><match no="3"></match>'</suggestion> or <suggestion><match no="3" postag="NN(P)?S" postag_regexp="yes" postag_replace="NN$1(:U.?)?" setpos="no"></match>'s</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">This is a transcript of the president's speech.</example> + <example type="correct">Publishers today are at loss...</example> + <example type="correct">The Romans may have marked the centre of Londinium.</example> + <example type="correct">Owen was seven years younger.</example> + <example type="correct">Universities A and B are old universities...</example> + <example correction="presidents'|president's" type="incorrect">This is a transcript of the <marker>presidents</marker> speech.</example> + </rule> + </rulegroup> + <rulegroup id="APOSTROPHE_PLURAL" name="Possessive form instead of plural"> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token><exception postag="DT|JJ.*" postag_regexp="yes"></exception></token> + <token postag="NN|NN:UN" postag_regexp="yes"><exception postag="VB"></exception></token> + <token regexp="yes">'|’</token> + <token>s</token> + <token postag="VBD|VBP" postag_regexp="yes"><exception postag="NN.*|JJ.*" postag_regexp="yes"></exception><exception>got</exception></token> + </pattern> + <message>Probably you need to use a plural form here: <suggestion>\2\4</suggestion>.</message> + <short>Possible typo</short> + <example type="correct">7 reasons why <marker>teachers</marker> found us top class</example> + <example type="correct">And how funny it'll seem, sending presents to one's own feet!</example> + <example correction="teachers" type="incorrect">7 reasons why <marker>teacher's</marker> found us top class</example> + </rule> + <rule> + <pattern mark_to="-1"> + <token postag="NN|NN:.*|NNP" postag_regexp="yes"><exception postag="RB"></exception></token> + <token regexp="yes">'|’</token> + <token>s</token> + <token postag="WRB" postag_regexp="yes"></token> + </pattern> + <message>Probably you need to use a plural form here: <suggestion>\1\3</suggestion>.</message> + <short>Possible typo</short> + <example type="correct">7 reasons why</example> + <example type="correct">Here's how the scheme works.</example> + <example correction="reasons" type="incorrect">7 <marker>reason's</marker> why</example> + </rule> + </rulegroup> + <rulegroup id="ANY_BODY" name="any body (anybody)"> + <rule> + <pattern mark_to="-1"> + <token regexp="yes">any|some</token> + <token>one</token> + <token><exception>of</exception></token> + </pattern> + <message>Did you mean <suggestion>\1\2</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">Anyone needs help here?</example> + <example type="incorrect"><marker>Any one</marker> needs help here?</example> + </rule> + <rule> + <pattern> + <token regexp="yes">no|any|some</token> + <token regexp="yes">body|thing</token> + </pattern> + <message>Did you mean <suggestion>\1\2</suggestion>?</message> + <short>Possible typo</short> + <example type="correct">Nobody seems to care.</example> + <example type="incorrect"><marker>No body</marker> seems to care.</example> + <example correction="nothing" type="incorrect">There's <marker>no thing</marker> wrong with this sentence.</example> + </rule> + </rulegroup> + <rulegroup id="MAY_BE" name="may be (maybe)"> + <rule id="MAY_BE_I"> + <pattern mark_to="-1"> + <token>may</token> + <token>be</token> + <token postag="PRP"><exception>one</exception></token> + </pattern> + <message>Did you mean <suggestion>maybe</suggestion> (=perhaps)?</message> + <short>Possible typo</short> + <example correction="Maybe" type="incorrect"><marker>May be</marker> I don't understand.</example> + <example type="correct"><marker>Maybe</marker> I don't understand.</example> + <example type="correct">That they all may be one...</example> + </rule> + <rule> + <pattern mark_from="1"> + <token>(</token> + <token>may</token> + <token>be</token> + </pattern> + <message>Did you mean <suggestion>maybe</suggestion> (=perhaps)?</message> + <short>Possible typo</short> + <example correction="maybe" type="incorrect">I paid (<marker>may be</marker>) an exorbitant price for this.</example> + <example type="correct">I paid (maybe) an exorbitant price.</example> + </rule> + </rulegroup> + <rulegroup id="ONCE_AND_A_WHILE" name="once and a while (once in a while)"> + <rule> + <pattern> + <token>once</token> + <token>and</token> + <token>a</token> + <token>while</token> + </pattern> + <message>This is a non-standard phrase. Did you mean <suggestion>once in a while</suggestion>?</message> + <short>Possible typo</short> + <example correction="once in a while" type="incorrect">My computer starts up only <marker>once and a while</marker>.</example> + <example type="correct">My computer starts up only <marker>once in a while</marker>.</example> + </rule> + <rule> + <pattern> + <token>once</token> + <token>and</token> + <token>awhile</token> + </pattern> + <message>This is a non-standard phrase. Did you mean <suggestion>once in a while</suggestion>?</message> + <short>Possible typo</short> + <example correction="once in a while" type="incorrect">My computer starts up only <marker>once and awhile</marker>.</example> + <example type="correct">My computer starts up only <marker>once in a while</marker>.</example> + </rule> + </rulegroup> + <rule id="SPARKING_WINE" name="sparking wine (sparkling wine)"> + <pattern> + <token>sparking</token> + <token regexp="yes">wine|wines</token> + </pattern> + <message>Possible typo. Did you mean <suggestion>sparkling \2</suggestion>?</message> + <short>Possible typo</short> + <example correction="sparkling wine" type="incorrect">I love <marker>sparking wine</marker>.</example> + <example type="correct">I hate sparkling wine.</example> + </rule> + <rule id="VERY_MATCH" name="very match (very much)"> + <pattern mark_from="1"> + <token>you</token> + <token>very</token> + <token>match</token> + </pattern> + <message>Did you mean <suggestion>very much</suggestion>?</message> + <short>Possible typo</short> + <example correction="very much" type="incorrect">Thank you <marker>very match</marker>.</example> + <example type="correct">Thank you very much.</example> + </rule> + <rule id="VARY_MUCH" name="...you vary (very) much"> + <pattern mark_from="1" mark_to="-1"> + <token>you</token> + <token>vary</token> + <token>much</token> + </pattern> + <message>Did you mean <suggestion>very</suggestion>?</message> + <short>Possible typo</short> + <example correction="very" type="incorrect">Thank you <marker>vary</marker> much.</example> + <example type="correct">Thank you <marker>very</marker> much.</example> + </rule> + <rule id="ZERO-SUM_GAIN" name="zero-sum gain (zero-sum game)"> + <pattern> + <token>zero-sum</token> + <token>gain</token> + </pattern> + <message>Did you mean <suggestion>\1 game</suggestion>?</message> + <short>Possible typo</short> + <example correction="zero-sum game" type="incorrect">It is a <marker>zero-sum gain</marker> when wages are held flat...</example> + <example type="correct">It is a zero-sum game when wages are held flat...</example> + </rule> + </category> + <!-- ====================================================================== --> + <!-- Grammar --> + <!-- ====================================================================== --> + <category name="Grammar"> + <rule id="HELP_TO_FIND" name="help to find (help find)"> + <pattern> + <token>help</token> + <token postag="PRP" postag_regexp="yes"></token> + <token>to</token> + <token inflected="no">find</token> + </pattern> + <message>This phrase is probably grammatically incorrect. Write <suggestion>help \2 find</suggestion> instead.</message> + <short>Grammatical problem or typo</short> + <example type="incorrect">Can any guru <marker>help me to find</marker> the reason?</example> + <example type="correct">Can any guru <marker>help me find</marker> the reason?</example> + </rule> + <rulegroup id="WAS_BEEN" name="was been (has been)"> + <rule> + <pattern> + <token>was</token> + <token>been</token> + </pattern> + <message>Did you mean <suggestion>was</suggestion> or <suggestion>has been</suggestion>?</message> + <short>Grammatical problem or typo</short> + <example correction="was|has been" type="incorrect">She <marker>was been</marker> here since Monday.</example> + <example type="correct">She has been here since Monday.</example> + </rule> + <rule> + <pattern> + <token>was</token> + <token>not</token> + <token>been</token> + </pattern> + <message>Did you mean <suggestion>was not</suggestion> or <suggestion>has not been</suggestion>?</message> + <short>Grammatical problem or typo</short> + <example correction="was not|has not been" type="incorrect">She <marker>was not been</marker> here since Monday.</example> + <example type="correct">She has not been here since Monday.</example> + </rule> + <rule> + <pattern> + <token>wasn</token> + <token>'</token> + <token>t</token> + <token>been</token> + </pattern> + <message>Did you mean <suggestion>wasn't</suggestion> or <suggestion>hasn't been</suggestion>?</message> + <short>Grammatical problem or typo</short> + <example correction="wasn't|hasn't been" type="incorrect">She <marker>wasn't been</marker> here since Monday.</example> + <example type="correct">She hasn't been here since Monday.</example> + </rule> + </rulegroup> + <rule id="LETS_DONT" name="let's dont (let's not)"> + <pattern> + <token>let</token> + <token>'</token> + <token>s</token> + <token>don</token> + <token>'</token> + <token>t</token> + </pattern> + <message>Substandard usage of "let". The standard is: <suggestion>\1\2\3 not</suggestion>.</message> + <short>Grammatical problem</short> + <example correction="Let's not" type="incorrect"><marker>Let's don't</marker> go there.</example> + <example type="correct">Let's not go there.</example> + </rule> + <rule id="THESE_ONES" name="these/those ones (these/those)"> + <pattern> + <token regexp="yes">these|those</token> + <token>ones</token> + </pattern> + <message>This phrase is probably grammatically incorrect. Write <suggestion>\1</suggestion> instead.</message> + <short>Grammatical problem</short> + <example correction="These" type="incorrect"><marker>These Ones</marker> Are Bitter.</example> + <example type="correct">These Are Bitter.</example> + </rule> + <rule id="EACH_EVERY_NNS" name="'each' or 'every' with plural nouns"> + <pattern mark_to="-2"> + <token postag="SENT_START"></token> + <token regexp="yes">each|every</token> + <token postag="NNS"></token> + <token postag="VB.*" postag_regexp="yes"><exception postag="NNS"></exception></token> + </pattern> + <message>'Each' and 'every' are used with singular. Did you mean <suggestion>all</suggestion>?</message> + <short>Grammatical problem</short> + <example type="incorrect"><marker>Each</marker> children are happy.</example> + <example type="correct"><marker>Each</marker> children's services are available...</example> + <example type="correct"><marker>Each</marker> children services are available...</example> + <example type="correct">All children are happy.</example> + </rule> + <rulegroup id="AGREEMENT_SENT_START" name="Possible agreement error: plural noun + singular verb"> + <rule> + <pattern mark_from="3"> + <token postag="SENT_START"></token> + <token postag="DT"></token> + <token postag="NNS"><exception postag="NN|NN:.*" postag_regexp="yes"></exception></token> + <token postag="VBZ"><exception>is</exception></token> + </pattern> + <message>You should probably use <suggestion><match no="4" postag="VBP"></match></suggestion>.</message> + <short>Possible agreement error</short> + <example type="correct">The dogs <marker>are</marker> released.</example> + <example type="correct">The dog is released.</example> + <example correction="bark" type="incorrect">The dogs <marker>barks</marker> loudly.</example> + </rule> + <rule> + <pattern mark_from="5"> + <token postag="SENT_START"></token> + <token postag="DT"></token> + <token postag="NNS"></token> + <token>of</token> + <token postag="NN|NN:.*" postag_regexp="yes"></token> + <token postag="VBZ"><exception>is</exception></token> + </pattern> + <message>You should probably use <suggestion><match no="6" postag="VBP"></match></suggestion>.</message> + <short>Possible agreement error</short> + <example type="correct">The dogs of war <marker>are</marker> released.</example> + <example type="correct">The dog of war is released.</example> + <example correction="bark" type="incorrect">The dogs of war <marker>barks</marker> loudly.</example> + </rule> + <rule> + <pattern mark_from="3"> + <token postag="SENT_START"></token> + <token postag="DT"></token> + <token postag="NNS"><exception postag="NN|NN:.*" postag_regexp="yes"></exception></token> + <token>is</token> + </pattern> + <message>You should probably use: <suggestion>are</suggestion>.</message> + <short>Possible agreement error</short> + <example type="correct">The dogs <marker>are</marker> released.</example> + <example type="correct">The dog is released.</example> + <example correction="are" type="incorrect">The dogs <marker>is</marker> released.</example> + </rule> + <rule> + <pattern mark_from="3"> + <token postag="SENT_START"></token> + <token postag="DT"></token> + <token postag="NNS"><exception postag="NN|NN:.*" postag_regexp="yes"></exception></token> + <token>was</token> + </pattern> + <message>You should probably use: <suggestion>were</suggestion>.</message> + <short>Possible agreement error</short> + <example type="correct">The dogs <marker>were</marker> released.</example> + <example type="correct">The dog was released.</example> + <example correction="were" type="incorrect">The dogs <marker>was</marker> released.</example> + </rule> + <rule> + <pattern mark_from="5"> + <token postag="SENT_START"></token> + <token postag="DT"></token> + <token postag="NNS"></token> + <token>of</token> + <token postag="NN|NN:.*" postag_regexp="yes"></token> + <token>is</token> + </pattern> + <message>Possible agreement error. You should probably use: <suggestion>are</suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">The dogs of war <marker>are</marker> released.</example> + <example type="correct">The dog of war is released.</example> + <example correction="are" type="incorrect">The dogs of war <marker>is</marker> released.</example> + </rule> + <rule> + <pattern mark_from="5"> + <token postag="SENT_START"></token> + <token postag="DT"></token> + <token postag="NNS"></token> + <token>of</token> + <token postag="NN|NN:.*" postag_regexp="yes"></token> + <token>was</token> + </pattern> + <message>Possible agreement error. You should probably use: <suggestion>were</suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">The dogs of war <marker>are</marker> released.</example> + <example type="correct">The dog of war was released.</example> + <example correction="were" type="incorrect">The dogs of war <marker>was</marker> released.</example> + </rule> + </rulegroup> + <rule id="A_PLURAL" name="Agreement: 'a' + plural word"> + <pattern mark_to="-1"> + <token regexp="yes">a|an</token> + <token postag="NNS|NNPS" postag_regexp="yes"><exception postag="NN:.*|NN|VBZ|NNP" postag_regexp="yes"></exception></token> + <token><exception postag="NN.*" postag_regexp="yes"></exception><exception>'</exception></token> + </pattern> + <message>Don't use indefinite articles with plural words. Did you mean <suggestion><match no="1"></match> <match no="2" postag="NN|NN:.*" postag_regexp="yes"></match></suggestion> or simply <suggestion><match no="2"></match></suggestion>?</message> + <short>Possible agreement error</short> + <example correction="a criterion|criteria" type="incorrect">I needed to use a text line as <marker>a criteria</marker> to select users for a list.</example> + <example type="correct">It is a criteria list that we prepared last night.</example> + <example type="correct">He was employed for a time by a Mrs. Reed.</example> + <example type="correct">There was a children's party at the Joneses yesterday.</example> + </rule> + <rulegroup id="HAVE_PART_AGREEMENT" name="Agreement: have + past/present tense"> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token regexp="yes">has|have|had</token> + <token postag="VBD|VBP|VB" postag_regexp="yes"><exception postag="VBN|NN:U.*|JJ.*|RB" postag_regexp="yes"></exception></token> + <token><exception postag="VBG"></exception></token> + </pattern> + <message>Use past participle here: <suggestion><match no="2" postag="VBN"></match></suggestion>.</message> + <short>Possible agreement error</short> + <example type="correct">I must have done that.</example> + <example correction="written" type="incorrect">I must have <marker>wrote</marker> that.</example> + <example type="correct">I have liked her.</example> + <example type="correct">It has become difficult.</example> + <example type="correct">We have air conditioning.</example> + <example type="correct">We do not have soap.</example> + <example type="correct">We have soap.</example> + <example type="correct">We do have soap.</example> + <example correction="written" type="incorrect">I could have <marker>wrote</marker> this letter.</example> + </rule> + <rule> + <pattern mark_from="2" mark_to="-1"> + <token regexp="yes">has|have|had</token> + <token postag="RB"><exception>no</exception><exception postag="IN|RP|CC" postag_regexp="yes"></exception></token> + <token postag="VBD|VBP|VB" postag_regexp="yes"><exception postag="VBN|RB|JJ" postag_regexp="yes"></exception></token> + <token><exception postag="VBG"></exception></token> + </pattern> + <message>Possible agreement error -- use past participle here: <suggestion><match no="3" postag="VBN"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">I have always done that.</example> + <example correction="written" type="incorrect">I must have always <marker>wrote</marker> that.</example> + <example type="correct">I have always liked her.</example> + </rule> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token regexp="yes">has|have|had</token> + <token postag="VBD|VBP|VB" postag_regexp="yes"><exception postag="VBN" postag_regexp="yes"></exception></token> + <token postag="PRP"></token> + </pattern> + <message>Possible agreement error – use past participle here: <suggestion><match no="2" postag="VBN"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example correction="liked" type="incorrect">I have <marker>like</marker> her.</example> + <example type="correct">I have <marker>liked</marker> her.</example> + </rule> + <rule> + <pattern mark_from="3"> + <token postag="SENT_START"></token> + <token regexp="yes">has|have|had</token> + <token postag="PRP"></token> + <token postag="VBD|VBP|VB" postag_regexp="yes"><exception postag="VBN" postag_regexp="yes"></exception></token> + </pattern> + <message>Possible agreement error – use past participle here: <suggestion><match no="4" postag="VBN"></match></suggestion>.</message> + <example correction="liked" type="incorrect">Have you <marker>like</marker> her?</example> + <example type="correct">Have you liked Dutch jazz music?</example> + <example type="correct">Have you seen her?</example> + </rule> + <rule> + <pattern mark_from="4"> + <token postag="SENT_START"></token> + <token postag="WRB|WP" postag_regexp="yes"></token> + <token regexp="yes">has|have|had</token> + <token postag="PRP"></token> + <token postag="VBD|VBP|VB" postag_regexp="yes"><exception postag="VBN" postag_regexp="yes"></exception></token> + </pattern> + <message>Possible agreement error – use past participle here: <suggestion><match no="5" postag="VBN"></match></suggestion>.</message> + <example correction="done" type="incorrect">What have you <marker>did</marker>?</example> + <example type="correct">What have you seen?</example> + <example correction="been" type="incorrect">Where have you <marker>were</marker>?</example> + </rule> + </rulegroup> + <rulegroup id="BEEN_PART_AGREEMENT" name="Agreement: 'been' or 'was' + past tense"> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token regexp="yes">been|was|were|is|are|am</token> + <token postag="VBD|VBP|VB" postag_regexp="yes"><exception postag="VBN|NN:U.*|JJ.*|RB|IN" postag_regexp="yes"></exception><exception regexp="yes">are|am</exception></token> + <token><exception>'</exception></token> + </pattern> + <message>Probably you should use a past participle here: <suggestion><match no="2" postag="VBN"></match></suggestion>.</message> + <short>Possible agreement error</short> + <example correction="introduced" type="incorrect">The software was <marker>introduce</marker> yesterday.</example> + <example correction="introduced" type="incorrect">The program has been <marker>introduce</marker>.</example> + <example correction="given" type="incorrect">The gift has been <marker>gave</marker>.</example> + <example type="correct">The park has been open for many years.</example> + <example type="correct">It has been done.</example> + <example type="correct">It has been love's whip.</example> + <example type="incorrect">He has been <marker>did</marker> this.</example> + </rule> + <rule> + <pattern mark_from="2" mark_to="-1"> + <token regexp="yes">been|was|were|is|are|am</token> + <token postag="RB"><exception>in</exception><exception postag="VBN|JJ.*|CC" postag_regexp="yes"></exception></token> + <token postag="VBD|VBP|VB" postag_regexp="yes"><exception postag="VBN|JJ.*|IN|RB" postag_regexp="yes"></exception></token> + <token><exception>'</exception></token> + </pattern> + <message>Probably you should use a past participle here: <suggestion><match no="3" postag="VBN"></match></suggestion>.</message> + <short>Possible agreement error</short> + <example type="correct">It has always been hated.</example> + <example correction="written" type="incorrect">I must have been always <marker>wrote</marker> that.</example> + <example correction="hated" type="incorrect">The president was always <marker>hate</marker> in Moscow.</example> + <example type="correct">It has always been liked.</example> + </rule> + </rulegroup> + <rulegroup id="MASS_AGREEMENT" name="Agreement: Mass noun + non-third person verb"> + <rule> + <pattern mark_from="2" mark_to="-1"> + <token postag="SENT_START"></token> + <token postag="NN|NN:.*" postag_regexp="yes"><exception regexp="yes">A|In|I|No</exception><exception postag="JJ|MD|NNS|CC|WRB|IN|VB" postag_regexp="yes"></exception></token> + <token postag="VB|VBP" postag_regexp="yes"><exception postag="VBZ|VBN|VBD|VBG|IN|RB" postag_regexp="yes"></exception></token> + <token postag="DT|JJ" postag_regexp="yes"><exception postag="VB.*" postag_regexp="yes"></exception></token> + </pattern> + <message>Probably you should use third-person verb forms for singular and mass nouns: <suggestion><match no="3" postag="VBZ"></match></suggestion>.</message> + <short>Possible agreement error</short> + <example type="incorrect">Marketing <marker>are</marker> bad for you.</example> + <example correction="means" type="incorrect">Marketing <marker>mean</marker> a lot of trouble.</example> + <example type="correct">Marketing is bad for you.</example> + <example type="correct">I think it is bad for you.</example> + </rule> + <rule> + <pattern mark_from="3" mark_to="-1"> + <token postag="SENT_START"></token> + <token postag="DT"><exception regexp="yes">these|those</exception></token> + <token postag="NN|NN:.*" postag_regexp="yes"><exception postag="JJ|MD|NNS" postag_regexp="yes"></exception></token> + <token postag="VB|VBP" postag_regexp="yes"><exception postag="VBZ|VBN|VBD|VBG|JJ" postag_regexp="yes"></exception></token> + <token postag="DT|JJ" postag_regexp="yes"><exception postag="VB.*" postag_regexp="yes"></exception></token> + </pattern> + <message>Possible agreement error - use third-person verb forms for singular and mass nouns: <suggestion><match no="4" postag="VBZ"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example correction="is" type="incorrect">The marketing <marker>are</marker> bad for you.</example> + <example type="correct">The marketing is bad for you.</example> + <example type="correct">The city is an international transport hub and a popular tourist destination.</example> + <example type="correct">Those wanting are the Canines.</example> + <!-- example type="incorrect">The city is popular, and this marketing <marker>are</marker> bad for you.</example --> + </rule> + </rulegroup> + <rulegroup id="PERS_PRONOUN_AGREEMENT_SENT_START" name="Agreement: 'I is / you is / ... ' (at sentence start only)"> + <rule> + <pattern mark_from="2"> + <token postag="SENT_START"></token> + <token>I</token> + <token regexp="yes">is|be|are|were|has</token> + </pattern> + <message>Did you mean <suggestion>am</suggestion> or <suggestion>ate</suggestion>?</message> + <short>Grammatical problem</short> + <example type="correct">I <marker>ate</marker> at the restaurant.</example> + <example type="correct">I <marker>am</marker> at the restaurant.</example> + <example type="incorrect">I <marker>are</marker> at the restaurant.</example> + </rule> + <rule> + <pattern mark_from="2"> + <token postag="SENT_START"></token> + <token>You</token> + <token regexp="yes">am|is|was|has</token> + </pattern> + <message>Use second person verb with 'you': <suggestion>are</suggestion> or <suggestion>were</suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">You <marker>are</marker> too old for that.</example> + <example correction="are|were" type="incorrect">You <marker>is</marker> too old for that.</example> + </rule> + <rule> + <pattern mark_from="2"> + <token postag="SENT_START"></token> + <token regexp="yes">He|She</token> + <token regexp="yes">were|have|be|am|are</token> + </pattern> + <message>Use third-person verb with '<match no="2"></match>': <suggestion><match no="3" postag="VBZ"></match></suggestion> or <suggestion>was</suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">He <marker>is</marker> too old for that.</example> + <example correction="is|was" type="incorrect">He <marker>were</marker> too old for that.</example> + <example correction="is|was" type="incorrect">She <marker>were</marker> too old for that.</example> + </rule> + <rule> + <pattern mark_from="2"> + <token postag="SENT_START"></token> + <token>We</token> + <token regexp="yes">am|is|was|has</token> + </pattern> + <message>Use first person plural verb with 'we': <suggestion>are</suggestion>, <suggestion>were</suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">We <marker>are</marker> too old for that.</example> + <example correction="are|were" type="incorrect">We <marker>is</marker> too old for that.</example> + </rule> + <rule> + <pattern mark_from="2"> + <token postag="SENT_START"></token> + <token>They</token> + <token regexp="yes">am|is|was|has</token> + </pattern> + <message>Use third-person plural verb with 'they': <suggestion>are</suggestion>, <suggestion>were</suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">They <marker>are</marker> too old for that.</example> + <example correction="are|were" type="incorrect">They <marker>is</marker> too old for that.</example> + </rule> + </rulegroup> + <!-- TODO: is this really an error? see http://www.edufind.com/english/grammar/ADVERBS10.cfm + <rule id="ADVERBS_ORDER" name="word order: adverb + auxiliary verb + main verb"> + <pattern mark_from="2"><token regexp="yes">certainly|definitely|probably|undoubtedly|surely</token><token regexp="yes">has|had|have|will</token><token postag="VBN|VB"/>/pattern> + <message>Place the adverb between </message> + <example type="correct">He will <em>probably</em> remember tomorrow.</example> + <example type="incorrect">He <em>probably</em> will remember tomorrow.</example> + </rule> + --> + <!-- too many false alarms, e.g. "I am convinced that our suggestions..." + <rule id="I_A_NONBASE" name="'I am' + non-gerund form"> + <pattern mark_from="2"><token regexp="yes">I</token><token regexp="yes">am</token><token postag="VB|VBD|VBN|VBP|VBZ"/>/pattern> + <message>You might need to use the gerund form of the verb here (e.g. 'learning' instead of 'learn').</message> + <example type="correct">I am <em>searching</em> through some fields.</example> + <example type="incorrect">I am <em>searched</em> through some fields.</example> + </rule> + --> + <!-- currently doesn't fail test case :) --> + <rule id="TO_NON_BASE" name="'to' + non-base form"> + <pattern mark_from="1"> + <token>to</token> + <token postag="VBZ"><exception>is</exception><exception postag="NNS|NNP|NNPS" postag_regexp="yes"></exception></token> + </pattern> + <message>You might need to use the base form of the verb here: <suggestion><match no="2" postag="VBP"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">I was surprised to <marker>learn</marker> this.</example> + <example type="correct">He spoke to chosen people.</example> + <example correction="learn" type="incorrect">I was surprised to <marker>learns</marker> this.</example> + </rule> + <rule id="MANY_FEW_UNCOUNTABLE" name="'many/few' + uncountable noun, e.g. 'many (much) food'"> + <!-- fixme: more uncountable nouns --> + <pattern mark_from="1" mark_to="-2"> + <token>as</token> + <token regexp="yes">many|few</token> + <token postag="NN:U" postag_regexp="yes"></token> + <!-- <token regexp="yes">air|money|software|cattle|knowledge|sand|furniture|meat|food|news|success|water|freedom|maturity|intelligence|life|information</token> + --> + <token>as</token> + </pattern> + <message>Use <suggestion>much</suggestion> or <suggestion>little</suggestion> with uncountable nouns.</message> + <short>Grammatical problem with uncountable noun</short> + <example type="correct">John eats as <marker>much</marker> food as Peter.</example> + <example type="correct">John eats as <marker>little</marker> food as Peter.</example> + <example type="incorrect">John eats as <marker>many</marker> food as Peter.</example> + <example type="incorrect">John eats as <marker>few</marker> food as Peter.</example> + </rule> + <!-- + "an information" is used in the legal US jargon, deleting + + longer list but not checked thouroughly: + http://www.geocities.com/Athens/Olympus/7583/ncntlist.html + --> + <rule id="A_UNCOUNTABLE" name="Articles: a + uncountable noun"> + <pattern mark_to="-1"> + <token regexp="yes">a|an</token> + <token regexp="yes">accommodation|advice|access|baggage|bread|damage|equipment|garbage|luggage|money|cattle|knowledge|sand|furniture|meat|food|news|pasta|progress|research|water|freedom|maturity|intelligence|travel|pollution|traffic</token> + <token postag="RP|VBZ|IN|SENT_END" postag_regexp="yes"></token> + </pattern> + <message>Uncountable nouns are usually not used with an indefinite article. Use simply <suggestion>\2</suggestion>.</message> + <short>Uncountable noun with an article</short> + <example type="correct"><marker>The information</marker> in your files is correct.</example> + <example type="correct"><marker>An intelligence</marker> service is known to be corrupt here.</example> + <example correction="Accommodation" type="incorrect"><marker>An accommodation</marker> is too expensive.</example> + </rule> + <rule id="MOST_SOME_OF_NNS" name="Articles: 'most/some of' + plural noun"> + <pattern> + <token regexp="yes">most|some</token> + <token>of</token> + <token postag="NNS" regexp="yes">\p{Lower}+<exception postag="PRP$"></exception></token> + </pattern> + <message>After '\1 of', you should use 'the' (<suggestion>\1 \2 the \3</suggestion>) or simply say '<suggestion>\1 \3</suggestion>'.</message> + <short>Grammatical problem</short> + <example type="correct">Most students do their homework.</example> + <example type="correct">Some of his students do their homework.</example> + <example correction="Most of the students|Most students" type="incorrect"><marker>Most of students</marker> do their homework.</example> + <example type="correct">Buy a collection of most of Rand's works in a CD-ROM format.</example> + <example type="correct"><marker>Some of the students</marker> do their homework.</example> + </rule> + <!-- needs more and more tweaking; + currently the last exception in all rules is a simplification, + it should be more recursive, i.e., there one more rule for all current rules, structured like this: + ... NN !NN.*|JJ.*, ... NN JJ !NN.*|JJ.* --> + <rulegroup id="ARTICLE_MISSING" name="Articles: article missing before a countable noun"> + <rule> + <pattern mark_from="2" mark_to="-1"> + <token><exception postag="DT|WDT|JJ|NN.*" postag_regexp="yes"></exception></token> + <token postag="VBP|VBZ" postag_regexp="yes"><exception regexp="yes">do|does|take[s]*|give[s]*|says|go|goes|becomes</exception><exception postag="NN.*|JJ.*" postag_regexp="yes"></exception></token> + <token postag="NN"><exception postag="DT|RB.*|RP|JJ.*|IN|CC|CD|VBD|VBN|MD|NNP|NNS|NNPS|PRP.*|WRB" postag_regexp="yes"></exception></token> + <token><exception postag="NN.*" postag_regexp="yes"></exception></token> + </pattern> + <message>The article is missing before the noun: <suggestion><match no="3" postag="+DT"></match></suggestion>.</message> + <short>Article missing</short> + <example correction="a friend|the friend" type="incorrect">He is <marker>friend</marker>.</example> + <example type="correct">He is a friend.</example> + <example type="correct">He is my friend.</example> + </rule> + <rule> + <pattern mark_from="2" mark_to="-1"> + <token><exception postag="DT|WDT|JJ|NN.*" postag_regexp="yes"></exception></token> + <token regexp="yes">do|does</token> + <token postag="NN"><exception postag="DT|WRB|RB|RP|JJ|IN|CC|CD|JJR|RBS|VBD|VBN|MD|NNP|NNS|VB|VBP" postag_regexp="yes"></exception></token> + <token><exception postag="NN.*" postag_regexp="yes"></exception></token> + </pattern> + <message>The article is missing before the noun: <suggestion><match no="3" postag="+DT"></match></suggestion>.</message> + <short>Article missing</short> + <example correction="a lot|the lot" type="incorrect">He does <marker>lot</marker> of things.</example> + <example type="correct">He does need us.</example> + <example type="correct">We do have this kind of attitude.</example> + </rule> + <rule> + <pattern mark_from="2" mark_to="-1"> + <token><exception postag="DT|WDT|JJ|NN.*" postag_regexp="yes"></exception></token> + <token regexp="yes">take|takes</token> + <token postag="NN"><exception regexp="yes">place|charge</exception><exception postag="DT|WRB|RB|RP|JJ|IN|CC|CD|JJR|RBS|VBD|VBN|MD|NNP|NNS" postag_regexp="yes"></exception></token> + <token><exception postag="NN.*" postag_regexp="yes"></exception></token> + </pattern> + <message>The article is missing before the noun: <suggestion><match no="3" postag="+DT"></match></suggestion>.</message> + <short>Article missing</short> + <example type="correct">He takes his brother to school.</example> + <example type="correct">The event takes place here.</example> + <example correction="a brother|the brother" type="incorrect">He takes <marker>brother</marker> with him.</example> + </rule> + <rule> + <pattern mark_from="2" mark_to="-1"> + <token><exception postag="DT|WDT|JJ|NN.*" postag_regexp="yes"></exception></token> + <token regexp="yes">give|gives</token> + <token postag="NN"><exception regexp="yes">rise|way|room|vent|rein</exception><exception postag="DT|WRB|RB|RP|JJ|IN|CC|CD|JJR|RBS|VBD|VBN|MD|NNP|NNS" postag_regexp="yes"></exception></token> + <token><exception postag="NN.*" postag_regexp="yes"></exception></token> + </pattern> + <message>The article is missing before the noun: <suggestion><match no="3" postag="+DT"></match></suggestion>.</message> + <short>Article missing</short> + <example type="correct">He gives his brother a bar of chocolate.</example> + <example type="correct">This event gives rise to a new era.</example> + <example correction="a brother|the brother" type="incorrect">He gives <marker>brother</marker> a bar of chocolate.</example> + </rule> + <rule> + <pattern mark_from="2" mark_to="-1"> + <token><exception postag="DT|WDT|JJ|NN.*" postag_regexp="yes"></exception></token> + <token regexp="yes">go|goes</token> + <token postag="NN"><exception>hand</exception><exception postag="DT|WRB|RB|RP|JJ|IN|CC|CD|JJR|RBS|VBD|VBN|MD|NNP|NNS" postag_regexp="yes"></exception></token> + <token><exception postag="NN.*" postag_regexp="yes"></exception></token> + </pattern> + <message>The article is missing before the noun: <suggestion><match no="3" postag="+DT"></match></suggestion>.</message> + <short>Article missing</short> + <example correction="a step|the step" type="incorrect">He goes <marker>step</marker> too far.</example> + <example type="correct">He goes a step too far.</example> + <example type="correct">This goes <marker>hand</marker> in hand...</example> + </rule> + <rule> + <pattern mark_from="2" mark_to="-1"> + <token><exception postag="DT|WDT|JJ|NN.*" postag_regexp="yes"></exception></token> + <token regexp="yes">falls|fall</token> + <token postag="NN"><exception>victim</exception><exception postag="DT|WRB|RB|RP|JJ|IN|CC|CD|JJR|RBS|VBD|VBN|MD|NNP|NNS" postag_regexp="yes"></exception></token> + <token><exception postag="NN.*" postag_regexp="yes"></exception></token> + </pattern> + <message>The article is missing before the noun: <suggestion><match no="3" postag="+DT"></match></suggestion>.</message> + <short>Article missing</short> + <example correction="a tad|the tad" type="incorrect">It falls <marker>tad</marker>.</example> + <example type="correct">Inflation falls a tad.</example> + <example type="correct">The website falls <marker>victim</marker> to...</example> + </rule> + <rule> + <pattern mark_from="2" mark_to="-1"> + <token><exception postag="DT|WDT" postag_regexp="yes"></exception></token> + <token postag="VBP|VBZ" postag_regexp="yes"><exception postag="JJ"></exception></token> + <token postag="JJ"><exception>else</exception><exception postag="VB|RP|RB|CD|IN|CC|MD|VBD|VBN|VBG|DT|WRB" postag_regexp="yes"></exception></token> + <token postag="NN"><exception postag="CC|DT|RB|RP|JJ|IN|CD|JJR|RBS|VBD|VBN|MD|NNS|WRB" postag_regexp="yes"></exception><exception>are</exception></token> + <token><exception postag="NN.*" postag_regexp="yes"></exception></token> + </pattern> + <message>The article is missing before the noun: <suggestion><match no="3" postag="+DT"></match> <match no="4"></match></suggestion>.</message> + <short>Article missing</short> + <example correction="a good friend|the good friend" type="incorrect">He is <marker>good friend</marker>.</example> + <example type="correct">He is a good friend.</example> + </rule> + <!-- this accounts for: I have experienced series... --> + <rule> + <pattern mark_from="2" mark_to="-1"> + <token postag="PRP|NNP" postag_regexp="yes"></token> + <token regexp="yes">have|has|had</token> + <token postag="VBN"><exception postag="VB|RP|WRB|RB|CD|IN|CC|MD" postag_regexp="yes"></exception></token> + <token postag="NN"><exception postag="CC|DT|WDT|RB|RP|JJ|IN|CD|JJR|RBS|VBD|VBN|MD|NNS|NNP" postag_regexp="yes"></exception><exception>are</exception></token> + <token><exception postag="NN.*" postag_regexp="yes"></exception></token> + </pattern> + <message>The article is missing before the noun: <suggestion><match no="3"></match> <match no="4" postag="+DT"></match></suggestion>.</message> + <short>Article missing</short> + <example correction="experienced a problem|experienced the problem" type="incorrect">Recently I have <marker>experienced problem</marker>.</example> + <example type="correct">Recently I have <marker>experienced a problem</marker>.</example> + </rule> + <rule> + <pattern mark_from="2" mark_to="-1"> + <token postag="PRP|NNP" postag_regexp="yes"></token> + <token regexp="yes">have|has|had</token> + <token postag="VBN"><exception postag="VB|RP|WRB|RB|CD|IN|CC|MD" postag_regexp="yes"></exception></token> + <token postag="JJ"><exception postag="VB|RP|WRB|RB|CD|IN|CC|MD|DT|WDT" postag_regexp="yes"></exception></token> + <token postag="NN"><exception postag="CC|DT|RB|RP|JJ|IN|CD|JJR|RBS|VBD|VBN|MD|NNS" postag_regexp="yes"></exception><exception>are</exception></token> + <token><exception postag="NN.*" postag_regexp="yes"></exception></token> + </pattern> + <message>The article is missing before the noun: <suggestion><match no="3"></match> <match no="4" postag="+DT"></match> <match no="5"></match></suggestion>.</message> + <short>Article missing</short> + <example correction="experienced a serious problem|experienced the serious problem" type="incorrect">Recently I have <marker>experienced serious problem</marker>.</example> + <example type="correct">Recently I have <marker>experienced a serious problem</marker>.</example> + </rule> + <!-- and now "an experienced soldier" --> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token><exception postag="PRP.*|NN.*|DT|JJ.*|RB.*|CC|IN|VBG|WRB|WDT|WP\$|WP" postag_regexp="yes"></exception><exception regexp="yes">have|has|had|s|\"|\'|[0-9].*|,|\(|\[</exception></token> + <token postag="VBN|JJ" postag_regexp="yes"><exception>else</exception><exception postag="VB|RP|WRB|RB|CD|IN|CC|MD|NNP|DT" postag_regexp="yes"></exception></token> + <token postag="NN"><exception postag="CC|DT|RB|RP|JJ|IN|CD|JJR|RBS|VBD|VBN|MD|NNS|NNPS|NNP|WRB" postag_regexp="yes"></exception><exception>are</exception></token> + <token><exception postag="NN.*" postag_regexp="yes"></exception></token> + </pattern> + <message>The article is missing before the noun: <suggestion><match no="2" postag="+DT"></match> <match no="3"></match></suggestion>.</message> + <short>Article missing</short> + <example correction="an experienced soldier|the experienced soldier" type="incorrect">He is <marker>experienced soldier</marker>.</example> + <example type="correct">He is <marker>an experienced soldier</marker>.</example> + </rule> + <!-- an extremely experienced soldier --> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token><exception postag="PRP|NNP|DT|JJ|PRP\$|RB.*|CC|WDT" postag_regexp="yes"></exception><exception regexp="yes">have|has|had|s|\"|\'|[0-9].*|,|\(|\[</exception></token> + <token postag="RB.*" postag_regexp="yes"><exception postag="VB|RP|CD|IN|CC|MD" postag_regexp="yes"></exception><exception regexp="yes">not|only|also</exception></token> + <token postag="VBN|JJ" postag_regexp="yes"><exception postag="VB|RP.*|RB|CD|IN|CC|MD|DT|WDT" postag_regexp="yes"></exception></token> + <token postag="NN"><exception postag="WDT|CC|DT|RB|RP|JJ|IN|CD|JJR|RBS|VBD|VBN|MD|NNS" postag_regexp="yes"></exception><exception>are</exception></token> + <token><exception postag="NN.*" postag_regexp="yes"></exception></token> + </pattern> + <message>The article is missing before the noun: <suggestion><match no="2" postag="+DT"></match> <match no="3"></match> <match no="4"></match></suggestion>.</message> + <short>Article missing</short> + <example correction="an extremely experienced soldier|the extremely experienced soldier" type="incorrect">He is <marker>extremely experienced soldier</marker>.</example> + <example type="correct">There is only one catch to this idyllic arrengement.</example> + <example type="correct">He is <marker>an extremely experienced soldier</marker>.</example> + </rule> + <!-- this rule needs to be expanded to all prepositions + so that exceptions could be accounted for properly, i.e., + 'at home' vs. 'a tourist home'; 'for example' vs. 'an example for you' --> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token>at</token> + <token postag="NN"><exception postag="CC|UH|DT|WDT|RP|JJ|IN|CD|JJS|JJR|RBS|VBD|VBN|MD|NNP|NNS" postag_regexp="yes"></exception><exception regexp="yes">anchor|bay|birth|fault|first|hand|home|issue|least|length|liberty|sea|source|stake|table|variance</exception></token> + <token><exception postag="NN.*" postag_regexp="yes"></exception></token> + </pattern> + <message>The article is missing before the noun: <suggestion><match no="2" postag="+DT"></match></suggestion>.</message> + <short>Article missing</short> + <example correction="an airport|the airport" type="incorrect">He was waiting at <marker>airport</marker>.</example> + <example type="correct">He was waiting at <marker>the airport</marker>.</example> + </rule> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token>at</token> + <token postag="JJ"><exception postag="VB|WRB|RB.*|CD|IN|DT|WDT" postag_regexp="yes"></exception></token> + <token postag="NN"><exception postag="DT|WDT|RP|JJ|IN|CD|JJR|RBS|VBD|VBN|MD|NNP|NNS|CC" postag_regexp="yes"></exception><exception>glance</exception></token> + <token><exception postag="NN.*" postag_regexp="yes"></exception><exception>free</exception></token> + </pattern> + <message>The article is missing before the noun: <suggestion><match no="2" postag="+DT"></match> <match no="3"></match></suggestion>.</message> + <short>Article missing</short> + <example correction="a new airport|the new airport" type="incorrect">He was waiting at <marker>new airport</marker>.</example> + <example type="correct">He was waiting at <marker>the new airport</marker>.</example> + </rule> + <rule> + <pattern case_sensitive="yes" mark_from="2" mark_to="-1"> + <token></token> + <token regexp="yes">[Bb]y</token> + <and> + <token postag="NN"><exception postag="CC|UH|DT|WDT|RB|RP|JJ|IN|CD|JJS|JJR|RBS|VBD|VBN|MD|NNP|NNS|WDT|VBG" postag_regexp="yes"></exception><exception regexp="yes">bit|step|way|example|dint|crook|hook|hand|machine|word|cheque|accident|day|means|mistake|name|train|rail|railway|coach|bus|boat|automobile|helicopter|taxi|ambulance|plane|airplane|foot|section|article|page|road|letter|phone|telephone|mail|storm|arrangement|satellite|decree|year-end|lot|profession|district|week|eye|covenant|fiat|ship|car|jowl|tramway</exception></token> + <token negate="yes"><match no="0"></match></token> + </and> + <token><exception postag="NN.*" postag_regexp="yes"></exception><exception>free</exception></token> + </pattern> + <message>The article is missing before the noun: <suggestion><match no="3" postag="+DT"></match></suggestion>.</message> + <short>Article missing</short> + <example correction="a river|the river" type="incorrect">He was waiting by <marker>river</marker>.</example> + <example type="correct">He was waiting by <marker>the river</marker>.</example> + <example type="correct">The attack minute by minute</example> + <example type="correct">He works by <marker>day</marker>.</example> + </rule> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token>by</token> + <token postag="JJ"><exception postag="VB|WRB|RB.*|CD|IN|DT|WDT" postag_regexp="yes"></exception></token> + <token postag="NN"><exception postag="DT|WDT|RP|JJ|IN|CD|JJR|RBS|VBD|VBN|MD|NNP|NNS" postag_regexp="yes"></exception><exception>fiat</exception></token> + <token><exception postag="NN.*" postag_regexp="yes"></exception><exception>free</exception></token> + </pattern> + <message>The article is missing before the noun: <suggestion><match no="2" postag="+DT"></match> <match no="3"></match></suggestion>.</message> + <short>Article missing</short> + <example correction="a small river|the small river" type="incorrect">He was waiting by <marker>small river</marker>.</example> + <example type="correct">He was waiting by <marker>the small river</marker>.</example> + </rule> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token>for</token> + <token postag="NN"><exception postag="UH|CC|VBD|VBG|VBN|DT|WDT|RP|JJ|IN|CD|JJS|JJR|RBS|VBD|MD|NNP|NNS|WRB|PRP\$" postag_regexp="yes"></exception><exception regexp="yes">are|instance|example|sale|word</exception></token> + <token><exception postag="NN.*" postag_regexp="yes"></exception><exception>free</exception></token> + </pattern> + <message>The article is missing before the noun: <suggestion><match no="2" postag="+DT"></match></suggestion>.</message> + <short>Article missing</short> + <example correction="an answer|the answer" type="incorrect">He was waiting for <marker>answer</marker>.</example> + <example type="correct">He was waiting for <marker>your answer</marker>.</example> + <example type="correct"><marker>For example</marker>, he wrote a letter to me.</example> + </rule> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token>for</token> + <token postag="JJ"><exception postag="VBG|VB|WRB|RB.*|CD|IN|DT|WDT" postag_regexp="yes"></exception></token> + <token postag="NN"><exception postag="DT|WDT|RP|JJ|IN|CD|JJR|RBS|VBD|VBN|MD|NNP|NNS" postag_regexp="yes"></exception></token> + <token><exception postag="NN.*" postag_regexp="yes"></exception><exception>free</exception></token> + </pattern> + <message>The article is missing before the noun: <suggestion><match no="2" postag="+DT"></match> <match no="3"></match></suggestion>.</message> + <short>Article missing</short> + <example correction="a swift answer|the swift answer" type="incorrect">He was waiting for <marker>swift answer</marker>.</example> + <example type="correct">He was waiting for <marker>your swift answer</marker>.</example> + <example type="correct"><marker>For example</marker>, he wrote a letter to me.</example> + </rule> + <rule> + <pattern mark_from="2" mark_to="-1"> + <token regexp="yes">day|week</token> + <token>in</token> + <and> + <token postag="NN"><exception postag="VBG|DT|WDT|RP|JJ|IN|CD|JJS|JJR|RBS|VBD|VBN|MD|NNP|NNS" postag_regexp="yes"></exception><exception regexp="yes">fact|hand|paperback|person|retrospect|studio|summary|mood|name|turn|deed|word|outlook|favor|phase|reply|chorus|quest|series|answer|league|contradistinction|absentia|harness</exception></token> + <token negate="yes"><match no="0"></match></token> + </and> + <token><exception postag="NN.*|JJ" postag_regexp="yes"></exception><exception regexp="yes">\d+</exception></token> + </pattern> + <message>The article is missing before the noun: <suggestion><match no="3" postag="+DT"></match></suggestion>.</message> + <short>Article missing</short> + <example correction="a kitchen|the kitchen" type="incorrect">The dog spent all day in <marker>kitchen</marker>.</example> + <example type="correct">He was waiting in the <marker>lobby</marker>.</example> + <example type="correct">I have exhausted myself day in day out</example> + <example type="correct"><marker>In fact</marker>, he wrote a letter to me.</example> + </rule> + <rule> + <!-- day in day out ignored above, checking for 'day' and 'week' --> + <pattern mark_from="2" mark_to="-1"> + <token><exception regexp="yes">day|week</exception></token> + <token>in</token> + <token postag="NN"><exception postag="VBG|DT|WDT|RP|JJ|IN|CD|JJS|JJR|RBS|VBD|VBN|MD|NNP|NNS" postag_regexp="yes"></exception><exception regexp="yes">fact|hand|paperback|person|retrospect|studio|summary|mood|name|turn|deed|word|outlook|favor|phase|reply|chorus|quest|series|answer|league|contradistinction|absentia|harness</exception></token> + <token><exception postag="NN.*|JJ" postag_regexp="yes"></exception><exception regexp="yes">\d+</exception></token> + </pattern> + <message>The article is missing before the noun: <suggestion><match no="3" postag="+DT"></match></suggestion>.</message> + <short>Article missing</short> + <example correction="a lobby|the lobby" type="incorrect">He was waiting in <marker>lobby</marker>.</example> + <example type="correct">He was waiting in the <marker>lobby</marker>.</example> + <example correction="a week|the week" type="incorrect">Later in <marker>week</marker>.</example> + <example type="correct"><marker>In fact</marker>, he wrote a letter to me.</example> + </rule> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token>in</token> + <token postag="JJ"><exception postag="NNP|VBG|VB|WRB|RB.*|CD|IN|DT|WDT" postag_regexp="yes"></exception></token> + <token postag="NN"><exception postag="DT|WDT|RP|JJ.*|IN|CD|RB.*|VBD|VBN|MD|NNP|NNS|NNPS|PRP.*|WRB" postag_regexp="yes"></exception></token> + <token><exception postag="NN.*|JJ" postag_regexp="yes"></exception><exception regexp="yes">\d+</exception></token> + </pattern> + <message>The article is missing before the noun: <suggestion><match no="2" postag="+DT"></match> <match no="3"></match></suggestion>.</message> + <short>Article missing</short> + <example correction="a large lobby|the large lobby" type="incorrect">He was waiting in <marker>large lobby</marker>.</example> + <example type="correct">He was waiting in the <marker>large lobby</marker>.</example> + <example type="correct"><marker>In fact</marker>, he wrote a letter to me.</example> + </rule> + <!-- on --> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token>on</token> + <token postag="NN"><exception postag="CC|UH|DT|WDT|RP|JJ|IN|CD|JJS|JJR|RB.*|VBD|VBN|MD|NNP|NNS|WRB" postag_regexp="yes"></exception><exception regexp="yes">board|display|foot|hand|sale|affidavit|camera|cassette|chat|coach|deposit|diskette|end|file|lease|oath|offer|page|screen|site|strike|target|tour|track|exhibit</exception></token> + <token><exception postag="NN.*" postag_regexp="yes"></exception></token> + </pattern> + <message>The article is missing before the noun: <suggestion><match no="2" postag="+DT"></match></suggestion>.</message> + <short>Article missing</short> + <example correction="a covenant|the covenant" type="incorrect">ACET would not be able to reclaim tax on <marker>covenant</marker>.</example> + <example type="correct">Rob Brydon is Keith and Steve Coogan plays Geoff, seen for the first time on screen</example> + <example type="correct">There is no science on how we are going to adapt.</example> + </rule> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token>on</token> + <token postag="JJ"><exception postag="VBG|VB|WRB|RB.*|CD|IN|DT|WDT|NNP" postag_regexp="yes"></exception></token> + <token postag="NN"><exception postag="CC|DT|WDT|RP|JJ.*|IN|CD|RBS|VBD|VBN|MD|NNP|NNS|NNPS" postag_regexp="yes"></exception></token> + <token><exception postag="NN.*" postag_regexp="yes"></exception><exception>free</exception></token> + </pattern> + <message>The article is missding before the noun: <suggestion><match no="2" postag="+DT"></match> <match no="3"></match></suggestion>.</message> + <short>Article missing</short> + <example correction="a previous page|the previous page" type="incorrect">This remark is on <marker>previous page</marker>.</example> + <example type="correct">This remark is on <marker>the previous page</marker>.</example> + </rule> + <rule> + <!--after, with exception for phrases like 'anecdote after anecdote' (x after x); FIXME: first two tokens should be replaced with a chunk <DT+VBN> marked in a disambig--> + <pattern mark_from="3" mark_to="-1"> + <token><exception postag="DT|WDT" postag_regexp="yes"></exception></token> + <token><exception postag="VBN|VBD" postag_regexp="yes"></exception></token> + <token>after</token> + <and> + <token postag="NN"><exception postag="CC|UH|DT|WDT|RP|JJ.*|IN|CD|RB.*|VBD|VBZ|VBN|MD|NNP|NNS|NNPS|PRP.*|WRB" postag_regexp="yes"></exception></token> + <token negate="yes"><match no="1"></match></token> + </and> + <token><exception postag="NN.*" postag_regexp="yes"></exception><exception>free</exception></token> + </pattern> + <message>The article is probably missing before the noun: <suggestion><match no="4" postag="+DT"></match></suggestion>.</message> + <short>Article missing</short> + <example correction="a week|the week" type="incorrect">Change your filter after <marker>week</marker>.</example> + <example type="correct">Change your filter after one week.</example> + <example type="correct">He told me anecdote after anecdote of that extraordinary man.</example> + </rule> + <rule> + <pattern mark_from="3" mark_to="-1"> + <!-- to exclude phrases like: 'the turned up card' --> + <token><exception postag="DT|WDT" postag_regexp="yes"></exception></token> + <token><exception postag="VBN|VBD" postag_regexp="yes"></exception></token> + <token postag="IN"><exception regexp="yes">as|at|by|for|in|on|to|of|following|than|after</exception><exception postag="JJ.*" postag_regexp="yes"></exception></token> + <token postag="NN"><exception postag="CC|UH|DT|WDT|RP|JJ.*|IN|CD|RB.*|VBD|VBZ|VBN|MD|NNP|NNS|NNPS|PRP.*|WRB" postag_regexp="yes"></exception></token> + <token><exception postag="NN.*" postag_regexp="yes"></exception><exception>free</exception></token> + </pattern> + <message>The article is probably missing before the noun: <suggestion><match no="4" postag="+DT"></match></suggestion>.</message> + <short>Article missing</short> + <example correction="a friend|the friend" type="incorrect">He is talking about <marker>friend</marker>.</example> + <example type="correct">He is talking about a friend.</example> + </rule> + <rule> + <pattern mark_from="3" mark_to="-1"> + <token><exception postag="DT|WDT" postag_regexp="yes"></exception></token> + <token><exception postag="VBN|VBD" postag_regexp="yes"></exception></token> + <token postag="IN"><exception regexp="yes">as|at|by|for|in|on|to|of|following|re</exception><exception postag="JJ.*" postag_regexp="yes"></exception></token> + <token postag="JJ"><exception postag="VBG|VB|WRB|RB.*|CD|IN|DT|WDT|NNP" postag_regexp="yes"></exception></token> + <token postag="NN"><exception postag="CC|DT|WDT|RP|JJ|IN|CD|JJR|RBS|VBD|VBN|MD|NNP|NNS" postag_regexp="yes"></exception></token> + <token><exception postag="NN.*" postag_regexp="yes"></exception><exception>free</exception></token> + </pattern> + <message>The article is missing before the noun: <suggestion><match no="4" postag="+DT"></match> <match no="5"></match></suggestion>.</message> + <short>Article missing</short> + <example correction="a good friend|the good friend" type="incorrect">He is talking about <marker>good friend</marker>.</example> + <example type="correct">He is talking about a good friend.</example> + </rule> + <rule> + <pattern mark_from="2" mark_to="-1"> + <!-- to include phrases like: 'About a month ago,...' + this kind of rules should be added for all above + prepositions with exceptions--> + <token postag="SENT_START"></token> + <token postag="IN"><exception regexp="yes">as|at|by|for|in|on|to|of|following</exception><exception postag="JJ.*" postag_regexp="yes"></exception></token> + <token postag="NN"><exception postag="CC|UH|DT|WDT|RP|JJ.*|IN|CD|RB.*|VBD|VBN|MD|NNP|NNS|NNPS|PRP.*|WRB" postag_regexp="yes"></exception></token> + <token><exception postag="NN.*|JJ" postag_regexp="yes"></exception></token> + </pattern> + <message>The article is missing before the noun: <suggestion><match no="3" postag="+DT"></match></suggestion>.</message> + <short>Article missing</short> + <example correction="a month|the month" type="incorrect">About <marker>month</marker> before I left it was discussed...</example> + <example type="correct">About <marker>a month</marker> before I left it was discussed...</example> + </rule> + <rule> + <pattern mark_from="2" mark_to="-1"> + <!-- to include phrases like: 'About a long month ago,...' --> + <token postag="SENT_START"></token> + <token postag="IN"><exception regexp="yes">as|at|by|for|in|on|to|of|following</exception><exception postag="JJ.*" postag_regexp="yes"></exception></token> + <token postag="JJ"><exception postag="VBG|VB|WRB|RB.*|CD|IN|DT|WDT|NNP" postag_regexp="yes"></exception></token> + <token postag="NN"><exception postag="DT|WDT|RP|JJ|IN|CD|JJR|RBS|VBD|VBN|MD|NNP|NNS" postag_regexp="yes"></exception></token> + <token><exception postag="NN.*|JJ" postag_regexp="yes"></exception></token> + </pattern> + <message>The article is missing before the noun: <suggestion><match no="3" postag="+DT"></match> <match no="4"></match></suggestion>.</message> + <short>Article missing</short> + <example correction="a large boat|the large boat" type="incorrect">About <marker>large boat</marker>.</example> + <example type="correct">About <marker>a large boat</marker>.</example> + </rule> + <rule> + <pattern mark_from="2" mark_to="-1"> + <token><exception regexp="yes">no|any</exception><exception postag="JJ.*" postag_regexp="yes"></exception></token> + <token>such</token> + <token postag="NN"><exception postag="DT|WDT|RP|JJ|IN|CD|JJR|RBS|VBD|VBN|MD|NNP|NNS" postag_regexp="yes"></exception><exception inflected="yes" regexp="yes">be|have</exception></token> + <token><exception postag="NN.*" postag_regexp="yes"></exception><exception>free</exception></token> + </pattern> + <message>The article is missing before the noun: <suggestion><match no="3" postag="+INDT"></match></suggestion>.</message> + <short>Article missing</short> + <example correction="a friend" type="incorrect">He is talking of such <marker>friend</marker>.</example> + <example type="correct">He is talking of such a friend.</example> + <example type="correct">The most famous such organism is Amoeba proteus.</example> + </rule> + <rule> + <pattern mark_from="2" mark_to="-1"> + <token><exception regexp="yes">no|any</exception></token> + <token>such</token> + <token postag="JJ"><exception postag="VBG|VB|WRB|RB.*|CD|IN|DT|WDT|NNP" postag_regexp="yes"></exception></token> + <token postag="NN"><exception postag="DT|WDT|RP|JJ|IN|CD|JJR|RBS|VBD|VBN|MD|NNP|NNS" postag_regexp="yes"></exception></token> + <token><exception postag="NN.*" postag_regexp="yes"></exception><exception>free</exception></token> + </pattern> + <message>The article is missing before the noun: <suggestion><match no="3" postag="+INDT"></match> <match no="4"></match></suggestion>.</message> + <short>Article missing</short> + <example correction="a good friend" type="incorrect">He is talking of such <marker>good friend</marker>.</example> + <example type="correct">He is talking of such a good friend.</example> + </rule> + </rulegroup> + <rulegroup id="AFFORD_VBG" name="'afford', 'choose', 'deserve', 'pretend', 'strive' and 'struggle' used with gerund instead of infinitive"> + <rule> + <pattern mark_from="1"> + <token inflected="yes" regexp="yes">afford|choose|deserve|pretend|strive|struggle</token> + <token postag="VBG"></token> + </pattern> + <message>This verb is used with infinitive: <suggestion>to <match no="2" postag="VB"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">We cannot afford to spend the whole month in Alps.</example> + <example type="correct">He didn't deserve to lose his job.</example> + <example correction="to spend" type="incorrect">We cannot afford <marker>spending</marker> the whole month in Alps.</example> + </rule> + <rule> + <pattern mark_from="2"> + <token inflected="yes" regexp="yes">afford|choose|deserve|pretend|strive|struggle</token> + <token>not</token> + <token postag="VBG"></token> + </pattern> + <message>This verb is used with infinitive: <suggestion>to <match no="3" postag="VB"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">We cannot afford not to spend the whole month in Alps.</example> + <example correction="to spend" type="incorrect">We cannot afford not <marker>spending</marker> the whole month in Alps.</example> + </rule> + </rulegroup> + <rulegroup id="ADVISE_VBG" name="'advise', 'help' and 'remind' used with gerund instead of infinitive"> + <rule> + <pattern mark_from="1"> + <token inflected="yes" regexp="yes">advise|remind</token> + <token postag="VBG"></token> + </pattern> + <message>Verbs 'advise' and 'remind' are used with infinitive: <suggestion>to <match no="2" postag="VB"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">He advised to stay calm.</example> + <example type="correct">He reminded to stay calm.</example> + <example correction="to stay" type="incorrect">He advised <marker>staying</marker> calm.</example> + </rule> + <rule> + <pattern mark_from="2"> + <token inflected="yes" regexp="yes">advise|remind</token> + <token>not</token> + <token postag="VBG"></token> + </pattern> + <message>Verbs 'advise' and 'remind' are used with infinitive: <suggestion>to <match no="3" postag="VB"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">He advised not to stay calm.</example> + <example correction="to stay" type="incorrect">He advised not <marker>staying</marker> calm.</example> + </rule> + <rule> + <pattern mark_from="2"> + <token inflected="yes" regexp="yes">advise|remind</token> + <token postag="PRP"></token> + <token postag="VBG"></token> + </pattern> + <message>Verbs 'advise' and 'remind' are used with infinitive: <suggestion>to <match no="4" postag="VB"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">He advised us to stay calm.</example> + <example type="correct">He helped us to get on the bus.</example> + <example correction="to stay" type="incorrect">He advised us <marker>staying</marker> calm.</example> + </rule> + <rule> + <pattern mark_from="3"> + <token inflected="yes" regexp="yes">advise|remind</token> + <token postag="PRP"></token> + <token>not</token> + <token postag="VBG"></token> + </pattern> + <message>Verbs 'advise' and 'remind' are used with infinitive: <suggestion>to <match no="5" postag="VB"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">He advised us not to stay calm.</example> + <example correction="to stay" type="incorrect">He advised us not <marker>staying</marker> calm.</example> + </rule> + <rule> + <pattern mark_from="4"> + <token><exception regexp="yes">couldn|can</exception></token> + <token><exception regexp="yes">'|could</exception></token> + <token><exception regexp="yes">t|cannot|not</exception></token> + <token inflected="yes">help</token> + <token postag="VBG"></token> + </pattern> + <message>The verb 'help' is used with infinitive: <suggestion>to <match no="5" postag="VB"></match></suggestion> or <suggestion><match no="5" postag="VB"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">All he did was to help to carry the bags.</example> + <example type="correct">But she could not help thinking there must be more to come.</example> + <example correction="to carry|carry" type="incorrect">All he did was to help <marker>carrying</marker> the bags.</example> + </rule> + <rule> + <pattern mark_from="3"> + <token postag="SENT_START"></token> + <token><exception>cannot</exception></token> + <token inflected="yes">help</token> + <token postag="VBG"></token> + </pattern> + <message>The verb 'help' is used with infinitive: <suggestion>to <match no="5" postag="VB"></match></suggestion> or <suggestion><match no="4" postag="VB"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">He helped to carry the bags.</example> + <example correction="to carry|carry" type="incorrect">He helped <marker>carrying</marker> the bags.</example> + </rule> + <rule> + <pattern mark_from="4"> + <token postag="SENT_START"></token> + <token><exception>cannot</exception></token> + <token inflected="yes">help</token> + <token>not</token> + <token postag="VBG"></token> + </pattern> + <message>The verb 'help' is used with infinitive: <suggestion>to <match no="5" postag="VB"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">He helped not to buy some crap.</example> + <example correction="to buy" type="incorrect">He helped not <marker>buying</marker> some crap.</example> + </rule> + <rule> + <pattern mark_from="5"> + <token><exception regexp="yes">couldn|can</exception></token> + <token><exception regexp="yes">'|could</exception></token> + <token><exception regexp="yes">t|cannot|not</exception></token> + <token inflected="yes">help</token> + <token>not</token> + <token postag="VBG"></token> + </pattern> + <message>The verb 'help' is used with infinitive: <suggestion>to <match no="6" postag="VB"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">All he did was to help not to carry the bags.</example> + <example correction="to carry" type="incorrect">All he did was to help not <marker>carrying</marker> the bags.</example> + </rule> + <rule> + <pattern mark_from="4"> + <token postag="SENT_START"></token> + <token><exception>cannot</exception></token> + <token inflected="yes">help</token> + <token postag="PRP"></token> + <token postag="VBG"></token> + </pattern> + <message>The verb 'help' is used with infinitive: <suggestion>to <match no="6" postag="VB"></match></suggestion> or <suggestion><match no="5" postag="VB"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">He helped us to get on the bus.</example> + <example correction="to get|get" type="incorrect">He helped us <marker>getting</marker> on the bus.</example> + </rule> + <rule> + <pattern mark_from="5"> + <token><exception regexp="yes">couldn|can</exception></token> + <token><exception regexp="yes">'|could</exception></token> + <token><exception regexp="yes">t|cannot|not</exception></token> + <token inflected="yes">help</token> + <token postag="PRP"></token> + <token postag="VBG"></token> + </pattern> + <message>The verb 'help' is used with infinitive: <suggestion>to <match no="6" postag="VB"></match></suggestion> or <suggestion><match no="6" postag="VB"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">All he did was to help us to get on the bus.</example> + <example correction="to get|get" type="incorrect">All he did was to help us <marker>getting</marker> on the bus.</example> + </rule> + <rule> + <pattern mark_from="5"> + <token postag="SENT_START"></token> + <token><exception>cannot</exception></token> + <token inflected="yes">help</token> + <token postag="PRP"></token> + <token>not</token> + <token postag="VBG"></token> + </pattern> + <message>The verb 'help' is used with infinitive: <suggestion>to <match no="6" postag="VB"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">He helped us not to stay calm.</example> + <example correction="to stay" type="incorrect">He helped us not <marker>staying</marker> calm.</example> + </rule> + <rule> + <pattern mark_from="6"> + <token><exception regexp="yes">couldn|can</exception></token> + <token><exception regexp="yes">'|could</exception></token> + <token><exception regexp="yes">t|cannot|not</exception></token> + <token inflected="yes">help</token> + <token postag="PRP"></token> + <token>not</token> + <token postag="VBG"></token> + </pattern> + <message>The verb 'help' is used with infinitive: <suggestion>to <match no="7" postag="VB"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">All he did was to help us not to stay calm.</example> + <example correction="to stay" type="incorrect">All he did was to help us not <marker>staying</marker> calm.</example> + </rule> + </rulegroup> + <rulegroup id="THIS_NNS" name="'this' vs. 'these'"> + <rule> + <pattern mark_to="-2"> + <token>this</token> + <token postag="NNS"><exception postag="VBZ|NN|JJ.*" postag_regexp="yes"></exception></token> + <token><exception postag="NN|NNP|NN:.*" postag_regexp="yes"></exception></token> + </pattern> + <message>Did you mean <suggestion>these</suggestion>?</message> + <short>Grammatical problem</short> + <example type="correct">These errors are easy to fix.</example> + <example type="incorrect"><marker>This</marker> errors are easy to fix.</example> + <example correction="These" type="correct">This forms a sharp contract with...</example> + </rule> + <rule> + <pattern mark_to="-1"> + <token regexp="yes">these|those</token> + <token postag="NN|NN:.*" postag_regexp="yes"><exception postag="VBZ|VBG|NNS|JJ.*|VBP|MD|CD|RP|DT" postag_regexp="yes"></exception><exception>are</exception></token> + <token><exception postag="NNS|NNPS" postag_regexp="yes"></exception></token> + </pattern> + <message>Did you mean <suggestion>this <match no="2"></match></suggestion> or <suggestion><match no="1"></match> <match no="2" postag="NNS"></match></suggestion>?</message> + <short>Grammatical problem</short> + <example type="correct">These are errors.</example> + <example type="correct">These errors are easy to fix.</example> + <example correction="This kind|These kinds" type="incorrect"><marker>These kind</marker> of errors are easy to fix.</example> + <example correction="This error|These errors" type="incorrect"><marker>These error</marker> are easy to fix.</example> + <example type="correct">This forms a sharp contract with...</example> + <example type="correct">These eleven authors are right.</example> + </rule> + <rule> + <pattern mark_to="-1"> + <token postag="SENT_START"></token> + <token>this</token> + <token regexp="yes">are|were</token> + </pattern> + <message>Did you mean <suggestion>these</suggestion>?</message> + <short>Grammatical problem</short> + <example type="correct">These are errors.</example> + <example correction="These" type="incorrect"><marker>This</marker> are errors.</example> + </rule> + <rule> + <pattern mark_to="-1"> + <token postag="SENT_START"></token> + <token regexp="yes">these|those</token> + <token regexp="yes">is|was</token> + </pattern> + <message>Did you mean <suggestion>this</suggestion>?</message> + <short>Grammatical problem</short> + <example type="correct">These are errors.</example> + <example correction="This" type="incorrect"><marker>These</marker> was an error.</example> + </rule> + </rulegroup> + <rule id="A_MUCH_NN1" name="Superfluous article before 'much', e.g. 'a much work'"> + <pattern mark_from="0" mark_to="-1"> + <token>a</token> + <token>much</token> + <token postag="NN|NN:U|NN:UN" postag_regexp="yes"><exception postag="JJR"></exception></token> + </pattern> + <message>Maybe you should omit the article "a", leaving only <suggestion>much</suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">This will be <marker>much</marker> work.</example> + <example type="incorrect">This will be <marker>a much</marker> work.</example> + <example type="correct">These concerns now seem a much bolder move.</example> + </rule> + <rule id="MOST_SUPERLATIVE" name="No 'more' or 'most' before superlatives"> + <pattern> + <token regexp="yes">more|most</token> + <token postag="JJS|RBS" postag_regexp="yes"></token> + </pattern> + <message>Use only <suggestion>\2</suggestion> (without '\1') when you use the superlative.</message> + <short>Grammatical problem</short> + <example type="correct">Kyoto is the <marker>oldest</marker> city.</example> + <example correction="oldest" type="incorrect">Kyoto is the <marker>most oldest</marker> city.</example> + </rule> + <rule id="MOST_COMPARATIVE" name="No 'more' or 'most' before comparatives"> + <pattern mark_to="-1"> + <token regexp="yes">more|most</token> + <token postag="JJR|RBR" postag_regexp="yes"></token> + <token postag="NN.*|IN" postag_regexp="yes"></token> + </pattern> + <message>Use only <suggestion>\2</suggestion> (without '\1') when you use the comparative.</message> + <short>Grammatical problem</short> + <example type="correct">Kyoto is an <marker>older</marker> city.</example> + <example type="incorrect">Kyoto is a <marker>more older</marker> city.</example> + <example type="correct">When is more better?</example> + </rule> + <rule id="THE_SUPERLATIVE" name="No indefinite article ('a'/'an') before superlatives"> + <pattern mark_from="0" mark_to="-1"> + <token regexp="yes">a|an</token> + <token postag="JJS|RBS" postag_regexp="yes"><exception>most</exception></token> + </pattern> + <message>Use <suggestion>the</suggestion> with the superlative.</message> + <short>Grammatical problem</short> + <example type="correct">Kyoto is <marker>the</marker> oldest city.</example> + <example type="correct">And Truly It Is <marker>a</marker> Most Glorious Thing</example> + <example type="incorrect">Kyoto is <marker>an</marker> oldest city.</example> + </rule> + <rulegroup id="DID_BASEFORM" name="Non-infinitive verb after 'did'"> + <rule> + <pattern mark_from="3"> + <token negate="yes">than</token> + <token><exception regexp="yes">free|that|who|which|whom|a|the</exception></token> + <token regexp="yes">did|will|could|can|should|would|does</token> + <token postag="(VBD|VBG|VBZ)" postag_regexp="yes"><exception postag="VBP|NNP" postag_regexp="yes"></exception><exception inflected="yes">be</exception></token> + </pattern> + <message>The verb '<match no="3"></match>' requires base form of the verb: <suggestion><match no="4" postag="VB"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">They will <marker>come</marker> home.</example> + <!-- 'did' is used for emphasis here: --> + <example type="correct">All I did was to go to the cinema.</example> + <example type="correct">Peter did <marker>go</marker> to the cinema.</example> + <example type="correct">They commonly produce much stronger odors than they would sitting under water in a western toilet.</example> + <example correction="go|wend" type="incorrect">Peter did <marker>went</marker> to the cinema.</example> + <example correction="walk" type="incorrect">He did <marker>walked</marker> to his house.</example> + <example correction="walk" type="incorrect">He did <marker>walking</marker> to his house.</example> + <example correction="come" type="incorrect">They will <marker>comes</marker> home.</example> + <example correction="walk" type="incorrect">He did <marker>walks</marker> to his house.</example> + <example correction="come" type="incorrect">They will <marker>came</marker> home.</example> + </rule> + <rule> + <pattern mark_from="4"> + <token negate="yes">than</token> + <token><exception regexp="yes">free|that|who|which|whom|a|the</exception></token> + <token regexp="yes">did|will|could|can|should|would|does</token> + <token>not</token> + <token postag="(VBD|VBG|VBZ)" postag_regexp="yes"><exception postag="VBP"></exception><exception inflected="yes">be</exception></token> + </pattern> + <message>The verb '<match no="3"></match>' requires base form of the verb: <suggestion><match no="5" postag="VB"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">Since he does not <marker>have</marker> any connection with us...</example> + <example correction="have" type="incorrect">Since he does not <marker>has</marker> any connection with us...</example> + </rule> + <rule> + <pattern mark_from="5"> + <token negate="yes">than</token> + <token><exception regexp="yes">free|that|who|which|whom|a|the</exception></token> + <token regexp="yes">didn|won|couldn|can|shouldn|wouldn|doesn</token> + <token>'</token> + <token>t</token> + <token postag="(VBD|VBG|VBZ)" postag_regexp="yes"><exception postag="VBP"></exception><exception inflected="yes">be</exception></token> + </pattern> + <message>The verb '<match no="3"></match>'t' requires base form of this verb: <suggestion><match no="6" postag="VB"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">Since he doesn't <marker>have</marker> any connection with us...</example> + <example correction="have" type="incorrect">Since he doesn't <marker>has</marker> any connection with us...</example> + </rule> + </rulegroup> + <rule id="MUST_HAVE_TO" name="'must to' instead of 'have to'"> + <pattern mark_to="-1"> + <token>must</token> + <token>to</token> + <token postag="VB"></token> + </pattern> + <message>After 'must', the verb is used without 'to'. Probably, you should use <suggestion>must</suggestion> or <suggestion>have to</suggestion> here.</message> + <short>Grammatical problem</short> + <example type="correct">I must go shopping.</example> + <example correction="must|have to" type="incorrect">I <marker>must to</marker> go shopping.</example> + </rule> + <!-- TODO: support rulegroups? + <rulegroup id="WILL_MIGHT_BASE" name="Infinitive verb after auxiliary verb"> + <rulegroup id="IS_PASSIVE" name="Passive after 'is' and 'was'"> + --> + <rule id="AS_ADJ_AS" name="Comparison with 'as'"> + <pattern mark_from="2"> + <token>as</token> + <token postag="JJ|RB" postag_regexp="yes"><exception>other</exception></token> + <token regexp="yes">like|than|then</token> + </pattern> + <message>Comparison is written "as \2 <suggestion>as</suggestion>".</message> + <short>Grammatical problem</short> + <example type="correct">This house is as big <marker>as</marker> mine.</example> + <example type="incorrect">This house is as big <marker>than</marker> mine.</example> + <example type="correct">This box contains as much <marker>as</marker> possible.</example> + <example type="incorrect">This box contains as much <marker>like</marker> possible.</example> + <example type="correct">It is inappropriate to cite this document as other than work in progress.</example> + </rule> + <rule id="EAGER_TO" name="Non-infinitive verb with 'eager to...'"> + <pattern mark_from="2"> + <token>eager</token> + <token>to</token> + <token postag="(VBG|VBZ|VBN|VBD)" postag_regexp="yes"></token> + </pattern> + <message>With 'eager to', use the base form of the verb: <suggestion><match no="3" postag="VB"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">I'd be eager to <marker>try</marker> out your patch.</example> + <example type="correct">Bangladesh eager to <marker>buy</marker> cars from Iran'</example> + <example correction="try" type="incorrect">I'd be eager to <marker>trying</marker> out your patch.</example> + <example correction="buy" type="incorrect">Bangladesh eager to <marker>buying</marker> cars from Iran'</example> + <example correction="buy" type="incorrect">Bangladesh eager to <marker>bought</marker> cars from Iran'</example> + </rule> + <!-- 106(less..)+319(more...) in complete BNC, all(?) because "...as" --> + <rulegroup id="COMP_THAN" name="Comparison with 'than', e.g. 'bigger then (than)'"> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token regexp="yes">more|less</token> + <token>as</token> + <token><exception regexp="yes">to|if|follows|early|much|though</exception></token> + </pattern> + <message>Comparison requires <suggestion>than</suggestion>, not 'then' nor 'as'.</message> + <short>Grammatical problem</short> + <example type="correct">The tagger will return more <marker>than</marker> one tag.</example> + <example type="incorrect">The tagger will return more <marker>as</marker> one tag.</example> + <example type="triggers_error">Think of it more <marker>as</marker> activity.</example> + </rule> + <rule> + <pattern mark_from="1"> + <token regexp="yes">more|less</token> + <token>then</token> + </pattern> + <message>Comparison requires <suggestion>than</suggestion>, not 'then' nor 'as'.</message> + <short>Grammatical problem</short> + <example type="correct">The tagger will return more <marker>than</marker> one tag.</example> + <example type="incorrect">The tagger will return more <marker>then</marker> one tag.</example> + </rule> + <rule> + <pattern mark_from="1" mark_to="-2"> + <token postag="JJR"><exception postag="IN"></exception></token> + <token regexp="yes">(then|as)</token> + <token negate_pos="yes" postag="DT"><exception regexp="yes">follows|if|early|much|though|to</exception></token> + <!-- the below condition fixed a false alarm - + 'these cheeses just get firmer as water evaporates' --> + <token><exception postag="VB.*" postag_regexp="yes"></exception></token> + </pattern> + <message>Comparison requires <suggestion>than</suggestion>, not 'then' nor 'as'.</message> + <short>Grammatical problem</short> + <example type="correct">This house is bigger <marker>than</marker> mine.</example> + <example type="incorrect">This house is bigger <marker>then</marker> mine.</example> + <example type="correct">This palace was used later as a prison.</example> + </rule> + </rulegroup> + <!-- TODO + <rule id="VB_TO_USE" name="Past tense of 'used to...'"> + <pattern mark_to="-2"><token postag="VB"/<token>to</token><token>use</token></pattern> + <message>Use the past tense to build a sentence with "to use".</message> + <example type="correct">Aethera <em>used</em> to use this.</example> + <example type="incorrect">Aethera <em>use</em> to use this.</example> + </rule> + --> + <rule id="MORE_A_JJ" name="Word order: 'more a ...' instead of 'a more ...'"> + <pattern> + <token>more<exception regexp="yes" scope="previous">no|much</exception></token> + <token regexp="yes">a|an</token> + <token postag="JJ|VBN" postag_regexp="yes"></token> + </pattern> + <message>Did you mean <suggestion>a more \3</suggestion>?</message> + <short>Grammatical problem</short> + <example type="correct">I can give you <marker>a more detailed</marker> description of what's necessary.</example> + <example correction="a more detailed" type="incorrect">I can give you <marker>more a detailed</marker> description of what's necessary.</example> + <example correction="a more analyzed" type="incorrect">I wish it was <marker>more an analyzed</marker> case</example> + <example type="correct">It is no more a component.</example> + </rule> + <!-- this works now, and accounts for subjunctive + i.e., she recommended that he use his money... --> + <rulegroup id="NON3PRS_VERB" name="Agreement error: Third person verb with a non-third person pronoun"> + <rule> + <pattern mark_from="1"> + <token regexp="yes">I|we|you|they</token> + <token postag="VBZ"></token> + </pattern> + <message>The pronoun '<match no="1"></match>' must be used with a non-third-person form of a verb: <suggestion><match no="2" postag="VB"></match></suggestion></message> + <short>Grammatical problem</short> + <example correction="work" type="incorrect">I <marker>works</marker> here.</example> + <example type="correct">You <marker>make</marker> a lot of mistakes.</example> + </rule> + <rule> + <pattern case_sensitive="yes" mark_from="1" mark_to="-1"> + <token postag="SENT_START"></token> + <token>Has</token> + <token regexp="yes">I|we|you|they</token> + </pattern> + <message>The pronoun \3 must be used with <suggestion>Have</suggestion>.</message> + <example correction="Have" type="incorrect"><marker>Has</marker> you bought a ticket?</example> + <example type="correct">Have you done this?</example> + </rule> + <rule> + <pattern case_sensitive="no" mark_from="2" mark_to="-1"> + <token postag="SENT_START"></token> + <token postag="WRB|WP" postag_regexp="yes"></token> + <token>has</token> + <token regexp="yes">I|we|you|they</token> + </pattern> + <message>The pronoun \3 must be used with <suggestion>have</suggestion>.</message> + <example correction="have" type="incorrect">What <marker>has</marker> you done?</example> + <example type="correct">Why have you done this?</example> + </rule> + <rule> + <pattern case_sensitive="yes" mark_from="1" mark_to="-1"> + <token postag="SENT_START"></token> + <token>Is</token> + <token regexp="yes">we|you|they</token> + </pattern> + <message>The pronoun \3 must be used with <suggestion>Are</suggestion>.</message> + <example correction="Are" type="incorrect"><marker>Is</marker> you crazy?</example> + <example type="correct">Is this true?</example> + </rule> + <rule> + <pattern case_sensitive="yes" mark_from="1" mark_to="-1"> + <token postag="SENT_START"></token> + <token>Is</token> + <token>I</token> + </pattern> + <message>The pronoun \3 must be used with <suggestion>Am</suggestion>.</message> + <example correction="Am" type="incorrect"><marker>Is</marker> I crazy?</example> + <example type="correct">Is this true?</example> + </rule> + <rule> + <pattern case_sensitive="no" mark_from="2" mark_to="-1"> + <token postag="SENT_START"></token> + <token postag="WRB|WP" postag_regexp="yes"></token> + <token>is</token> + <token regexp="yes">we|you|they</token> + </pattern> + <message>The pronoun \3 must be used with <suggestion>are</suggestion>.</message> + <example correction="are" type="incorrect">What <marker>is</marker> you doing?</example> + <example type="correct">Why are you doing this?</example> + </rule> + <rule> + <pattern case_sensitive="no" mark_from="2" mark_to="-1"> + <token postag="SENT_START"></token> + <token postag="WRB|WP" postag_regexp="yes"></token> + <token>is</token> + <token>I</token> + </pattern> + <message>The pronoun \3 must be used with <suggestion>am</suggestion>.</message> + <example correction="am" type="incorrect">Why <marker>is</marker> I in love?</example> + <example type="correct">Why am I doing this?</example> + </rule> + </rulegroup> + <rulegroup id="HE_VERB_AGR" name="Agreement error: Non-third person verb with 'he/she'"> + <rule> + <pattern mark_from="2"> + <token negate="yes" regexp="yes"><exception inflected="yes" regexp="yes">hear|see|insist</exception>(that|has|will|must|could|can|should|would|does|did|is|may|might|t|let|was)</token> + <token regexp="yes">he|she|someone|somebody|nobody|anyone</token> + <token postag="VB|VBG|VBP" postag_regexp="yes"><exception postag="VBN|VBD|JJ.*|RB|MD" postag_regexp="yes"></exception></token> + </pattern> + <message>The pronoun '<match no="2"></match>' must be used with a third-person verb: <suggestion><match no="3" postag="VBZ"></match></suggestion>.</message> + <short>Agreement error</short> + <example type="correct">He <marker>walks</marker> to the building.</example> + <example correction="walks" type="incorrect">He <marker>walk</marker> to the building.</example> + <example type="correct">He cannot hear you.</example> + <example correction="enters" type="incorrect">Somebody <marker>enter</marker> the building.</example> + <example type="correct">His medics insist he rest for several more months.</example> + <example type="correct">He <marker>walked</marker> to the building.</example> + </rule> + <rule> + <pattern mark_from="3"> + <token negate="yes" regexp="yes"><exception inflected="yes" regexp="yes">hear|see</exception>(that|has|will|must|could|can|should|would|does|did|is|may|might|t|was)</token> + <token regexp="yes">he|she|someone|somebody|nobody|anyone</token> + <token postag="RB"></token> + <token postag="VB|VBG|VBP" postag_regexp="yes"><exception postag="VBN|VBD|JJ.*|RB|MD" postag_regexp="yes"></exception></token> + </pattern> + <message>The pronoun '<match no="2"></match>' must be used with a third-person verb: <suggestion><match no="4" postag="VBZ"></match></suggestion>.</message> + <short>Agreement error</short> + <example type="correct">He always <marker>walks</marker> to the building.</example> + <example correction="walks" type="incorrect">He always <marker>walk</marker> to the building.</example> + <example correction="enters" type="incorrect">Somebody usually <marker>enter</marker> the building.</example> + <example type="correct">He <marker>walked</marker> to the building.</example> + </rule> + <rule> + <pattern mark_from="3"> + <token negate="yes" regexp="yes"><exception inflected="yes" regexp="yes">hear|see</exception>(that|has|will|must|could|can|should|would|does|did|is|may|might|t|s|let|was)</token> + <token regexp="yes">someone|somebody|nobody|anyone</token> + <token>else</token> + <token postag="VB|VBG|VBP" postag_regexp="yes"><exception postag="VBN|VBD|JJ.*|RB|MD" postag_regexp="yes"></exception></token> + </pattern> + <message>The pronoun '<match no="2"></match>' must be used with a third-person verb: <suggestion><match no="4" postag="VBZ"></match></suggestion>.</message> + <short>Agreement error</short> + <example type="correct">Nobody else <marker>walks</marker> to the building.</example> + <example correction="walks" type="incorrect">Someone else <marker>walk</marker> to the building.</example> + <example correction="enters" type="incorrect">Somebody else <marker>enter</marker> the building.</example> + <example type="correct">Nobody <marker>walked</marker> to the building.</example> + </rule> + <rule> + <pattern mark_from="4"> + <token negate="yes" regexp="yes"><exception inflected="yes" regexp="yes">hear|see</exception>(that|has|will|must|could|can|should|would|does|did|is|may|might|t|let|was)</token> + <token regexp="yes">someone|somebody|nobody|anyone</token> + <token>else</token> + <token postag="RB"></token> + <token postag="VB|VBG|VBP" postag_regexp="yes"><exception postag="VBN|VBD|JJ.*|RB|MD" postag_regexp="yes"></exception></token> + </pattern> + <message>The pronoun '<match no="2"></match>' must be used with a third-person verb: <suggestion><match no="5" postag="VBZ"></match></suggestion>.</message> + <short>Agreement error</short> + <example type="correct">Nobody else <marker>walks</marker> to the building.</example> + <example correction="walks" type="incorrect">Someone else always <marker>walk</marker> to the building.</example> + <example correction="enters" type="incorrect">Somebody else usually <marker>enter</marker> the building.</example> + <example type="correct">Nobody <marker>walked</marker> to the building.</example> + </rule> + <!-- subjunctive with 'that' --> + <rule> + <pattern mark_from="3"> + <token postag="VB.*" postag_regexp="yes"></token> + <token>that</token> + <token regexp="yes">he|she|someone|somebody|nobody|anyone</token> + <token postag="VBG" postag_regexp="yes"></token> + </pattern> + <message>'He' in subjunctive clause must be used base form of the verb: <suggestion><match no="4" postag="VB"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">She recommended that he <marker>walk</marker> to the building.</example> + <example correction="walk" type="incorrect">She stipulates that he <marker>walking</marker> to the building.</example> + <example type="correct">He <marker>walked</marker> to the building.</example> + </rule> + <!-- subjunctive without 'that' --> + <rule> + <pattern mark_from="2"> + <token postag="VB.*" postag_regexp="yes"><exception regexp="yes">was|is</exception><exception inflected="yes" regexp="yes">hear|see</exception></token> + <token regexp="yes">he|she|someone|somebody|nobody|anyone</token> + <token postag="VBG" postag_regexp="yes"></token> + </pattern> + <message>The word '<match no="2"></match>' in subjunctive clause must be used with a base form of a verb: <suggestion><match no="3" postag="VB"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">She recommended he <marker>walk</marker> to the building.</example> + <example correction="walk" type="incorrect">She stipulates he <marker>walking</marker> to the building.</example> + <example type="correct">He <marker>walked</marker> to the building.</example> + <example type="correct">What is he doing here at this hour?</example> + <example type="correct">And why was she crying?</example> + </rule> + <rule> + <pattern mark_from="2" mark_to="-1"> + <token><exception regexp="yes">(that|has|will|must|could|can|should|would|does|did|is|was|may|might|t|let)</exception><exception inflected="yes" regexp="yes">hear|see</exception><exception postag="CC|IN|DT|MD" postag_regexp="yes"></exception></token> + <token postag="NNP" regexp="yes">.{2,}<exception postag="JJ|CC|RP|DT|PRP\$|NNPS|NNS|IN|RB|WRB" postag_regexp="yes"></exception></token> + <token postag="VB|VBP" postag_regexp="yes" regexp="yes">\p{Lower}+<exception postag="VBN|VBD|JJ|IN|MD" postag_regexp="yes"></exception></token> + <token postag="IN|DT" postag_regexp="yes"></token> + </pattern> + <message>The proper name in singular (<match no="2"></match>) must be used with a third-person verb: <suggestion><match no="3" postag="VBZ"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">Bill <marker>walks</marker> to the building.</example> + <example correction="walks" type="incorrect">Ann <marker>walk</marker> to the building.</example> + <example type="correct">Guiness <marker>walked</marker> to the building.</example> + <example type="correct">Roosevelt and Hoover speak each other's lines.</example> + <example type="correct">Boys are at higher risk for autism than girls.</example> + <example type="correct">In reply, he said he was too old for this.</example> + <example type="correct">I can see Bill looking through the window.</example> + </rule> + <rule> + <pattern case_sensitive="yes" mark_from="1" mark_to="-1"> + <token postag="SENT_START"></token> + <token regexp="yes">Have|Are|Am</token> + <token regexp="yes">he|she|someone|somebody|nobody|anyone</token> + </pattern> + <message>The pronoun <match no="3"></match> must be used with <suggestion><match no="2" postag="VBZ"></match></suggestion>.</message> + <short>Agreement error</short> + <example correction="Has" type="incorrect"><marker>Have</marker> she bought a ticket?</example> + <example type="correct">Has anyone done this?</example> + </rule> + <rule> + <pattern case_sensitive="yes" mark_from="1" mark_to="-1"> + <token postag="SENT_START"></token> + <token regexp="yes">Have|Are|Am</token> + <token postag="NNP" regexp="yes">.{2,}<exception postag="JJ|CC|RP|DT|PRP\$|NNPS|NNS|IN|RB|WRB" postag_regexp="yes"></exception></token> + </pattern> + <message>The singular proper name <match no="3"></match> must be used with <suggestion><match no="2" postag="VBZ"></match></suggestion>.</message> + <short>Agreement error</short> + <example correction="Has" type="incorrect"><marker>Have</marker> Mary bought a ticket?</example> + <example type="correct">Has Jack done this?</example> + </rule> + <rule> + <pattern case_sensitive="no" mark_from="2" mark_to="-1"> + <token postag="SENT_START"></token> + <token postag="WRB|WP" postag_regexp="yes"></token> + <token regexp="yes">Have|Are|Am</token> + <token regexp="yes">he|she|someone|somebody|nobody|anyone</token> + </pattern> + <message>The pronoun <match no="4"></match> must be used with <suggestion><match no="3" postag="VBZ"></match></suggestion>.</message> + <short>Agreement error</short> + <example correction="has" type="incorrect">When <marker>have</marker> he bought a ticket?</example> + <example type="correct">Why has anyone done this?</example> + </rule> + <rule> + <pattern case_sensitive="no" mark_from="2" mark_to="-1"> + <token postag="SENT_START"></token> + <token postag="WRB|WP" postag_regexp="yes"></token> + <token regexp="yes">Have|Are|Am</token> + <token postag="NNP" regexp="yes">.{2,}<exception postag="JJ|CC|RP|DT|PRP\$|NNPS|NNS|IN|RB|WRB" postag_regexp="yes"></exception></token> + </pattern> + <message>The singular proper name <match no="4"></match> must be used with <suggestion><match no="3" postag="VBZ"></match></suggestion>.</message> + <short>Agreement error</short> + <example correction="has" type="incorrect">When <marker>have</marker> Mary bought a ticket?</example> + <example type="correct">Why has Mary done this?</example> + </rule> + </rulegroup> + <!-- TODO: fix false alarm for "one of you thinks ...", "even though the world around you thinks" + <rule id="I_VERB_AGR" name="Agreement error: third person verb with 'I'"> + <pattern mark_from="1"><token regexp="yes">I|we|they|you</token><token postag="VBZ"/></pattern> + <message>'I' must be used with a non-third person verb, e.g. 'I think'</message> + <example type="correct">I <em>think</em> that is quite fair.</example> + <example type="correct">Don't you <em>think</em> that is quite fair?</example> + <example type="incorrect">I <em>thinks</em> that is quite fair.</example> + <example type="incorrect">Don't you <em>thinks</em> that is quite fair?</example> + </rule> + --> + <rulegroup id="PRP_PAST_PART" name="Agreement error: past participle without 'have'"> + <rule> + <pattern mark_from="2"> + <token postag="SENT_START" skip="-1"><exception inflected="yes" postag="V.*" postag_regexp="yes" regexp="yes" scope="next">have|be</exception></token> + <token postag="PRP"></token> + <token postag="VBN"><exception postag="VBD|VBP" postag_regexp="yes"></exception></token> + </pattern> + <message>Possible grammatical error. You used a past participle without using any required verb ('be' or 'have'). Did you mean <suggestion><match no="3" postag="VBD" postag_regexp="yes"></match></suggestion>?</message> + <example correction="did" type="incorrect">He <marker>done</marker> it.</example> + <example type="correct">It was done by him.</example> + </rule> + </rulegroup> + <rule id="EQUALLY_AS" name="equally+as (equally)"> + <pattern> + <token>equally</token> + <token>as</token> + </pattern> + <message>Don't say 'equally as'. You can use either <suggestion>equally</suggestion> or <suggestion>as</suggestion> on its own. When comparing two nouns, use <suggestion>just as</suggestion>.</message> + <short>Grammatical problem</short> + <example correction="equally|as|just as" type="incorrect">This model is <marker>equally as</marker> effective.</example> + <example type="correct">This model is equally effective.</example> + <example type="correct">My new grammar checker is just as slow as the old one.</example> + </rule> + <rulegroup id="CANT_HELP_BUT" name="can't help but (can't help+gerund)"> + <rule> + <pattern mark_from="3"> + <token>cannot</token> + <token>help</token> + <token>but</token> + <token postag="VB"></token> + </pattern> + <message>This is a nonstandard phrase. Use <suggestion><match no="4" postag="VBG"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example correction="falling" type="incorrect">I cannot help but <marker>fall</marker> in love with you.</example> + <example type="correct">I cannot help <marker>falling</marker> in love with you.</example> + </rule> + <rule> + <pattern mark_from="5"> + <token>can</token> + <token>'</token> + <token>t</token> + <token>help</token> + <token>but</token> + <token postag="VB"></token> + </pattern> + <message>This is a nonstandard phrase. Use <suggestion><match no="6" postag="VBG"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example correction="falling" type="incorrect">I can't help but <marker>fall</marker> in love with you.</example> + <example type="correct">I <marker>can't help falling</marker> in love with you.</example> + </rule> + </rulegroup> + <rule id="IF_OR_NOT" name="if or not (whether or not)"> + <pattern> + <token>if</token> + <token>or</token> + <token>not</token> + </pattern> + <message>This is a non-standard phrase. Did you mean <suggestion>whether or not</suggestion>?</message> + <short>Grammatical problem</short> + <example type="correct">It's not certain whether communication with the site's customer service has led it to be clear <marker>whether or not</marker> this is true.</example> + <example correction="whether or not" type="incorrect">It's not certain whether communication with the site's customer service has led it to be clear <marker>if or not</marker> this is true.</example> + </rule> + <rule id="KIND_OF_A" name="'kind/type/sort of a/an'"> + <pattern> + <token regexp="yes">kind|sort|type</token> + <token>of</token> + <token regexp="yes">an|a</token> + </pattern> + <message>Don't include '\3' after a classification term. Use simply <suggestion>\1 \2</suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">What kind of man is Bush?</example> + <example correction="kind of" type="incorrect">What <marker>kind of a</marker> man is Bush?</example> + </rule> + <rule id="REASON_IS_BECAUSE" name="'the reason... is because'"> + <pattern mark_from="2"> + <token>the</token> + <token skip="6">reason</token> + <token>is</token> + <token>because</token> + </pattern> + <!-- or <suggestion>because</suggestion> --> + <message>Probably an incorrect phrase. Use 'the reason <suggestion>is that</suggestion>'.</message> + <short>Grammatical problem</short> + <example correction="is that" type="incorrect">The reason we were late <marker>is because</marker> there was an accident.</example> + <example type="correct">The reason we were late <marker>is that</marker> there was an accident.</example> + </rule> + <rule id="BECAUSE_OF_I" name="because of we (because we)"> + <pattern> + <token>because</token> + <token>of</token> + <token regexp="yes">I|he|she|we|they</token> + </pattern> + <message>Probably usage error. Use <suggestion>\1 \3</suggestion> instead.</message> + <short>Grammatical problem</short> + <example correction="Because we" type="incorrect"><marker>Because of we</marker> didn't want a big train, but we want a fast train.</example> + <example type="correct"><marker>Because we</marker> didn't want a big train, but we want a fast train.</example> + </rule> + <rule id="BOTH_AS_WELL_AS" name="both... as well as (and)"> + <pattern mark_from="1"> + <token skip="-1">both<exception scope="next">and</exception></token> + <token>as</token> + <token>well</token> + <token>as</token> + </pattern> + <message>Probably usage error. Use <suggestion>and</suggestion> after 'both'.</message> + <short>Grammatical problem</short> + <example type="correct">He is both rich and handsome.</example> + <example correction="and" type="incorrect">He is both very rich <marker>as well as</marker> handsome.</example> + </rule> + <rule id="ACCORDING_TO_ME" name="according to me (in my opinion)"> + <pattern> + <token postag="SENT_START"></token> + <token>according</token> + <token>to</token> + <token>me</token> + </pattern> + <message>This phrase can sound awkward in English. Consider using <suggestion>in my opinion</suggestion> or <suggestion>I think</suggestion>.</message> + <short>Grammatical problem</short> + <example type="correct">In my opinion, this is a great movie.</example> + <example type="incorrect"><marker>According to me</marker>, this is a great movie.</example> + </rule> + <rulegroup id="AFRAID_OF_HEIGHT" name="'afraid of' + singular"> + <rule> + <pattern mark_from="2" mark_to="-1"> + <token>afraid</token> + <token>of</token> + <token postag="NN"><exception postag="NNS|NNPS|NN:U.*" postag_regexp="yes"></exception><exception regexp="yes">dark|wind|rain</exception></token> + <token><exception postag="JJ.*|NN.*" postag_regexp="yes"></exception></token> + </pattern> + <message>The noun should be probably in the plural form: <suggestion><match no="3" postag="NNS|NNPS" postag_regexp="yes"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example correction="spiders" type="incorrect">I'm afraid of <marker>spider</marker>.</example> + <example type="correct">I'm afraid of <marker>heights</marker>.</example> + </rule> + <rule> + <pattern mark_from="3" mark_to="-1"> + <token>afraid</token> + <token>of</token> + <token postag="JJ.*" postag_regexp="yes"><exception postag="NNS|NNPS" postag_regexp="yes"></exception></token> + <token postag="NN:.*" postag_regexp="yes"><exception postag="NNS|NNPS" postag_regexp="yes"></exception></token> + <token><exception postag="JJ.*|NN.*" postag_regexp="yes"></exception></token> + </pattern> + <message>The noun should be probably in the plural form: <suggestion><match no="4" postag="NNS|NNPS" postag_regexp="yes"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example correction="spaces" type="incorrect">I'm afraid of open <marker>space</marker>.</example> + <example type="correct">I'm afraid of open <marker>spaces</marker>.</example> + </rule> + <rule> + <pattern mark_from="2" mark_to="-1"> + <token>afraid</token> + <token>of</token> + <token regexp="yes">dark|wind|rain</token> + <token><exception postag="JJ.*|NN.*" postag_regexp="yes"></exception></token> + </pattern> + <message>You probably should use this form here: <suggestion>the \3</suggestion>.</message> + <short>Grammatical problem</short> + <example type="incorrect">I'm afraid of <marker>dark</marker>.</example> + <example type="correct">I'm afraid of <marker>the dark</marker>.</example> + </rule> + </rulegroup> + <rule id="DOES_XX_CAN" name="Wrong usage of modal verbs in questions"> + <pattern> + <token postag="SENT_START"></token> + <token regexp="yes">Does|Do</token> + <token postag="NN:U|PRP\$|PRP" postag_regexp="yes"></token> + <token postag="MD"><exception>need</exception></token> + </pattern> + <message>Possibly wrong usage of '\2' in the question. Did you mean: <suggestion>\4 \3</suggestion>.</message> + <short>Grammatical problem</short> + <example correction="Can someone" type="incorrect"><marker>Does someone can</marker> reproduce what I described before?</example> + <example type="correct"><marker>Can someone</marker> reproduce what I described before?</example> + <example type="correct">Do you need anything?</example> + </rule> + <rulegroup id="THERE_S_MANY" name="Possible agreement error 'there's' + plural noun"> + <rule> + <pattern> + <token>there</token> + <token>'</token> + <token>s</token> + <token postag="NNS|NNPS" postag_regexp="yes"><exception postag="NN:.*|NN|NNP|JJ.*|DT" postag_regexp="yes"></exception></token> + </pattern> + <message>Did you mean <suggestion>\1're \4</suggestion>?</message> + <short>Possible agreement error</short> + <example correction="There're problems" type="incorrect"><marker>There's problems</marker> in Iraq but it is not a terrible situation.</example> + <example type="correct">There're problems in Iraq.</example> + </rule> + <rule> + <pattern> + <token>there</token> + <token>'</token> + <token>s</token> + <token postag="DT|JJ.*" postag_regexp="yes"><exception postag="NN:.*|NN|NNP" postag_regexp="yes"></exception></token> + <token postag="NNS|NNPS" postag_regexp="yes"><exception postag="NN:.*|NN|NNP|DT" postag_regexp="yes"></exception></token> + </pattern> + <message>Did you mean <suggestion>\1're \4 \5</suggestion>?</message> + <short>Possible agreement error</short> + <example correction="There're many problems" type="incorrect"><marker>There's many problems</marker> in Iraq but it is not a terrible situation.</example> + <example type="correct">There're many problems in Iraq.</example> + </rule> + <rule> + <pattern> + <token>there</token> + <token>is</token> + <token postag="NNS|NNPS" postag_regexp="yes"><exception postag="NN:.*|NN|NNP|JJ.*|DT|RB" postag_regexp="yes"></exception></token> + </pattern> + <message>Did you mean <suggestion>\1 are \3</suggestion>?</message> + <short>Possible agreement error</short> + <example correction="There are problems" type="incorrect"><marker>There is problems</marker> in Iraq but it is not a terrible situation.</example> + <example type="correct">There are problems in Iraq.</example> + <example type="correct">There is sometimes a problem with this rule.</example> + </rule> + <rule> + <pattern> + <token>there</token> + <token>is</token> + <token postag="DT|JJ.*" postag_regexp="yes"><exception postag="NN:.*|NN|NNP" postag_regexp="yes"></exception></token> + <token postag="NNS|NNPS" postag_regexp="yes"><exception postag="NN:.*|NN|NNP|DT" postag_regexp="yes"></exception></token> + </pattern> + <message>Did you mean <suggestion>\1 are \3 \4</suggestion>?</message> + <short>Possible agreement error</short> + <example correction="There are many problems" type="incorrect"><marker>There is many problems</marker> in Iraq but it is not a terrible situation.</example> + <example type="correct">There are many problems in Iraq.</example> + </rule> + </rulegroup> + <rulegroup id="THERE_RE_MANY" name="Possible agreement error 'there're' + singular noun"> + <rule> + <pattern mark_to="-1"> + <token>there</token> + <token>'</token> + <token>re</token> + <token postag="NN:.*|NN|NNP" postag_regexp="yes"><exception postag="NNS|NNPS|JJ.*|DT" postag_regexp="yes"></exception></token> + <token><exception postag="NNS|NNPS" postag_regexp="yes"></exception></token> + </pattern> + <message>Did you mean <suggestion><match no="1"></match>'re <match no="4" postag="NNS|NNPS" postag_regexp="yes"></match></suggestion>?</message> + <short>Possible agreement error</short> + <example correction="There're problems" type="incorrect"><marker>There're problem</marker> in Iraq but it is not a terrible situation.</example> + <example type="correct">There're problems in Iraq.</example> + </rule> + <rule> + <pattern mark_to="-1"> + <token>there</token> + <token>'</token> + <token>re</token> + <token postag="DT|JJ.*" postag_regexp="yes"><exception postag="NNS|NNPS" postag_regexp="yes"></exception><exception regexp="yes">a|an</exception></token> + <token postag="NN:.*|NN|NNP" postag_regexp="yes"><exception postag="NNS|NNPS" postag_regexp="yes"></exception></token> + <token><exception postag="NNS|NNPS" postag_regexp="yes"></exception></token> + </pattern> + <message>Did you mean <suggestion><match no="1"></match>'re <match no="4"></match> <match no="5" postag="NNS|NNPS" postag_regexp="yes"></match></suggestion>?</message> + <short>Possible agreement error</short> + <example correction="There're many problems" type="incorrect"><marker>There're many problem</marker> in Iraq but it is not a terrible situation.</example> + <example type="correct">There're many problems in Iraq.</example> + </rule> + <rule> + <pattern> + <token>there</token> + <token>'</token> + <token>re</token> + <token regexp="yes">a|an</token> + <token postag="NN:.*|NN|NNP" postag_regexp="yes"><exception postag="NNS|NNPS|JJ.*" postag_regexp="yes"></exception></token> + </pattern> + <message>Did you mean <suggestion><match no="1"></match>'s <match no="4"></match> <match no="5"></match></suggestion>?</message> + <short>Possible agreement error</short> + <example correction="There's a lot" type="incorrect"><marker>There're a lot</marker> problem in Iraq but it is not a terrible situation.</example> + <example type="correct">There's a whole lot of problems in Iraq.</example> + </rule> + <rule> + <pattern mark_to="-1"> + <token>there</token> + <token>are</token> + <token postag="NN:.*|NN|NNP" postag_regexp="yes"><exception postag="NNS|NNPS|JJ.*|DT" postag_regexp="yes"></exception></token> + <token><exception postag="NNS|NNPS" postag_regexp="yes"></exception></token> + </pattern> + <message>Did you mean <suggestion><match no="1"></match> are <match no="3" postag="NNS|NNPS" postag_regexp="yes"></match></suggestion>?</message> + <short>Possible agreement error</short> + <example correction="There are problems" type="incorrect"><marker>There are problem</marker> in Iraq but it is not a terrible situation.</example> + <example type="correct">There are problems in Iraq.</example> + </rule> + <rule> + <pattern mark_to="-1"> + <token>there</token> + <token>are</token> + <token postag="DT|JJ.*" postag_regexp="yes"><exception postag="NNS|NNPS" postag_regexp="yes"></exception><exception regexp="yes">a|an</exception></token> + <token postag="NN:.*|NN|NNP" postag_regexp="yes"><exception postag="NNS|NNPS" postag_regexp="yes"></exception></token> + <token><exception postag="NNS|NNPS" postag_regexp="yes"></exception></token> + </pattern> + <message>Possible agreement error. Did you mean <suggestion><match no="1"></match> are <match no="3"></match> <match no="4" postag="NNS|NNPS" postag_regexp="yes"></match></suggestion>?</message> + <short>Grammatical problem</short> + <example correction="There are many problems" type="incorrect"><marker>There are many problem</marker> in Iraq but it is not a terrible situation.</example> + <example type="correct">There are many problems in Iraq.</example> + </rule> + <rule> + <pattern> + <token>there</token> + <token>are</token> + <token regexp="yes">a|an</token> + <token postag="NN:.*|NN|NNP" postag_regexp="yes"><exception postag="NNS|NNPS|JJ.*" postag_regexp="yes"></exception></token> + </pattern> + <message>Possible agreement error. Did you mean <suggestion><match no="1"></match> is <match no="3"></match> <match no="4"></match></suggestion>?</message> + <short>Grammatical problem</short> + <example correction="There is a lot" type="incorrect"><marker>There are a lot</marker> problem in Iraq but it is not a terrible situation.</example> + <example type="correct">There is a whole lot of problems in Iraq.</example> + </rule> + </rulegroup> + <rule id="A_LOT_OF_NN" name="Possible agreement error: 'a lot/bunch/couple of' + singular countable noun"> + <pattern mark_to="-1"> + <token>a</token> + <token regexp="yes">lot|bunch|couple|lack</token> + <token>of</token> + <token postag="NN|NNP" postag_regexp="yes"><exception postag="NN:U|NNS|NNPS|JJ.*" postag_regexp="yes"></exception></token> + <token><exception postag="NNS|NNPS" postag_regexp="yes"></exception><exception>'</exception></token> + </pattern> + <message>Possible agreement error. The noun <match no="4"></match> seems to be countable, so probably you should use: <suggestion>a <match no="2"></match> of <match no="4" postag="NNS|NNPS" postag_regexp="yes"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example correction="a lot of cars" type="incorrect">I have <marker>a lot of car</marker>.</example> + <example type="correct">I have <marker>a lot of cars</marker>.</example> + <example type="correct">I have <marker>a lot of wine</marker>.</example> + </rule> + <rule id="LOTS_OF_NN" name="Possible agreement error: 'lots/plenty of' + singular countable noun"> + <pattern mark_to="-1"> + <token regexp="yes">lots|plenty</token> + <token>of</token> + <token postag="NN|NNP" postag_regexp="yes"><exception postag="NN:.*|NNS|NNPS|JJ.*" postag_regexp="yes"></exception></token> + <token><exception postag="NNS|NNPS" postag_regexp="yes"></exception><exception>'</exception></token> + </pattern> + <message>Possible agreement error. The noun <match no="3"></match> seems to be countable, so probably you should use: <suggestion><match no="1"></match> of <match no="3" postag="NNS|NNPS" postag_regexp="yes"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example correction="lots of books" type="incorrect">I have got <marker>lots of book</marker>.</example> + <example type="correct">I have got <marker>lots of books</marker>.</example> + <example type="correct">I have got <marker>lots of wine</marker>.</example> + </rule> + <rule id="CD_NN" name="Possible agreement error: numeral + singular countable noun"> + <pattern mark_to="-1"> + <token postag="CD"><exception regexp="yes">one|thou|zero</exception></token> + <token postag="NN:UN|NN" postag_regexp="yes"><exception postag="NN:U|NNS|NNPS|JJ.*|IN" postag_regexp="yes"></exception><exception>will</exception></token> + <token><exception postag="NN.*" postag_regexp="yes"></exception><exception>'</exception></token> + </pattern> + <message>Possible agreement error. The noun <match no="2"></match> seems to be countable, so probably you should use: <suggestion><match no="1"></match> <match no="2" postag="NNS|NNPS" postag_regexp="yes"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example correction="five books" type="incorrect">I have <marker>five book</marker>.</example> + <example type="correct">I have <marker>ten books</marker>.</example> + <example type="correct">I have <marker>one bottle</marker> of wine.</example> + <example type="correct">I have two book readers in my palmtop.</example> + </rule> + <rule id="MANY_NN" name="Possible agreement error: 'many/several/few' + singular countable noun"> + <pattern mark_to="-1"> + <token regexp="yes">many|several|few</token> + <token postag="NN:UN|NN|NNP" postag_regexp="yes"><exception postag="NN:U|NNS|NNPS|JJ.*|MD|CC" postag_regexp="yes"></exception><exception inflected="yes">be</exception></token> + <token><exception postag="NN.*" postag_regexp="yes"></exception><exception>'</exception></token> + </pattern> + <message>Possible agreement error. The noun <match no="2"></match> seems to be countable, so probably you should use: <suggestion><match no="1"></match> <match no="2" postag="NNS|NNPS" postag_regexp="yes"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example correction="several books" type="incorrect">I have <marker>several book</marker>.</example> + <example type="correct">I have <marker>many books</marker>.</example> + <example type="correct">I have <marker>much wine</marker>.</example> + <example correction="many ways" type="incorrect">... which is right in <marker>many way</marker>.</example> + </rule> + <rulegroup id="DT_JJ_NO_NOUN" name="Missing noun after an adjective"> + <rule> + <pattern mark_to="-1"> + <token regexp="yes">a|an</token> + <token postag="JJ"><exception postag="NN.*" postag_regexp="yes"></exception></token> + <token postag="SENT_END"><exception postag="NN.*" postag_regexp="yes"></exception></token> + </pattern> + <message>Probably a noun is missing in this part of the sentence.</message> + <example type="incorrect">This is <marker>an absurd</marker>.</example> + <example type="correct">This is an absurd opinion.</example> + </rule> + <rule> + <pattern mark_to="-1"> + <token regexp="yes">a|an</token> + <token postag="JJ"><exception postag="NN.*" postag_regexp="yes"></exception></token> + <token postag="VBZ"><exception postag="NN.*" postag_regexp="yes"></exception></token> + </pattern> + <message>Probably a noun is missing in this part of the sentence.</message> + <example type="incorrect"><marker>An absurd</marker> is making my existence meaningless.</example> + <example type="correct">An absurd existence is meaningless.</example> + </rule> + </rulegroup> + <rulegroup id="MANY_NN_U" name="Possible agreement error: 'many/several/few' + uncountable noun"> + <rule> + <pattern mark_to="-1"> + <token>many</token> + <token postag="NN:U" postag_regexp="yes"><exception postag="NN:UN|NN|NNP|NNS|NNPS|JJ.*" postag_regexp="yes"></exception></token> + <token><exception postag="NNS|NNPS|CC" postag_regexp="yes"></exception><exception>'</exception></token> + </pattern> + <message>Possible agreement error. The noun <match no="2"></match> seems to be uncountable, so probably you should use: <suggestion>much <match no="2"></match></suggestion>, <suggestion>a good deal of <match no="2"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example correction="much wine|a good deal of wine" type="incorrect">I have <marker>many wine</marker>.</example> + <example type="correct">I have <marker>much wine</marker>.</example> + <example type="correct">How many wine bars are there in Cheshire?</example> + </rule> + <rule> + <pattern mark_to="-3"> + <token>many</token> + <token postag="NN:U" postag_regexp="yes"><exception postag="NN:UN|NN|NNP|NNS|NNPS|JJ.*" postag_regexp="yes"></exception></token> + <token postag="CC"></token> + <token><exception postag="NNS|NNPS" postag_regexp="yes"></exception></token> + <token><exception postag="NNS|NNPS" postag_regexp="yes"></exception></token> + </pattern> + <message>Possible agreement error. The noun <match no="2"></match> seems to be uncountable, so probably you should use: <suggestion>much <match no="2"></match></suggestion>, <suggestion>a good deal of <match no="2"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example correction="much wine|a good deal of wine" type="incorrect">There are <marker>many wine</marker> and a lot is happening this spring.</example> + <example type="correct">There are many wine and food festivals this spring.</example> + </rule> + <rule> + <pattern mark_to="-1"> + <token>few</token> + <token postag="NN:U" postag_regexp="yes"><exception postag="NN:UN|NN|NNP|NNS|NNPS|JJ.*" postag_regexp="yes"></exception></token> + <token><exception postag="NNS|NNPS" postag_regexp="yes"></exception><exception>'</exception></token> + </pattern> + <message>Possible agreement error. The noun <match no="2"></match> seems to be uncountable, so probably you should use: <suggestion>little <match no="2"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example correction="little wine" type="incorrect">I have a <marker>few wine</marker>.</example> + <example type="correct">I have <marker>little wine</marker>.</example> + </rule> + <rule> + <pattern mark_to="-3"> + <token>few</token> + <token postag="NN:U" postag_regexp="yes"><exception postag="NN:UN|NN|NNP|NNS|NNPS|JJ.*" postag_regexp="yes"></exception></token> + <token postag="CC"></token> + <token><exception postag="NNS|NNPS" postag_regexp="yes"></exception></token> + <token><exception postag="NNS|NNPS" postag_regexp="yes"></exception><exception>'</exception></token> + </pattern> + <message>Possible agreement error. The noun <match no="2"></match> seems to be uncountable, so probably you should use: <suggestion>little <match no="2"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example correction="little wine" type="incorrect">There is <marker>few wine</marker> and a lot is happening this spring.</example> + <example type="correct">There are few wine and food festivals this spring.</example> + </rule> + <rule> + <pattern mark_to="-1"> + <token>several</token> + <token postag="NN:U" postag_regexp="yes"><exception postag="NN:UN|NN|NNP|NNS|NNPS|JJ.*" postag_regexp="yes"></exception></token> + <token><exception postag="NNS|NNPS" postag_regexp="yes"></exception><exception>'</exception></token> + </pattern> + <message>Possible agreement error. The noun <match no="2"></match> seems to be uncountable, so probably you should use: <suggestion>some <match no="2"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example correction="some wine" type="incorrect">I have <marker>several wine</marker>.</example> + <example type="correct">I have <marker>some wine</marker>.</example> + </rule> + <rule> + <pattern mark_to="-3"> + <token>several</token> + <token postag="NN:U" postag_regexp="yes"><exception postag="NN:UN|NN|NNP|NNS|NNPS|JJ.*" postag_regexp="yes"></exception></token> + <token postag="CC"></token> + <token><exception postag="NNS|NNPS" postag_regexp="yes"></exception></token> + <token><exception postag="NNS|NNPS" postag_regexp="yes"></exception><exception>'</exception></token> + </pattern> + <message>Possible agreement error. The noun <match no="2"></match> seems to be uncountable, so probably you should use: <suggestion>some <match no="2"></match></suggestion>.</message> + <short>Grammatical problem</short> + <example correction="some wine" type="incorrect">There is <marker>several wine</marker> and a lot is happening this spring.</example> + <example type="correct">There are several wine and food festivals this spring.</example> + </rule> + </rulegroup> + <rulegroup id="NOT_NOTHING" name="Wrong negated forms ('not... nothing' instead 'not... anything')"> + <rule> + <pattern mark_from="2"> + <token inflected="yes" regexp="yes"><exception scope="previous">or</exception>not|nobody|nothing|never</token> + <token postag="VB.*" postag_regexp="yes" skip="1"></token> + <token regexp="yes"><exception negate_pos="yes" postag="PRP|VB.*" postag_regexp="yes" scope="previous"></exception>nothing|nobody|nowhere</token> + </pattern> + <message>Double negation. You probably should say <suggestion><match no="3" regexp_match="no(.*)" regexp_replace="any$1"></match></suggestion>.</message> + <example correction="anything" type="incorrect">Nobody told me <marker>nothing</marker>.</example> + <example type="correct">Nobody told me anything.</example> + </rule> + </rulegroup> + </category> + <category name="Collocations"> + <rulegroup id="SUPERIOR_THAN" name="Wrong preposition: 'superior/inferior than' (superior/inferior to)"> + <rule> + <pattern mark_from="1"> + <token regexp="yes"><exception scope="previous">more</exception>superior|inferior</token> + <token>than</token> + </pattern> + <message>The adjective \1 is normally used with <suggestion>to</suggestion>.</message> + <short>Wrong collocation</short> + <example correction="to" type="incorrect">Chinese people will think black guys are inferior <marker>than</marker> us.</example> + <example type="correct">Some people think Afroamericans are inferior to them.</example> + </rule> + <rule> + <pattern mark_from="0"> + <token>more</token> + <token regexp="yes">superior|inferior</token> + <token>than</token> + </pattern> + <message>The adjective \1 is normally used with to and does not need 'more' (so called implicit comparative). Probably you need to write: <suggestion>\2 to</suggestion>.</message> + <short>Wrong collocation</short> + <example correction="inferior to" type="incorrect">Chinese people will think black guys are <marker>more inferior than</marker> us.</example> + <example type="correct">Some people think Afroamericans are inferior to them.</example> + </rule> + </rulegroup> + <rule id="TODAY_MORNING" name="Wrong phrase: 'today morning' (this morning)"> + <pattern> + <token>today</token> + <token regexp="yes">morning|afternoon|evening</token> + </pattern> + <message>This is a non-standard collocation. Normally, <suggestion>this \2</suggestion> is used.</message> + <short>Wrong collocation</short> + <example correction="this evening" type="incorrect">I'm going home <marker>today evening</marker>.</example> + <example type="correct">I'm going homo this evening.</example> + </rule> + <rule id="YESTERDAY_NIGHT" name="Wrong phrase: 'yesterday night' (last night)"> + <pattern> + <token>yesterday</token> + <token>night</token> + </pattern> + <message>This is a non-standard collocation. Normally, <suggestion>last night</suggestion> is used.</message> + <short>Wrong collocation</short> + <example correction="last night" type="incorrect">I was there <marker>yesterday night</marker>.</example> + <example type="correct">I was there last night.</example> + </rule> + <rule id="TODAY_NIGHT" name="Wrong phrase: 'today night' (tonight)"> + <pattern> + <token>today</token> + <token>night</token> + </pattern> + <message>This is a non-standard collocation. Normally, <suggestion>tonight</suggestion> is used instead.</message> + <short>Wrong collocation</short> + <example correction="tonight" type="incorrect">I'm going fishing <marker>today night</marker>.</example> + <example type="correct">I'm going fishing tonight.</example> + </rule> + </category> + <!-- ====================================================================== --> + <!-- Miscellaneous --> + <!-- ====================================================================== --> + <category name="Miscellaneous"> + <rulegroup id="CURRENCY" name="Position of currency symbols: '100$' ($100)"> + <rule> + <pattern> + <token regexp="yes">\d+[$€£¥\u8371]</token> + </pattern> + <message>The currency mark is usually put at the beginning of the number: <suggestion><match no="1" regexp_match="(\d+)([$€£¥\u8371])" regexp_replace="$2$1"></match></suggestion>.</message> + <short>Put currency at the beginning</short> + <example correction="$100" type="incorrect">You owe me <marker>100$</marker>.</example> + <example type="correct">You owe me $100.</example> + </rule> + <rule> + <pattern> + <token regexp="yes">\d+</token> + <token regexp="yes">[$€£¥\u8371]</token> + </pattern> + <message>The currency mark is usually put at the beginning of the number: <suggestion>\2\1</suggestion>.</message> + <short>Put currency at the beginning</short> + <example correction="$100" type="incorrect">You owe me <marker>100 $</marker>.</example> + <example type="correct">You owe me $100.</example> + </rule> + </rulegroup> + <rulegroup id="EN_QUOTES" name="Smart quotes (“”)"> + <rule> + <pattern> + <token postag="``"></token> + </pattern> + <message>Use a smart opening quote here: <suggestion>“</suggestion>.</message> + <short>Use smart quotes</short> + <example correction="“" type="incorrect">This is a (<marker>"</marker>test").</example> + <example correction="“" type="incorrect"><marker>"</marker>Test"!</example> + <example type="correct">“Test”!</example> + <example correction="“" type="incorrect">This is another <marker>"</marker>test".</example> + </rule> + <rule> + <pattern> + <token postag="''"></token> + </pattern> + <message>Use a smart closing quote here: <suggestion>”</suggestion>.</message> + <example correction="”" type="incorrect">This is a ("test<marker>"</marker>)</example> + <example correction="”" type="incorrect">Use a quote "here<marker>"</marker> to say something.</example> + <example correction="”" type="incorrect">This is another "test<marker>"</marker>.</example> + <example type="correct">“Test”!</example> + </rule> + </rulegroup> + <rule default="off" id="ELLIPSIS" name="Smart ellipsis (…)"> + <pattern> + <token>.</token> + <token>.</token> + <token>.</token> + </pattern> + <message>Use typographical ellipsis character here instead: <suggestion>…</suggestion>.</message> + <example correction="…" type="incorrect">This is important <marker>. . .</marker> as far as I know.</example> + <example type="correct">This is important – as far as I know.</example> + <example correction="…" type="incorrect">This is important<marker>...</marker> as far as I know.</example> + </rule> + <rule id="CONTRACTED_FORM_NOT" name="shouldn't not (shouldn't)"> + <pattern> + <token regexp="yes">ain|aren|can|couldn|didn|doesn|don|hasn|isn|mightn|mustn|shan|shouldn|weren|won|wouldn</token> + <token>'</token> + <token>t</token> + <token>not</token> + </pattern> + <message>You used a negation after a negated contracted verb. Did you mean simply <suggestion>\1\2\3</suggestion>?</message> + <short>Negation after negation</short> + <example correction="shouldn't" type="incorrect">You <marker>shouldn't not</marker> do it!</example> + <example type="correct">You shouldn't do it!</example> + </rule> + <rule id="ALSO_SENT_END" name="'also' at the end of the sentence"> + <pattern mark_to="-1"> + <token>also</token> + <token>.</token> + </pattern> + <message>'Also' is not used at the end of the sentence. Use <suggestion>as well</suggestion> instead.</message> + <short>'Also' at the end of sentence</short> + <example type="correct">You will also buy some eggs.</example> + <example correction="as well" type="incorrect">You will buy some eggs <marker>also</marker>.</example> + </rule> + <rule id="THE_EXACTLY_THE" name="Duplicated 'the' surrounding an adverb"> + <pattern> + <token>the</token> + <token postag="RB"><exception>way</exception></token> + <token>the</token> + </pattern> + <message>Duplicated 'the' in the phrase: '\1 \2 \3'. Did you mean <suggestion>\2 \3</suggestion>?</message> + <short>Duplicated 'the'</short> + <example type="correct">It is exactly the same thing.</example> + <example correction="really the" type="incorrect">That’s <marker>the really the</marker> point of these songs.</example> + <example correction="exactly the" type="incorrect">It is <marker>the exactly the</marker> same thing.</example> + <example type="correct">This is the way the music dies.</example> + </rule> + <rulegroup id="DT_DT" name="Two consecutive articles, e.g. 'the a'"> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token><exception postag="VB.*" postag_regexp="yes"></exception></token> + <token regexp="yes">a|an|the</token> + <token postag="DT" regexp="yes">a|an|the</token> + <token><exception regexp="yes">'|\.</exception></token> + </pattern> + <message>Maybe you need to remove the second determiner so that only <suggestion>\2</suggestion> is left.</message> + <short>Two consecutive articles</short> + <example type="correct"><marker>The</marker> thing is this.</example> + <example correction="The" type="incorrect"><marker>The a</marker> thing is this.</example> + <example type="correct">The Thames was once a much broader river.</example> + </rule> + <rule> + <pattern mark_from="0" mark_to="-1"> + <token postag="DT" regexp="yes">a|an|the</token> + <token>this</token> + <token><exception regexp="yes">'|\.</exception></token> + </pattern> + <message>Maybe you need to remove the second determiner so that only <suggestion>\1</suggestion> or <suggestion>\2</suggestion> is left.</message> + <short>Two consecutive articles</short> + <example correction="a|this" type="incorrect">I like <marker>a this</marker> dog.</example> + <example type="correct">I like this dog.</example> + <example correction="the|this" type="incorrect">This is <marker>the this</marker> idea I was talking about!</example> + </rule> + <rule> + <pattern mark_from="0" mark_to="-1"> + <token regexp="yes">a|an|the</token> + <token regexp="yes" spacebefore="yes">['"“]</token> + <token postag="DT" regexp="yes" spacebefore="no">a|an|the</token> + <token><exception regexp="yes">'|\.</exception></token> + </pattern> + <message>Maybe you need to remove the second determiner so that only <suggestion>\1</suggestion> or <suggestion>\2\3</suggestion> is left.</message> + <short>Two consecutive articles</short> + <example correction="The|'An" type="incorrect"><marker>The 'an</marker> international movie' is interesting.</example> + <example type="correct">The Thames was once a much broader river.</example> + </rule> + </rulegroup> + <rule id="AN_ANOTHER" name="an another (an / another)"> + <pattern> + <token>an</token> + <token>another</token> + <token></token> + </pattern> + <message>One of these determiners is redundant in this context. Choose only one: <suggestion><match no="3" postag="+INDT"></match></suggestion> or <suggestion><match no="2"></match> <match no="3"></match></suggestion>.</message> + <short>Redundant determiner</short> + <example correction="a lonely|another lonely" type="incorrect">It's <marker>an another lonely</marker> night.</example> + <example type="correct">It's another lonely night.</example> + </rule> + <rulegroup id="PHRASE_REPETITION" name="Repetition of two words ('at the at the')"> + <!-- made more general--> + <rule> + <pattern> + <token negate_pos="yes" postag="SENT_START" regexp="yes"><exception>and</exception>\p{L}+</token> + <token regexp="yes"><exception>and</exception>\p{L}+</token> + <token><match no="0"></match></token> + <token><match no="1"></match></token> + </pattern> + <message>This phrase is duplicated. You should probably leave only <suggestion>\1 \2</suggestion>.</message> + <short>Duplicated phrase</short> + <example correction="at the" type="incorrect">Hepatology <marker>at the at the</marker> turn of centuries.</example> + <example type="correct">Hepatology <marker>at the</marker> turn of centuries.</example> + <example type="incorrect">Again he returned to the study and placed the lamp <marker>on the on the</marker> table</example> + <example type="correct">Again he returned to the study and placed the lamp <marker>on the</marker> table</example> + <example type="incorrect">A handicapped accessible shuttle bus is available <marker>from the from the</marker> Purdue University parking lot.</example> + <example type="correct">All we wanted to do was to stand very quietly and look and look and look.</example> + <example type="correct">A handicapped accessible shuttle bus is available <marker>from the</marker> Purdue University parking lot.</example> + </rule> + </rulegroup> + <rulegroup id="I_VE_A" name="Non-standard contractions '(I've a...)'"> + <rule> + <pattern> + <token></token> + <token>'</token> + <token>ve</token> + <token regexp="yes">a|an</token> + </pattern> + <message>This is a non-standard contraction. Use <suggestion>\1 have \4</suggestion> or <suggestion>\1've got \4</suggestion> to express possession.</message> + <short>Non-standard contraction</short> + <example type="correct">I've got a new car.</example> + <example correction="I have a|I've got a" type="incorrect"><marker>I've a</marker> new car.</example> + </rule> + <rule> + <pattern> + <token>'</token> + <token>ve</token> + <token postag="CD"></token> + </pattern> + <message>This is a non-standard contraction. Use <suggestion>have \3</suggestion> or <suggestion>'ve got</suggestion> to express possession.</message> + <short>Non-standard contraction</short> + <example type="correct">I've got three new cars.</example> + <example correction="have three|'ve got" type="incorrect">I<marker>'ve three</marker> new cars.</example> + </rule> + </rulegroup> + </category> + <category name="Punctuation Errors"> + <rulegroup default="off" id="EG_NO_COMMA" name="'e.g.' without a comma"> + <rule> + <pattern mark_to="-1"> + <token>e</token> + <token>.</token> + <token>g</token> + <token>.</token> + <token negate="yes">,</token> + </pattern> + <message>The comma is missing here:<suggestion>e.g.,</suggestion>.</message> + <short>Punctuation error</short> + <example type="correct">The are several grammar checkers for English, e.g., LanguageTool.</example> + <example type="incorrect">The are several grammar checkers for English, <marker>e.g.</marker> LanguageTool.</example> + </rule> + <rule> + <pattern mark_to="-1"> + <token>eg</token> + <token negate="yes" regexp="yes">,|\.</token> + </pattern> + <message>A comma and a dot are missing here: <suggestion>e.g.,</suggestion>.</message> + <short>Punctuation error</short> + <example type="correct">The are several grammar checkers for English, e.g., LanguageTool.</example> + <example type="incorrect">The are several grammar checkers for English, <marker>eg</marker> LanguageTool.</example> + </rule> + <rule> + <pattern mark_to="-1"> + <token>eg</token> + <token>.</token> + <token negate="yes">,</token> + </pattern> + <message>A comma and a dot are missing here: <suggestion>e.g.,</suggestion>.</message> + <short>Punctuation error</short> + <example type="correct">The are several grammar checkers for English, e.g., LanguageTool.</example> + <example type="incorrect">The are several grammar checkers for English, <marker>eg.</marker> LanguageTool.</example> + </rule> + </rulegroup> + <rulegroup default="off" id="IE_NO_COMMA" name="'i.e.' without a comma"> + <rule> + <pattern mark_to="-1"> + <token>i</token> + <token>.</token> + <token>e</token> + <token>.</token> + <token negate="yes">,</token> + </pattern> + <message>The comma is missing here: <suggestion>i.e.,</suggestion>.</message> + <short>Punctuation error</short> + <example type="correct">Who's responsible for providing public facilities, <marker>i.e.,</marker> a post office, library, etc. for the Northwest?</example> + <example type="incorrect">Who's responsible for providing public facilities, <marker>i.e.</marker> a post office, library, etc. for the Northwest?</example> + </rule> + <rule> + <pattern mark_to="-1"> + <token>ie</token> + <token negate="yes" regexp="yes">,|\.</token> + </pattern> + <message>The comma and dots are missing here:<suggestion>i.e.,</suggestion>.</message> + <short>Punctuation error</short> + <example type="correct">Who's responsible for providing public facilities, <marker>i.e.,</marker> a post office, library, etc. for the Northwest?</example> + <example type="incorrect">Who's responsible for providing public facilities, <marker>ie</marker> a post office, library, etc. for the Northwest?</example> + </rule> + <rule> + <pattern mark_to="-1"> + <token>ie</token> + <token>.</token> + <token negate="yes">,</token> + </pattern> + <message>The comma and dots are missing here: <suggestion>i.e.,</suggestion>.</message> + <short>Punctuation error</short> + <example type="correct">Who's responsible for providing public facilities, <marker>i.e.,</marker> a post office, library, etc. for the Northwest?</example> + <example type="incorrect">Who's responsible for providing public facilities, <marker>ie.</marker> a post office, library, etc. for the Northwest?</example> + </rule> + </rulegroup> + <!-- not sure... + <rulegroup name="'i.e.' without a comma" id="ENUMERATION_NO_COMMA"> + <rule> + <pattern mark_from="2" mark_to="0"> + <token regexp="yes">.*</token> + <token>,</token> + <token regexp="yes">.*</token> + <token regexp="yes">and|or</token> + </pattern> + <message>The last word before 'and' in an enumeration usually ends with a comma: <suggestion>\3, \4</suggestion>.</message> + <example type="correct">It supports German, <marker>Polish, and</marker> other languages.</example> + <example type="incorrect">It supports German, <marker>Polish and</marker> other languages.</example> + </rule> + </rulegroup> + --> + </category> + <category name="Commonly Confused Words"> + <rule id="YOUR_NN" name="your (you're)"> + <pattern mark_from="0" mark_to="-1"> + <token inflected="no">you</token> + <token>'</token> + <token>re</token> + <token postag="NN|NN:U|NN:UN|NNP|NNPS|NNS" postag_regexp="yes"></token> + </pattern> + <message>Did you mean <suggestion>your</suggestion>?</message> + <short>Possible typo</short> + <example type="correct"><marker>Your</marker> optimization is a good example.</example> + <example type="incorrect"><marker>You're</marker> optimization is a good example.</example> + </rule> + <rulegroup id="ACCEPT_EXCEPT" name="accept/except"> + <rule> + <pattern mark_from="1"> + <token>please</token> + <token>except</token> + </pattern> + <message>Did you mean <suggestion>accept</suggestion>?</message> + <short>Commonly confused word</short> + <example correction="accept" type="incorrect">Please <marker>except</marker> my apologies.</example> + <example type="correct">Please accept my apologies.</example> + </rule> + <rule> + <pattern mark_from="1"> + <token>(</token> + <token>accept</token> + </pattern> + <message>Did you mean <suggestion>except</suggestion>?</message> + <short>Commonly confused word</short> + <example correction="except" type="incorrect">Police found the culprits (<marker>accept</marker> one).</example> + <example type="correct">Police found the culprits (<marker>except</marker> one).</example> + </rule> + <rule> + <pattern mark_from="1"> + <token postag="VBN|VBD" postag_regexp="yes"><exception>did</exception></token> + <token>accept</token> + </pattern> + <message>Did you mean <suggestion>except</suggestion>?</message> + <short>Commonly confused word</short> + <example correction="except" type="incorrect">This is done <marker>accept</marker> for that fact that we still have JBossws 2.0.0 binaries.</example> + <example type="correct">This is done except for the fact that we still have JBossws 2.0.0 binaries.</example> + </rule> + </rulegroup> + <rulegroup id="AFFECT_EFFECT" name="affect (effect)"> + <rule> + <pattern mark_from="2"> + <token>to</token> + <token regexp="yes">no|the</token> + <token>affect</token> + </pattern> + <message>Did you mean <suggestion>effect</suggestion>?</message> + <short>Commonly confused word</short> + <example correction="effect" type="incorrect">We tried appeasing the rain gods, but to no <marker>affect</marker>.</example> + <example type="correct">We tried appeasing the rain gods, but to no effect.</example> + </rule> + <rule> + <pattern mark_from="1" mark_to="-1"> + <token>an</token> + <token>affect</token> + <token>on</token> + </pattern> + <message>Did you mean <suggestion>effect</suggestion> (=influence)?</message> + <short>Commonly confused word</short> + <example correction="effect" type="incorrect">Regional factors have an <marker>affect</marker> on hotel guest satisfaction.</example> + <example type="correct">Regional factors have an effect on hotel guest satisfaction.</example> + </rule> + <rule> + <pattern> + <token>in</token> + <token>affect</token> + </pattern> + <message>Did you mean <suggestion>in effect</suggestion> (in substance, virtually)?</message> + <short>Commonly confused word</short> + <example correction="in effect" type="incorrect">Parking Fees are <marker>in affect</marker> in this park.</example> + <example type="correct">Parking Fees are in effect in this park</example> + </rule> + <rule> + <pattern> + <token>side</token> + <token>affect</token> + </pattern> + <message>Did you mean <suggestion>side effect</suggestion> (=adverse effect, unintended consequence)?</message> + <short>Commonly confused word</short> + <example correction="side effect" type="incorrect">A <marker>side affect</marker> of global warming</example> + <example type="correct">A side effect of global warming</example> + </rule> + </rulegroup> + <rule id="ECONOMICAL_ECONOMIC" name="'econonomical growth' etc. (economic)"> + <pattern mark_to="-1"> + <token>economical</token> + <token regexp="yes">growth|development|policy|activity|recovery|reform|policies|crisis|cooperation|co-operation|problems|conditions|system|reforms|performance|history|climate|indicators|relations|power|situation|community|life|planning|affairs|theory|recession|change|review|factors|aid|benefits|circumstances|decline|sanctions|interests|analysis|strategy|difficulties|integration|issues|efficiency|assistance|position|terms|management|base|programme|digest|environment|union|activities|modelling|structure|success|reasons|sense|changes|forces|order|progress|loss|consequences|prosperity|resources|pressures|commission|depression|systems|miracle|regeneration|structures|trends|blockade|adviser|impact|restructuring|developments|measures|prospects|independence|stability|status|support|expansion</token> + </pattern> + <message>Did you mean <suggestion>economic</suggestion> (=connected with economy)?</message> + <short>Commonly confused word</short> + <example correction="economic" type="incorrect">This article deals with <marker>economical</marker> development of the Third World.</example> + <example type="correct">This article deals with <marker>economic</marker> development of the Third World.</example> + </rule> + <rulegroup id="IN_PRINCIPAL" name="principal (principle)"> + <rule> + <pattern mark_to="-1"> + <token>in</token> + <token>principal</token> + <token negate_pos="yes" postag="NN.*" postag_regexp="yes"></token> + </pattern> + <message>Did you mean <suggestion>in principle</suggestion> (=as a rule)?</message> + <short>Commonly confused word</short> + <example type="incorrect"><marker>In principal</marker> I don't think it will be too difficult.</example> + <example type="correct">In principle, I don't think it will be too difficult.</example> + </rule> + <rule> + <pattern mark_to="-1"> + <token>principle</token> + <token regexp="yes">activity|source|use</token> + </pattern> + <message>Did you mean <suggestion>principal</suggestion> (=main)?</message> + <short>Commonly confused word</short> + <example correction="principal" type="incorrect">The <marker>principle</marker> activity of the Foundation is centred on humanitarian aid and charity, especially with regards to children.</example> + <example type="correct">The principal activity of the Foundation is focused on humanitarian aid and charity.</example> + </rule> + <rule> + <pattern> + <token>school</token> + <token>principle</token> + </pattern> + <message>Did you mean <suggestion>school principal</suggestion> (=head of school)?</message> + <short>Commonly confused word</short> + <example correction="school principal" type="incorrect">Mr Brown is our new <marker>school principle</marker>.</example> + <example type="correct">Mr Brown is our new school principal.</example> + </rule> + </rulegroup> + <rule id="ECONOMIC_ECONOMICAL" name="'econonomic car' etc. (economical)"> + <pattern mark_to="-1"> + <token>economic</token> + <token regexp="yes">way|use|repair|means|methods|method|price|proposition|manner|basis|car|cooking|design|heating|motoring|shopper</token> + </pattern> + <message>Did you mean <suggestion>economical</suggestion> (=affordable, cheap)?</message> + <short>Commonly confused word</short> + <example correction="economical" type="incorrect">This is a very <marker>economic</marker> car.</example> + <example type="correct">This is a very <marker>economical</marker> car.</example> + </rule> + <rulegroup id="SAY_TELL" name="say (tell)"> + <rule> + <pattern mark_to="-1"> + <token>say</token> + <token regexp="yes">me|him|her</token> + </pattern> + <message>'Say' cannot be followed by a direct personal object. Did you mean <suggestion>tell</suggestion>?</message> + <short>Commonly confused word</short> + <example type="correct">Tell me the truth.</example> + <example correction="Tell" type="incorrect"><marker>Say</marker> me the truth.</example> + </rule> + <rule> + <pattern mark_to="-1"> + <token>said</token> + <token regexp="yes">me|him|her</token> + </pattern> + <message>'Say' cannot be followed by a direct personal object. Did you mean <suggestion>told</suggestion>?</message> + <short>Commonly confused word</short> + <example type="correct">He told me the truth.</example> + <example correction="told" type="incorrect">He <marker>said</marker> me the truth.</example> + </rule> + <rule> + <pattern mark_to="-1"> + <token>says</token> + <token regexp="yes">me|him|her</token> + </pattern> + <message>'Say' cannot be followed by a direct personal object. Did you mean <suggestion>tells</suggestion>?</message> + <short>Commonly confused word</short> + <example type="correct">He tells me the truth.</example> + <example correction="tells" type="incorrect">He <marker>says</marker> me the truth.</example> + </rule> + </rulegroup> + <rulegroup id="EVERYDAY_EVERY_DAY" name="everyday (every day)"> + <rule> + <pattern> + <token postag="SENT_START"></token> + <token>everyday</token> + <token postag="PRP"></token> + </pattern> + <message>'Everyday' is an adjective, and the comma is missing. Did you mean <suggestion>every day, \3</suggestion>?</message> + <short>Commonly confused word</short> + <example type="correct">Every day, he gets up early.</example> + <example correction="Every day, he" type="incorrect"><marker>Everyday he</marker> gets up early.</example> + </rule> + <rule> + <pattern mark_to="-2"> + <token postag="SENT_START"></token> + <token>everyday</token> + <token>,</token> + <token postag="PRP"></token> + </pattern> + <message>'Everyday' is an adjective. Did you mean <suggestion>every day</suggestion>?</message> + <short>Commonly confused word</short> + <example type="correct">Every day, he gets up early.</example> + <example correction="Every day" type="incorrect"><marker>Everyday</marker>, he gets up early.</example> + </rule> + <rule> + <pattern mark_to="-1"> + <token>everyday</token> + <token><exception postag="NN.*|PRP|JJ.*" postag_regexp="yes"></exception></token> + </pattern> + <message>'Everyday' is an adjective. Did you mean <suggestion>every day</suggestion>?</message> + <short>Commonly confused word</short> + <example correction="every day" type="incorrect">He gets up early <marker>everyday</marker>.</example> + <example type="correct">He gets up early every day.</example> + </rule> + </rulegroup> + </category> + <category name="Nonstandard Phrases"> + <rule id="IN_THE_MOMENT" name="in the moment (currently)"> + <!-- Typical mistake for German native speakers --> + <pattern> + <token>in</token> + <token>the</token> + <token>moment</token> + </pattern> + <message>Did you mean <suggestion>at the moment</suggestion> (=currently)?</message> + <short>Nonstandard phrase</short> + <example correction="at the moment|currently" type="correct">No, <marker>currently</marker> not.</example> + <example type="incorrect">No, <marker>in the moment</marker> not.</example> + </rule> + <rule id="MAKE_SINCE" name="make since (sense)"> + <pattern mark_from="1"> + <token inflected="yes">make</token> + <token>since</token> + </pattern> + <message>Did you mean <suggestion>sense</suggestion>?</message> + <short>Nonstandard phrase</short> + <example type="incorrect">Something like 90 most likely never makes <marker>since</marker>.</example> + <example type="correct">Something like 90 most likely never makes <marker>sense</marker>.</example> + </rule> + <rule id="ALL_AND_ALL" name="all and all (all in all)"> + <pattern> + <token><exception postag="IN" scope="previous"></exception>all</token> + <token>and</token> + <token>all</token> + </pattern> + <message>This phrase is nonstandard. Did you mean <suggestion>all in all</suggestion> (=after all, nevertheless)?</message> + <short>Nonstandard phrase</short> + <example type="correct">One for all and all for one!</example> + <example correction="All in all" type="incorrect"><marker>All and all</marker> it’s just another brick in the… toilet?</example> + </rule> + <rule id="ALL_OF_THE_SUDDEN" name="all of the sudden (all of a sudden)"> + <pattern> + <token>all</token> + <token>of</token> + <token>the</token> + <token>sudden</token> + </pattern> + <message>This phrase is nonstandard. Did you mean <suggestion>all of a sudden</suggestion>?</message> + <short>Nonstandard phrase</short> + <example correction="all of a sudden" type="incorrect">Why would a man <marker>all of the sudden</marker> send flowers?</example> + <example type="correct">Why would anyone all of a sudden send flowers?</example> + </rule> + <rule id="ALONG_THE_SAME_VEIN" name="along the same vein (along the same line, in the same vein)"> + <pattern> + <token>along</token> + <token>the</token> + <token>same</token> + <token>vein</token> + </pattern> + <message>This phrase is nonstandard. Use <suggestion>in the same vein</suggestion> or <suggestion>along the same line</suggestion>.</message> + <short>Nonstandard phrase</short> + <example correction="in the same vein|along the same line" type="incorrect">I've been working <marker>along the same vein</marker>.</example> + <example type="correct">I've been working in the same vein.</example> + </rule> + <rule id="EVER_SO_OFTEN" name="Misused phrase: 'ever so often (every so often)'"> + <pattern> + <token>ever</token> + <token>so</token> + <token>often</token> + </pattern> + <message>This phrase is non-standard in most writing. Did you mean <suggestion>every \2 \3</suggestion>?</message> + <short>Nonstandard phrase</short> + <example correction="Every so often" type="incorrect"><marker>Ever so often</marker>, we put down the books, and go sailing!</example> + <example type="correct">Every so often, we put down the books, and go sailing!</example> + </rule> + <rule id="EARLY_ADAPTER" name="early adapter (early adopter)"> + <pattern> + <token>early</token> + <token>adapter</token> + </pattern> + <message>Did you mean <suggestion>early adopter</suggestion> (=someone who takes something early on)?</message> + <short>Nonstandard phrase</short> + <example correction="early adopter" type="incorrect">DualCore PC is available for purchase for selected companies in the <marker>early adapter</marker> program.</example> + <example type="correct">DualCore PC is available for purchase for selected companies in the <marker>early adopter</marker> program.</example> + </rule> + <rule id="FAR_BE_IT_FOR_ME" name="far be it for me (far be it from me)"> + <pattern> + <token>far</token> + <token>be</token> + <token>it</token> + <token>for</token> + <token>me</token> + </pattern> + <message>Did you mean <suggestion>far be it from me</suggestion> (=may this possibility be far away from me)?</message> + <short>Nonstandard phrase</short> + <example correction="Far be it from me" type="incorrect"><marker>Far be it for me</marker> to say that you can’t.</example> + <example type="correct">Far be it from me to say that you can’t.</example> + </rule> + <rule id="MONEY_IS_NO_OPTION" name="money is no option (money is no object)"> + <pattern> + <token>money</token> + <token>is</token> + <token>no</token> + <token>option</token> + </pattern> + <message>Did you mean <suggestion>money is no object</suggestion> (=money is no obstacle, cost what it may)?</message> + <short>Nonstandard phrase</short> + <example correction="Money is no object" type="incorrect"><marker>Money is no option</marker> when are you rich.</example> + <example type="correct">Money is no object when are you rich.</example> + </rule> + <rule id="NIP_IT_IN_THE_BUTT" name="nip it in the butt (nip it in the budd)"> + <pattern mark_from="0"> + <token>nip</token> + <token>it</token> + <token>in</token> + <token>the</token> + <token>butt</token> + </pattern> + <message>Did you mean <suggestion>nip it in the bud</suggestion> (=stop it from flowering completely)?</message> + <short>Nonstandard phrase</short> + <example correction="nip it in the bud" type="incorrect">We'd like to <marker>nip it in the butt</marker> right here.</example> + <example type="correct">We'd like to nip it in the bud right here.</example> + </rule> + <rule id="NOW_AND_DAYS" name="now and days (nowadays)"> + <pattern> + <token>now</token> + <token>and</token> + <token>days</token> + </pattern> + <message>Did you mean <suggestion>nowadays</suggestion>?</message> + <short>Nonstandard phrase</short> + <example correction="nowadays" type="incorrect">Money is becoming pretty tight <marker>now and days</marker>.</example> + <example type="correct">Money is becoming pretty tight nowadays.</example> + </rule> + <rule id="THE_PROOF_IS_IN_THE_PUDDING" name="the proof is in the pudding (the proof of the pudding is in the eating)"> + <pattern> + <token>the</token> + <token>proof</token> + <token>is</token> + <token>in</token> + <token>the</token> + <token>pudding</token> + </pattern> + <message>If you don't want to look for proofs hidden in your pudding, you probably meant <suggestion>the proof of the pudding is in the eating</suggestion>.</message> + <short>Nonstandard phrase</short> + <example correction="The proof of the pudding is in the eating" type="incorrect"><marker>The Proof Is In The Pudding</marker></example> + <example type="correct">The proof of the pudding is in the eating.</example> + </rule> + <rule id="QUI_BONO" name="qui bono (cui bono)"> + <pattern> + <token>qui</token> + <token>bono</token> + </pattern> + <message>Non standard Latin. Did you mean <suggestion>cui bono</suggestion> (=to whose benefit).</message> + <short>Nonstandard phrase</short> + <example correction="cui bono" type="incorrect">Let me ask: <marker>qui bono</marker>?</example> + <example type="correct">Let me ask: cui bono?</example> + </rule> + <rule id="WHIP_CREAM" name="whip cream (whipped cream)"> + <pattern mark_from="1"> + <token postag="DT|JJ.*|VBZ|VBD" postag_regexp="yes"></token> + <token>whip</token> + <token>cream</token> + </pattern> + <message>Did you mean <suggestion>whipped cream</suggestion>?</message> + <short>Nonstandard phrase</short> + <example correction="whipped cream" type="incorrect">Whip cream until it becomes <marker>whip cream</marker>.</example> + <example type="correct">Whip cream until it becomes whipped cream.</example> + </rule> + <rule id="IN_REGARD_TO" name="in regards to (regarding, with regard to)"> + <pattern> + <token>in</token> + <token>regards</token> + <token>to</token> + </pattern> + <message>Use simply <suggestion>regarding</suggestion> or <suggestion>with regard to</suggestion>.</message> + <short>Nonstandard phrase</short> + <example correction="regarding|with regard to" type="incorrect">Please be aware of the following changes <marker>in regards to</marker> this program.</example> + <example type="correct">Please be aware of the following changes in this program.</example> + </rule> + <rule id="VERY_KNOWN" name="very known (very well-known, well-known)"> + <pattern> + <token>very</token> + <token>known</token> + </pattern> + <message>Incorrect phrase. Use <suggestion>very well-known</suggestion> or <suggestion>well-known</suggestion> instead.</message> + <short>Incorrect phrase</short> + <example correction="very well-known|well-known" type="incorrect">He is a <marker>very known</marker> actor.</example> + <example type="correct">He is a well-known actor.</example> + </rule> + </category> + <category name="Slang"> + <rule id="AN_INVITE" name="an invite (invitation)"> + <pattern mark_from="1"> + <token>an</token> + <token>invite</token> + </pattern> + <message>Use only in informal register. In other registers, <suggestion>invitation</suggestion> should be used.</message> + <short>Slang</short> + <example correction="invitation" type="incorrect">Is that an <marker>invite</marker>...?</example> + <example type="correct">Is that an <marker>invitation</marker>...?</example> + </rule> + </category> + <category name="Redundant Phrases"> + <rulegroup id="ATM_MACHINE" name="ATM machine (ATM)"> + <rule> + <pattern> + <token>ATM</token> + <token>machine</token> + </pattern> + <message>This phrase is redundant ('M' stands for 'machine'). Use simply <suggestion>\1</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="ATM" type="incorrect"><marker>ATM Machine</marker> Comparison Guide</example> + <example type="correct">ATM Comparison Guide</example> + </rule> + <rule> + <pattern> + <token>ATM</token> + <token>machines</token> + </pattern> + <message>This phrase is redundant ('M' stands for 'machine'). Use simply <suggestion>\1s</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="ATMs" type="incorrect">In the Netherlands, criminals are stealing money from <marker>ATM machines</marker> by blowing them up.</example> + <example type="correct">ATMs are quite common in the Netherlands,</example> + </rule> + </rulegroup> + <rule id="ABSOLUTELY_ESSENTIAL" name="absolutely essential/necessary (essential/necessary)"> + <pattern> + <token>absolutely</token> + <token regexp="yes">essential|necessary</token> + </pattern> + <message>Use simply <suggestion>\2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="essential" type="incorrect">This is <marker>absolutely essential</marker>.</example> + <example type="correct">This was essential.</example> + </rule> + <rule id="ACTUAL_EXPERIENCE" name="actual experience/facts (experience/facts)"> + <pattern> + <token>actual</token> + <token regexp="yes">experience|fact|facts</token> + </pattern> + <message>Use simply <suggestion>\2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="experience" type="incorrect">This talk is based on <marker>actual experience</marker> gained during recovery operations following a fire at the Washington National Records.</example> + <example type="correct">This play is based on facts.</example> + </rule> + <rule id="ADVANCE_PLANNING" name="advance planning/preview/reservations/warning (planning/preview/reservations/warning)"> + <pattern> + <token>advance</token> + <token regexp="yes">planning|preview|reservations?|warning</token> + </pattern> + <message>This phrase might be redundant. Use simply <suggestion>\2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="Planning" type="incorrect"><marker>Advance planning</marker> is one strategy couples can use to establish legal rights.</example> + <example type="correct">Planning is one strategy couples can use to establish legal rights.</example> + </rule> + <rule id="ADD_AN_ADDITIONAL" name="add an additional (add)"> + <pattern mark_from="0" mark_to="0"> + <token inflected="yes">add</token> + <token>an</token> + <token>additional</token> + <token></token> + </pattern> + <message>This phrase might be redundant. Use simply <suggestion><match no="1"></match> <match no="4" postag="+INDT"></match></suggestion>.</message> + <short>Redundant phrase</short> + <example correction="Add a Page" type="incorrect">How to <marker>Add an Additional Page</marker> to a Full Flash Site</example> + <example type="correct">How to Add a Page to a Full Flash Site</example> + </rule> + <rulegroup id="AM_IN_THE_MORNING" name="AM in the morning (AM)"> + <rule> + <pattern case_sensitive="no"> + <token><exception scope="previous">I</exception>AM</token> + <token>in</token> + <token>the</token> + <token>morning</token> + </pattern> + <message>Use simply <suggestion>\1</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="AM" type="incorrect">It's 5 <marker>AM in the morning</marker>.</example> + <example type="correct">It's 5 AM.</example> + <example type="correct">He doesn't know where I am in the morning.</example> + </rule> + <rule> + <pattern case_sensitive="yes"> + <token>A</token> + <token>.</token> + <token>M</token> + <token>.</token> + <token>in</token> + <token>the</token> + <token>morning</token> + </pattern> + <message>Use simply <suggestion>A.M.</suggestion></message> + <short>Redundant phrase</short> + <example correction="A.M." type="incorrect">It's 5 <marker>A.M. in the morning</marker>.</example> + <example type="correct">It's 5 A.M.</example> + </rule> + </rulegroup> + <rulegroup id="PM_IN_THE_EVENING" name="PM in the evening (PM)"> + <rule> + <pattern case_sensitive="no"> + <token>PM</token> + <token>in</token> + <token>the</token> + <token regexp="yes">evening|afternoon</token> + </pattern> + <message>Use simply <suggestion>\1</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="PM" type="incorrect">It's 5 <marker>PM in the evening</marker>.</example> + <example type="correct">It's 5 PM.</example> + </rule> + <rule> + <pattern case_sensitive="no"> + <token>PM</token> + <token>at</token> + <token>night</token> + </pattern> + <message>Use simply <suggestion>\1</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="PM" type="incorrect">It's 1 <marker>PM at night</marker>.</example> + <example type="correct">It's 5 PM.</example> + </rule> + <rule> + <pattern case_sensitive="yes"> + <token>P</token> + <token>.</token> + <token>M</token> + <token>.</token> + <token>in</token> + <token>the</token> + <token regexp="yes">evening|afternoon</token> + </pattern> + <message>Use simply <suggestion>P.M.</suggestion></message> + <short>Redundant phrase</short> + <example correction="P.M." type="incorrect">It's 5 <marker>P.M. in the afternoon</marker>.</example> + <example type="correct">It's 5 P.M.</example> + </rule> + <rule> + <pattern case_sensitive="yes"> + <token>P</token> + <token>.</token> + <token>M</token> + <token>.</token> + <token>at</token> + <token>night</token> + </pattern> + <message>Use simply <suggestion>P.M.</suggestion></message> + <short>Redundant phrase</short> + <example correction="P.M." type="incorrect">It's 1 <marker>P.M. at night</marker>.</example> + <example type="correct">It's 5 P.M.</example> + </rule> + </rulegroup> + <rule default="off" id="AND_ALSO" name="and also (and/also)"> + <pattern> + <token>and</token> + <token>also</token> + </pattern> + <message>Use simply <suggestion>and</suggestion> or <suggestion>also</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="and|also" type="incorrect">Typical English Food <marker>and also</marker> Welsh and Scottish too</example> + <example type="correct">Typical English Food, and Welsh and Scottish too</example> + </rule> + <rule id="AND_ETC" name="and etc. (etc.)"> + <pattern> + <token>and</token> + <token>etc</token> + <token>.</token> + </pattern> + <message>Use simply <suggestion>\2\3</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="etc." type="incorrect">E-Commerce <marker>and etc.</marker></example> + <example type="correct">E-Commerce etc.</example> + </rule> + <rule id="ANNUAL_ANNIVERSARY" name="annual anniversary (anniversary)"> + <pattern> + <token>annual</token> + <token>anniversary</token> + </pattern> + <message>Use simply <suggestion>\2</suggestion> instead.</message> + <short>Redundant phrase</short> + <example correction="Anniversary" type="incorrect">First <marker>Annual Anniversary</marker> Contest</example> + <example type="correct">First Anniversary Contest</example> + </rule> + <rule id="ADDED_BONUS" name="added bonus (bonus)"> + <pattern> + <token regexp="yes">added|extra</token> + <token>bonus</token> + </pattern> + <message>This phrase might be redundant. Use simply <suggestion>\2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="Bonus" type="incorrect"><marker>Added bonus</marker>: booting from cdrom.</example> + <example type="correct">Bonus: booting from CD-ROM.</example> + </rule> + <rule id="ASK_THE_QUESTION" name="ask the question (ask)"> + <pattern mark_to="-1"> + <token inflected="yes">ask</token> + <token>the</token> + <token>question</token> + <token><exception postag="SENT_END"></exception></token> + </pattern> + <message>Use simply <suggestion>\1</suggestion> instead.</message> + <short>Redundant phrase</short> + <example type="correct">He asked the question.</example> + <example correction="asked" type="incorrect">He <marker>asked the question</marker> whether it's OK to add some rules to LanguageTool.</example> + </rule> + <rule id="AS_OF_YET" name="as of yet (yet)"> + <pattern> + <token>as</token> + <token>of</token> + <token>yet</token> + </pattern> + <message>Use simply <suggestion>yet</suggestion> or <suggestion>as yet</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="yet|as yet" type="incorrect">The report remains unfinished <marker>as of yet</marker>.</example> + <example type="correct">The report remains unfinished as yet.</example> + </rule> + <rule id="ARMED_GUNMAN" name="armed gunman (gunman)"> + <pattern> + <token>armed</token> + <token inflected="yes">gunman</token> + </pattern> + <message>This phrase might be redundant. Use simply <suggestion>\2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="Gunmen" type="incorrect"><marker>Armed gunmen</marker> entered the room to kill Bill.</example> + <example type="correct">Gunmen are very dangerous in this city.</example> + </rule> + <rule id="ASSEMBLE_ATTACH_TOGETHER" name="attach/assemble together (attach/assemble)"> + <pattern mark_to="-1"> + <token inflected="yes" regexp="yes">attach|assemble</token> + <token>together</token> + <token><exception>with</exception></token> + </pattern> + <message>This phrase might be redundant. Use simply <suggestion>\1</suggestion> instead.</message> + <short>Redundant phrase</short> + <example correction="assemble" type="incorrect">Reelin molecules <marker>assemble together</marker> to form a large protein complex.</example> + <example type="correct">Reelin molecules assemble to form a large protein complex</example> + </rule> + <rule id="AUTOBIOGRAPHY_OF_A_LIFE" name="autobiography of a life (autobiography)"> + <pattern> + <token>autobiography</token> + <token>of</token> + <token>a</token> + <token>life</token> + </pattern> + <message>Use <suggestion>\1</suggestion> or <suggestion>story \2 \3 \4</suggestion> instead.</message> + <short>Redundant phrase</short> + <example correction="autobiography|story of a life" type="incorrect">In this <marker>autobiography of a life</marker> of courage and love, we get to share in the compelling story of a family’s struggles.</example> + <example type="correct">In this story of a life of courage and love, we get to share in the compelling story of a family’s struggles</example> + </rule> + <rule id="BASIC_FUNDAMENTALS" name="basic fundamentals/necessities (fundamentals/necessities)"> + <pattern> + <token><exception scope="previous">visual</exception>basic</token> + <token regexp="yes">fundamentals|necessities</token> + </pattern> + <message>Use simply <suggestion>\2</suggestion>.</message> + <short>Redundant phrase</short> + <example type="correct">Visual Basic Fundamentals</example> + <example correction="fundamentals" type="incorrect">Let’s get back to the <marker>basic fundamentals</marker>!</example> + </rule> + <rule id="BALD-HEADED" name="bald-headed (bald)"> + <pattern> + <token>bald-headed</token> + </pattern> + <message>Use simply <suggestion>bald</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="bald" type="incorrect">He is <marker>bald-headed</marker>.</example> + <example type="correct">Kojak was bald.</example> + </rule> + <rule id="BALSA_WOOD" name="balsa wood (balsa)"> + <pattern case_sensitive="no"> + <token>balsa</token> + <token>wood</token> + </pattern> + <message>Use simply <suggestion>\1</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="balsa" type="incorrect">It's made of <marker>balsa wood</marker>.</example> + <example type="correct">This table is made of balsa.</example> + </rule> + <rule id="BARE_NAKED" name="bare naked (naked)"> + <pattern> + <token>bare</token> + <token>naked</token> + </pattern> + <message>Use simply <suggestion>\2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="naked" type="incorrect">The old man ran <marker>bare naked</marker> through the streets.</example> + <example type="correct">The old man ran naked through the streets.</example> + </rule> + <rule default="off" id="BEST_EVER" name="best ever (best)"> + <pattern> + <token>best</token> + <token>ever</token> + </pattern> + <message>This phrase might be redundant. Use simply <suggestion>\1</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="best" type="incorrect">Top ten <marker>best ever</marker> beer names.</example> + <example type="correct">Top ten best beer names.</example> + </rule> + <rule id="BITTER_IN_TASTE" name="bitter in taste (bitter)"> + <pattern> + <token>bitter</token> + <token>in</token> + <token>taste</token> + </pattern> + <message>Use simply <suggestion>\1</suggestion>.</message> + <short>Redundant phrase</short> + <example type="correct">This beer is bitter.</example> + <example correction="bitter" type="incorrect">This beer is <marker>bitter in taste</marker>.</example> + </rule> + <rule default="off" id="BLEND_TOGETHER" name="blend together (blend)"> + <pattern> + <token inflected="yes" regexp="yes">assemble|blend|combine|collaborate|confer|congregate|gather|join|meet|merge|mesh|mix|share</token> + <token>together</token> + </pattern> + <message>This phrase might be redundant. Use simply <suggestion>\1</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="blend" type="incorrect">Their voices <marker>blend together</marker> in lovely harmony.</example> + <example type="correct">Their voices blend in lovely harmony.</example> + </rule> + <rule id="BOAT_MARINA" name="boat marina (marina)"> + <pattern> + <token>boat</token> + <token>marina</token> + </pattern> + <message>Use simply <suggestion>\2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="Marina" type="incorrect">Taupo <marker>Boat Marina</marker></example> + <example type="correct">Taupo Marina</example> + </rule> + <rule id="BRIEF_IN_DURATION" name="brief in duration (brief)"> + <pattern> + <token>brief</token> + <token>in</token> + <token>duration</token> + </pattern> + <message>Use simply <suggestion>\1</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="brief" type="incorrect">However, most wilderness programs are <marker>brief in duration</marker>.</example> + <example type="correct">However, most wilderness programs are brief.</example> + </rule> + <rule default="off" id="BRIEF_MOMENT" name="brief moment/summary (moment/summary)"> + <pattern> + <token>brief</token> + <token inflected="yes" regexp="yes">moment|summary|cameo</token> + </pattern> + <message>Use simply <suggestion>\2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="Moment" type="incorrect">A <marker>Brief Moment</marker> of Compassion</example> + <example type="correct">A Moment of Compassion</example> + </rule> + <rule id="BIOGRAPHY_OF_A_LIFE" name="biography of her life (biography)"> + <pattern> + <token>biography</token> + <token>of</token> + <token regexp="yes">a|her|his</token> + <token>life</token> + </pattern> + <message>Use <suggestion>\1</suggestion> or <suggestion>story \2 \3 \4</suggestion> instead.</message> + <short>Redundant phrase</short> + <example correction="biography|story of her life" type="incorrect">In this <marker>biography of her life</marker>, we get to share in the compelling story of a family’s struggles.</example> + <example type="correct">In this story of a life of courage and love, we get to share in the compelling story of a family’s struggles</example> + </rule> + <rule id="BOUQUET_OF_FLOWERS" name="bouquet of flowers (bouquet)"> + <pattern> + <token>bouquet</token> + <token>of</token> + <token>flowers</token> + </pattern> + <message>This phrase might be redundant. Use simply <suggestion>\1</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="bouquet" type="incorrect">What a beautiful <marker>bouquet of flowers</marker>!</example> + <example type="correct">What a beautiful bouquet!</example> + </rule> + <rule id="BUT_NEVERTHELESS" name="but nevertheless/however (but)"> + <pattern> + <token>but</token> + <token regexp="yes">nevertheless|however</token> + </pattern> + <message>Use simply <suggestion>\1</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="but" type="incorrect">I should not have, <marker>but nevertheless</marker> I did.</example> + <example type="correct">I should not have, but I did.</example> + </rule> + <rule id="CD_DISC" name="CD disc (disc)"> + <pattern> + <token>CD</token> + <token regexp="yes">disk|disc</token> + </pattern> + <message>Use simply <suggestion>\1</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="CD" type="incorrect">I ordered a <marker>CD disk</marker> with their software.</example> + <example type="correct">I ordered a <marker>CD </marker>with their software.</example> + </rule> + <rule id="CLOSE_SCRUTINY" name="close scrutiny/proximity (scrutiny/proximity)"> + <pattern> + <token>close</token> + <token regexp="yes">scrutiny|proximity</token> + </pattern> + <message>Use simply <suggestion>\2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="scrutiny" type="incorrect">Their manifesto yesterday received the same <marker>close scrutiny</marker> as the other two big parties — and it was an uncomfortable experience.</example> + <example type="correct">Their manifesto yesterday received the same scrutiny as the other two big parties — and it was an uncomfortable experience.</example> + </rule> + <rule id="COMFORTABLE_WITH_VBG" name="comfortable with doing (comfortable doing)"> + <pattern> + <token>comfortable</token> + <token>with</token> + <token postag="VBG"></token> + </pattern> + <message>Use simply <suggestion>\1 \3</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="comfortable dancing" type="incorrect">I am not <marker>comfortable with dancing</marker> with strangers.</example> + <example type="correct">I am not comfortable dancing with strangers.</example> + </rule> + <rule id="COMMON_BOND" name="common bond (bond)"> + <pattern> + <token>common</token> + <token>bond</token> + </pattern> + <message>Use simply <suggestion>\2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="bond" type="incorrect">They formed a <marker>common bond</marker> against the British</example> + <example type="correct">They formed a bond against the British</example> + </rule> + <rule id="COMMUTE_BACK_AND_FORTH" name="commute back and forth (commute)"> + <pattern> + <token inflected="yes">commute</token> + <token>back</token> + <token>and</token> + <token>forth</token> + </pattern> + <message>Use simply <suggestion>\1</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="commute" type="incorrect">She will <marker>commute back and forth</marker> between New Haven and her home in Southern California before relocating to the Elm City this summer.</example> + <example type="correct">She will commute between New Haven and her home in Southern California before relocating to the Elm City this summer</example> + </rule> + <rule id="CONSENSUS_OF_OPINION" name="consensus of opinion (consensus)"> + <pattern> + <token>consensus</token> + <token>of</token> + <token>opinion</token> + </pattern> + <message>Use simply <suggestion>\1</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="consensus" type="incorrect">Wim Duisenberg, the ECB's Dutch president, is seen as a leader who seeks to fashion a <marker>consensus of opinion</marker> on the council rather than imposing his own views, as some chairmen of the US Federal Reserve have done.</example> + <example type="correct">Wim Duisenberg, the ECB's Dutch president, is seen as a leader who seeks to fashion a consensus on the council rather than imposing his own views, as some chairmen of the US Federal Reserve have done.</example> + </rule> + <rule id="CONTINUE_TO_REMAIN" name="continue to remain (remain)"> + <pattern> + <token inflected="yes">continue</token> + <token>to</token> + <token>remain</token> + </pattern> + <message>Use simply <suggestion><match no="1" postag=".*">remain</match></suggestion>.</message> + <short>Redundant phrase</short> + <example correction="remained" type="incorrect">We <marker>continued to remain</marker> optimistic.</example> + <example type="correct">We remain optimistic.</example> + </rule> + <rule id="DESCEND_DOWN" name="descend down (descend)"> + <pattern> + <token inflected="yes" regexp="yes">descend|dive|fall</token> + <token>down</token> + </pattern> + <message>This phrase might be redundant. Use simply <suggestion>\1</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="descend" type="incorrect">The Pentagon aides and journalists <marker>descend down</marker> the back stairs of the plane as is customary while Rumsfeld comes down the main stairs to meet his welcome party.</example> + <example type="correct">The Pentagon aides and journalists descend the back stairs of the plane as is customary while Rumsfeld comes down the main stairs to meet his welcome party.</example> + </rule> + <rule id="DURING_THE_COURSE_OF" name="during the course of (during)"> + <pattern> + <token>during</token> + <token>the</token> + <token>course</token> + <token>of</token> + </pattern> + <message>Use simply <suggestion>\1</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="during" type="incorrect">He never smiled <marker>during the course of</marker> the trial.</example> + <example type="correct">He never smiled during the trial.</example> + </rule> + <rule id="EACH_AND_EVERY" name="each and every one (each one)"> + <pattern> + <token>each</token> + <token>and</token> + <token>every</token> + <token>one</token> + </pattern> + <message>Use simply <suggestion>\1 \4</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="each one" type="incorrect">God bless <marker>each and every one</marker> of you!</example> + <example type="correct">God bless each one of you!</example> + </rule> + <rule id="EVERY_NOW_AND_THEN" name="every now and then (now and then)"> + <pattern> + <token>every</token> + <token>now</token> + <token>and</token> + <token>then</token> + </pattern> + <message>Use simply <suggestion>\2 \3 \4</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="Now and then" type="incorrect"><marker>Every now and then</marker> the faucet drips.</example> + <example type="correct">Now and then the faucet drips.</example> + </rule> + <rule id="ESTABLISHED_FACT" name="established fact (fact)"> + <pattern> + <token>an</token> + <token>established</token> + <token>fact</token> + </pattern> + <message>Use simply <suggestion><match no="3" postag="+INDT"></match></suggestion>.</message> + <short>Redundant phrase</short> + <example correction="a fact" type="incorrect">This is <marker>an established fact</marker>.</example> + <example type="correct">This is a fact.</example> + </rule> + <rule default="off" id="EXACTLY_THE_SAME" name="exactly the same/identical (the same/identical)"> + <pattern> + <token regexp="yes">exactly|precisely</token> + <token>the</token> + <token regexp="yes">same|identical</token> + </pattern> + <message>Use simply <suggestion>\2 \3</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="the same" type="incorrect">This shoe is <marker>exactly the same</marker>.</example> + <example type="correct">This shoe is the same.</example> + </rule> + <rule default="off" id="EXACT_SAME" name="exact same/identical (same/identical)"> + <pattern> + <token regexp="yes">exact|precise</token> + <token regexp="yes">same|identical</token> + </pattern> + <message>Use simply <suggestion>\2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="same" type="incorrect">This is the <marker>exact same</marker> situation.</example> + <example type="correct">This is the same situation.</example> + </rule> + <rule id="THE_FALL_SEASON" name="fall season (fall)"> + <pattern> + <token>the</token> + <token>fall</token> + <token>season</token> + </pattern> + <message>Use simply <suggestion>\2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="fall" type="incorrect">The leaves turn red and gold in <marker>the fall season</marker>.</example> + <example type="correct">The leaves turn red and gold in fall.</example> + </rule> + <rule id="FAMOUS_CELEBRITY" name="famous celebrity (celebrity)"> + <pattern> + <token>famous</token> + <token inflected="yes">celebrity</token> + </pattern> + <message>Use simply <suggestion>\2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="celebrity" type="incorrect">I'm told that he's a <marker>famous celebrity</marker> now.</example> + <example type="correct">I'm told that he's a celebrity now.</example> + </rule> + <rule id="FELLOW_CLASSMATE" name="fellow classmates/co-workers/comrades (classmates/co-workers/comrades)"> + <pattern> + <token>fellow</token> + <token inflected="yes" regexp="yes">classmate|co-worker|coworker|comrade</token> + </pattern> + <message>Use simply <suggestion>\2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="classmates" type="incorrect">I would enjoy a reunion with my <marker>fellow classmates</marker>.</example> + <example type="correct">I would enjoy a reunion with my classmates.</example> + </rule> + <rule id="FEW_IN_NUMBER" name="few in number (few)"> + <pattern> + <token>few</token> + <token>in</token> + <token>number</token> + </pattern> + <message>Use simply <suggestion>\1</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="few" type="incorrect">They were <marker>few in number</marker>, but mighty.</example> + <example type="correct">They were few, but mighty.</example> + </rule> + <rule id="FIRST_TIME_EVER" name="first time ever (first time)"> + <pattern> + <token>first</token> + <token>time</token> + <token>ever</token> + </pattern> + <message>Use simply <suggestion>\1 \2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="first time" type="incorrect">We have a pig in space for the <marker>first time ever</marker>.</example> + <example type="correct">We have a pig in space for the first time.</example> + </rule> + <rule id="FOREIGN_IMPORT" name="foreign import (import)"> + <pattern> + <token>foreign</token> + <token inflected="yes">import</token> + </pattern> + <message>This phrase is redundant. Use simply <suggestion>\2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="imports" type="incorrect">The rise in <marker>foreign imports</marker>, the argument goes, is forcing some Americans to accept lower pay to remain competitive with, say, Mexican and Chinese workers.</example> + <example type="correct">The rise in imports, the argument goes, is forcing some Americans to accept lower pay to remain competitive with, say, Mexican and Chinese workers.</example> + </rule> + <rule id="FOREVER_AND_EVER" name="forever and ever (forever)"> + <pattern> + <token>forever</token> + <token>and</token> + <token>ever</token> + </pattern> + <message>Use simply <suggestion>\1</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="forever" type="incorrect">It is you and me, <marker>forever and ever</marker>.</example> + <example type="correct">It is you and me, forever.</example> + </rule> + <rule id="FROM_WHENCE" name="from whence (whence)"> + <pattern> + <token>from</token> + <token>whence</token> + </pattern> + <message>Use simply <suggestion>\2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="whence" type="incorrect">Go back <marker>from whence</marker> you came.</example> + <example type="correct">Go back whence you came!</example> + </rule> + <rule default="off" id="HONEST_TRUTH" name="honest truth (truth)"> + <pattern> + <token>honest</token> + <token>truth</token> + </pattern> + <message>Use simply <suggestion>\2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="truth" type="incorrect">That is the <marker>honest truth</marker> of the matter.</example> + <example type="correct">That is the truth of the matter.</example> + </rule> + <rule default="off" id="IN_ORDER_TO" name="in order to (to)"> + <pattern> + <token>in</token> + <token>order</token> + <token>to</token> + </pattern> + <message>This phrase might be considered redundant. Use simply <suggestion>\3</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="to" type="incorrect">We opened the door <marker>in order to</marker> enter.</example> + <example type="correct">We opened the door to enter.</example> + </rule> + <rule id="INTRODUCE_FOR_THE_FIRST_TIME" name="introduce for the first time (introduce)"> + <pattern> + <token inflected="yes">introduce</token> + <token>for</token> + <token>the</token> + <token>first</token> + <token>time</token> + </pattern> + <message>Use simply <suggestion>\1</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="introduced" type="incorrect">We were <marker>introduced for the first time</marker> a week ago.</example> + <example type="correct">We were introduced a week ago.</example> + </rule> + <rule id="MAIN_FOCUS" name="main focus (focus)"> + <pattern> + <token>main</token> + <token>focus</token> + </pattern> + <message>Use simply <suggestion>\2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="focus" type="incorrect">Redundancies are the <marker>main focus</marker> of my essay.</example> + <example type="correct">Redundancies are the focus of my essay.</example> + </rule> + <rule id="MAJOR_BREAKTHROUGH" name="major breakthrough (breakthrough)"> + <pattern> + <token>major</token> + <token>breakthrough</token> + </pattern> + <message>Use simply <suggestion>\2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="breakthrough" type="incorrect">It was a <marker>major breakthrough</marker> in genetic research.</example> + <example type="correct">It was a breakthrough in genetic research.</example> + </rule> + <rule id="MAY_COULD_POSSIBLY" name="can/could/may/might possibly (can/could/may/might)"> + <pattern> + <token regexp="yes">can|could|may|might</token> + <token>possibly</token> + </pattern> + <message>Use simply <suggestion>\1</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="may" type="incorrect">That <marker>may possibly</marker> be the greatest blunder of all.</example> + <example type="correct">That may be the greatest blunder of all.</example> + </rule> + <rule id="MENTAL_TELEPATHY" name="mental telepathy (telepathy)"> + <pattern> + <token>mental</token> + <token>telepathy</token> + </pattern> + <message>Use simply <suggestion>\2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="telepathy" type="incorrect">Do cats really use <marker>mental telepathy</marker>?</example> + <example type="correct">Do cats really use telepathy?</example> + </rule> + <rule id="MUTUALLY_DEPENDENT_ON_EACH_OTHER" name="mutually dependent on each other (mutually dependent)"> + <pattern> + <token>mutually</token> + <token>dependent</token> + <token>on</token> + <token>each</token> + <token>other</token> + </pattern> + <message>Use simply <suggestion>\1 \2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="mutually dependent" type="incorrect">Well, they're <marker>mutually dependent on each other</marker>.</example> + <example type="correct">Well, they're mutually dependent.</example> + </rule> + <rule id="NEVER_AT_ANY_TIME" name="never at any time (never)"> + <pattern> + <token>never</token> + <token>at</token> + <token>any</token> + <token>time</token> + </pattern> + <message>Use simply <suggestion>\1</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="never" type="incorrect">I was <marker>never at any time</marker> with that woman.</example> + <example type="correct">I was never with that woman.</example> + </rule> + <rule id="NOW_CURRENTLY" name="now currently (now)"> + <pattern> + <token>now</token> + <token>currently</token> + </pattern> + <message>Use simply <suggestion>\1</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="now" type="incorrect">She is <marker>now currently</marker> the ambassador.</example> + <example type="correct">She is now the ambassador.</example> + </rule> + <rule id="ONE_AND_THE_SAME" name="one and the same (the same)"> + <pattern> + <token>one</token> + <token>and</token> + <token>the</token> + <token>same</token> + </pattern> + <message>Use simply <suggestion>\3 \4</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="the same" type="incorrect">Santa Claus and Saint Nick are <marker>one and the same</marker> person.</example> + <example type="correct">Santa Claus and Saint Nick are the same person.</example> + </rule> + <rule id="OR_ALTERNATIVELY" name="or alternatively (or)"> + <pattern> + <token>or</token> + <token>alternatively</token> + </pattern> + <message>Use simply <suggestion>\1</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="or" type="incorrect">We can either do this now <marker>or alternatively</marker> leave it for tomorrow.</example> + <example type="correct">We can either do this now or leave it for tomorrow.</example> + </rule> + <rule id="PASSING_FAD" name="passing fad (fad)"> + <pattern> + <token>passing</token> + <token regexp="yes">fad|fads</token> + </pattern> + <message>Use simply <suggestion>\2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="fad" type="incorrect">Computers are just a <marker>passing fad</marker>.</example> + <example type="correct">Computers are just a fad.</example> + </rule> + <rule id="PAST_EXPERIENCE_MEMORY" name="past experience/memory (experience/memory)"> + <pattern> + <token>past</token> + <token inflected="yes" regexp="yes">experience|memory</token> + </pattern> + <message>Use simply <suggestion>\2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="experience" type="incorrect">We know from <marker>past experience</marker> that weakness breeds contempt.</example> + <example type="correct">We know from experience that weakness breeds contempt.</example> + </rule> + <rule id="PERIOD_OF_TIME" name="period of time (period)"> + <pattern> + <token>period</token> + <token>of</token> + <token>time</token> + </pattern> + <message>Use simply <suggestion>\1</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="period" type="incorrect">Horses were absent throughout that <marker>period of time</marker>.</example> + <example type="correct">Horses were absent throughout that period.</example> + </rule> + <rule id="PERSONAL_OPINION_FRIENDSHIP" name="personal charm/belongings/opinion/friendship (charm/belongings/opinion/belongings)"> + <pattern> + <token>personal</token> + <token regexp="yes">charm|belongings|opinion|friendship</token> + </pattern> + <message>Use simply <suggestion>\2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="opinion" type="incorrect">In my <marker>personal opinion</marker>, canaries are quite tasty.</example> + <example type="correct">In my opinion, canaries are quite tasty.</example> + </rule> + <rule id="POINT_BEING_IS_THAT" name="point being is that (point is that/point being that)"> + <pattern> + <token>point</token> + <token>being</token> + <token>is</token> + <token>that</token> + </pattern> + <message>Did you mean <suggestion>\1 \3 \4</suggestion> or <suggestion>\1 \2 \4</suggestion>?</message> + <short>Redundant phrase</short> + <example correction="point is that|point being that" type="incorrect">The <marker>point being is that</marker> Russia and Japan weren't even at war.</example> + <example type="correct">The point is that Russia and Japan weren't even at war</example> + </rule> + <rule default="off" id="REASON_WHY" name="reason why (reason)"> + <pattern mark_from="1"> + <token>the</token> + <token>reason</token> + <token>why</token> + </pattern> + <message>Use simply <suggestion>\2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="reason" type="incorrect">The <marker>reason why</marker> I did that is simple.</example> + <example type="correct">The reason I did that is simple.</example> + </rule> + <rule id="SO_THEREFORE" name="so therefore (therefore)"> + <pattern> + <token>so</token> + <token>therefore</token> + </pattern> + <message>Use simply <suggestion>\1</suggestion> or <suggestion>\2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="so|therefore" type="incorrect">I am me, the only me, <marker>so therefore</marker> I am unique, which in turn makes me special :)</example> + <example type="correct">I am me, the only me, so I am unique, which in turn makes me special :)</example> + </rule> + <rule id="THERAPEUTIC_TREATMENT" name="therapeutic treatment (treatment)"> + <pattern> + <token>therapeutic</token> + <token>treatment</token> + </pattern> + <message>Use simply <suggestion>\2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="treatment" type="incorrect">My swelled knee required special <marker>therapeutic treatment</marker>.</example> + <example type="correct">My swelled knee required special treatment.</example> + </rule> + <rule id="RUSTIC_COUNTRY" name="rustic country (rustic)"> + <pattern> + <token>rustic</token> + <token>country</token> + </pattern> + <message>Use simply <suggestion>\1</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="rustic" type="incorrect">She loved her <marker>rustic country</marker> kitchen.</example> + <example type="correct">She loved her rustic kitchen.</example> + </rule> + <rule id="SAFE_HAVEN" name="safe haven (haven)"> + <pattern> + <token>safe</token> + <token>haven</token> + </pattern> + <message>Use simply <suggestion>\2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="haven" type="incorrect">They ran for the forest, searching for a <marker>safe haven</marker>.</example> + <example type="correct">They ran for the forest, searching for a haven.</example> + </rule> + <rule id="SAME_IDENTICAL" name="same identical (same)"> + <pattern> + <token>same</token> + <token>identical</token> + </pattern> + <message>Use simply <suggestion>\1</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="same" type="incorrect">They wore the <marker>same identical</marker> dress.</example> + <example type="correct">They wore the same dress.</example> + </rule> + <rule id="USUAL_CUSTOM" name="usual custom (custom)"> + <pattern> + <token>usual</token> + <token>custom</token> + </pattern> + <message>Use simply <suggestion>\2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="custom" type="incorrect">Eggnog on Christmas is our <marker>usual custom</marker>.</example> + <example type="correct">Eggnog on Christmas is our custom.</example> + </rule> + <rule id="VERY_UNIQUE" name="very unique (unique)"> + <pattern> + <token regexp="yes">very|strikingly|most|really|totally</token> + <token>unique</token> + </pattern> + <message>Use simply <suggestion>\2</suggestion>.</message> + <short>Redundant phrase</short> + <example correction="unique" type="incorrect">Walk until you see the <marker>very unique</marker> building on your right.</example> + <example type="correct">Walk until you see a unique building on your right.</example> + </rule> + <rule default="off" id="WHETHER_OR_NOT" name="whether or not (whether)"> + <pattern> + <token>whether</token> + <token>or</token> + <token>not</token> + </pattern> + <message>In most contexts, this phrase is redundant and can be replaced with <suggestion>\1</suggestion>. However, it is correct if you mean 'regardless of whether'.</message> + <short>Redundant phrase</short> + <example correction="whether" type="incorrect">What the government decides to do depends on <marker>whether or not</marker> the bill passes.</example> + <example type="correct">What the government decides to do depends on whether the bill passes.</example> + </rule> + </category> + <category name="Bad style"> + <rule default="off" id="SENT_START_NUM" name="Number starting a sentence"> + <pattern> + <token postag="SENT_START"></token> + <token regexp="yes">\d+</token> + </pattern> + <message>Numbers at the start of the sentence should be written as words.</message> + <short>Number starting a sentence</short> + <example type="incorrect"><marker>12</marker> soldiers were killed!</example> + <example type="correct">Twelve soldiers were killed!</example> + </rule> + <rule default="off" id="HOPEFULLY" name="Word order: 'Hopefully' starting a sentence"> + <pattern> + <token postag="SENT_START"></token> + <token>hopefully</token> + </pattern> + <message>Many style books advice that a sentence should not start with 'hopefully'.</message> + <short>Bad style</short> + <example type="incorrect"><marker>Hopefully</marker>, this will be a great grammar checker.</example> + <example type="correct">The prisoner thought hopefully about the prospect for escape.</example> + </rule> + <rule id="THREE_NN" name="Readability: Three nouns in a row"> + <pattern> + <token postag="NN|NN:.*" postag_regexp="yes" regexp="yes">.{2,}<exception regexp="yes">today|yesterday|tomorrow|now|in|are</exception><exception postag="VBG|VB|VBP|VBD|VBN|VBG|RB|MD|IN|JJ.*|CC|DT" postag_regexp="yes"></exception></token> + <token postag="NN|NN:.*" postag_regexp="yes" regexp="yes">.{2,}<exception regexp="yes">today|yesterday|tomorrow|now|in|are</exception><exception postag="VBG|VB|VBP|VBD|VBN|VBG|RB|MD|IN|JJ.*|CC" postag_regexp="yes"></exception></token> + <token postag="NN|NN:.*" postag_regexp="yes" regexp="yes">.{2,}<exception regexp="yes">today|yesterday|tomorrow|now|in|are</exception><exception postag="VBG|VB|VBP|VBD|VBN|VBG|RB|MD|IN|JJ.*|CC" postag_regexp="yes"></exception></token> + </pattern> + <message>You used three nouns after one another, and this might decrease readability. You might consider rewording the sentence.</message> + <short>Bad style</short> + <example type="incorrect">The <marker>security protection software</marker> we offer is the state-of-the art achievement.</example> + <example type="correct">The security software we offer is the state-of-the art achievement.</example> + </rule> + </category> + <category name="Capitalization"> + <rulegroup default="off" id="EN_CAPITALIZE" name="Capitalize lowercase words ('i am')"> + <rule> + <pattern case_sensitive="yes"> + <and> + <token inflected="yes" regexp="yes">[A-Z][a-z]+</token> + <token regexp="yes">[a-z]+</token> + </and> + </pattern> + <message>The word \1 probably should be uppercase: <suggestion><match case_conversion="startupper" no="1"></match></suggestion>.</message> + <example correction="Susan" type="incorrect">My name is <marker>susan</marker>.</example> + <example type="correct">My name is Susan.</example> + </rule> + <rule> + <pattern case_sensitive="yes"> + <token>i</token> + </pattern> + <message>This should be written in uppercase: <suggestion>I</suggestion>.</message> + <example correction="I" type="incorrect">Who do you think <marker>i</marker> am?</example> + <example type="correct">Who do you think I am?</example> + </rule> + <rule> + <pattern case_sensitive="yes" mark_from="2"> + <token>"</token> + <and> + <token inflected="yes" regexp="yes">[A-Z][a-z]+</token> + <token regexp="yes">[a-z]+</token> + </and> + <token postag="NN" regexp="yes">[a-z]+</token> + </pattern> + <message>The word \3 should probably be written in uppercase: <suggestion><match case_conversion="startupper" no="3"></match></suggestion>.</message> + <example correction="Monthly" type="incorrect">This is a story from "atlantic <marker>monthly</marker>".</example> + <example type="correct">This is a story from "The Atlantic Monthly".</example> + </rule> + <rule> + <pattern case_sensitive="yes"> + <token postag="UNKNOWN" regexp="yes">[a-z]+</token> + </pattern> + <message>The word \1 should probably be uppercase:<suggestion><match case_conversion="startupper" no="1"></match></suggestion>.</message> + <example correction="Sobol" type="incorrect">Eve <marker>sobol</marker>, Indiana</example> + <example type="correct">Eve Sobol, Indiana</example> + </rule> + <rule> + <pattern case_sensitive="yes"> + <token postag="NNP" regexp="yes">[a-z]+</token> + </pattern> + <message>The word \1 should probably be uppercase: <suggestion><match case_conversion="startupper" no="1"></match></suggestion>.</message> + <example correction="Susan" type="incorrect">This is <marker>susan</marker>.</example> + <example type="correct">This is Susan.</example> + </rule> + </rulegroup> + </category> +</rules> |