summaryrefslogtreecommitdiffstats
path: root/JLanguageTool/src/rules/en
diff options
context:
space:
mode:
Diffstat (limited to 'JLanguageTool/src/rules/en')
-rw-r--r--JLanguageTool/src/rules/en/det_a.txt209
-rw-r--r--JLanguageTool/src/rules/en/det_an.txt89
-rw-r--r--JLanguageTool/src/rules/en/grammar.xml5816
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>