Permalink
d39173f Jan 22, 2017
@TiagoSantos81 @marcoagpinto @danielnaber @jaumeortola
14094 lines (13365 sloc) 672 KB
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="../print.xsl"
title="Pretty print" ?>
<?xml-stylesheet type="text/css" href="../rules.css"
title="Easy editing stylesheet" ?>
<!--
Portuguese (Portugal - prereform + postreform) - Grammar and Typo Rules for LanguageTool.
Copyright © 2012-2017 Marco A.G.Pinto (www.marcoagpinto.com)
Copyright © 2016-2017 Matheus Poletto
Copyright © 2016-2017 Tiago F. Santos
Thanks to Juan Martorell, Daniel Naber and Yakov Reztsov who mentored the project.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
$Id: grammar.xml,v 1.200 2017-01-09 14:51:00 marcoagpinto Exp $
-->
<!DOCTYPE rules [
<!ENTITY meses_ano_abrev "jan|fev|mar|abr|mai|jun|jul|ago|set|out|nov|dez">
<!ENTITY meses_ano "janeiro|fevereiro|março|abril|maio|junho|julho|agosto|setembro|outubro|novembro|dezembro">
<!ENTITY dias_semana_abrev "seg|ter|qua|qui|sex|sáb|dom">
<!ENTITY dias_semana "segunda|terça|quarta|quinta|sexta|sábado|domingo">
<!ENTITY expressoes_de_tempo "(segundo|minuto|hora|dia|semana|(bi|tri|quadri|se)mestre|ano|década|decénio|mil[éê]nio)s?|mês|meses">
<!ENTITY negacoes "não|nunca|ninguém|nada|jamais|tampouco">
<!ENTITY contracoes_MS "ao|do|dum|dele|deste|desse|daquele|disto|disso|daquilo|doutro|no|num|nele|nesse|neste|naquele|nisto|nisso|naquilo|noutro|pelo|algum|mo|to|lho">
<!ENTITY contracoes_FS "à|da|duma|dela|desta|dessa|daquela|doutra|na|numa|nela|nessa|nesta|naquela|noutra|pela|alguma|ma|ta|lha">
<!ENTITY contracoes_MP "aos|dos|duns|deles|destes|desses|daqueles|doutros|nos|nuns|neles|nesses|nestes|naqueles|noutros|pelos|alguns|mos|tos|lhos">
<!ENTITY contracoes_FP "às|das|dumas|delas|destas|dessas|daquelas|doutras|nas|numas|nelas|nessas|nestas|naquelas|noutras|pelas|algumas|mas|tas|lhas">
<!ENTITY pontos_cardeais "norte|sul|este|oeste|ocidente|oriente|nascente|poente|nordeste|sudeste|noroeste|sudoeste">
<!ENTITY numero_por_extenso "uma?|d(ois|uas)|três|quatro|cinco|seis|sete|oito|nove|dez|dezena|dezenas|onze|doze|treze|catorze|quinze|dez[ae]sseis|dez[ae]ssete|dezoito|dezanove|vinte|trinta|quarenta|cinquenta|sessenta|setenta|oitenta|noventa|cem|centos?|duzentos|trezentos|quatrocentos|quinhentos|seiscentos|setecentos|oitocentos|novecentos|mil|milhão|milhões|bilião|biliões|trilião|triliões">
<!ENTITY unidades_de_medida "([µnmcdhk]|da)?[gmlsJNWCVSFTH][23²³]?|º[CFK]|Hz|cd|lm|mol|Pa|Wb|rad|sr|lx|Bq|Gy|Sv|kat">
<!ENTITY tabela_periodica "H|He|Li|Be|B|C|N|O|F|Ne|Na|Mg|Al|Si|P|S|Cl|Ar|K|Ca|Sc|Ti|V|Cr|Mn|Fe|Co|Ni|Cu|Zn|Ga|Ge|As|Se|Br|Kr|Rb|Sr|Y|Zr|Nb|Mo|Tc|Ru|Rh|Pd|Ag|Cd|In|Sn|Sb|Te|I|Xe|Cs|Ba|La|Ce|Pr|Nd|Pm|Sm|Eu|Gd|Tb|Dy|Ho|Er|Tm|Yb|Lu|Hf|Ta|W|Re|Os|Ir|Pt|Au|Hg|Tl|Pb|Bi|Po|At|Rn|Fr|Ra|Ac|Th|Pa|U|Np|Pu|Am|Cm|Bk|Cf|Es|Fm|Md|No|Lr|Rf|Db|Sg|Bh|Hs|Mt|Ds|Rg|Cn|Nh|Fl|Mc|Lv|Ts|Og">
<!ENTITY pronomes_de_tratamento "(alteza|senhoria|majestade|realeza|magnificência|divindade|excelência|reverência|reverendíssima|beatitude|graça|paternidade|eminência|santidade)s?">
<!ENTITY verbos_de_ligacao "andar|continuar|estar|ficar|parecer|permanecer|semelhar|ser|virar|viver">
]>
<rules lang="pt" xsi:noNamespaceSchemaLocation="../rules.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- Unification rules retrieved from galician grammar.xml - START-->
<unification feature="number">
<equivalence type="singular">
<token postag="(N..|[ADP]...|V....)S.+" postag_regexp="yes"/>
</equivalence>
<equivalence type="plural">
<token postag="(N..|[ADP]...|V....)P.+" postag_regexp="yes"/>
</equivalence>
</unification>
<unification feature="gender">
<equivalence type="masc">
<token postag="(N.|[ADP]..|V.....)[MC].*" postag_regexp="yes"/>
</equivalence>
<equivalence type="fem">
<token postag="(N.|[ADP]..|V.....)[FC].*" postag_regexp="yes"/>
</equivalence>
</unification>
<unification feature="person">
<equivalence type="first">
<token postag="(V...|PP)1.*" postag_regexp="yes"/>
</equivalence>
<equivalence type="second">
<token postag="(V...|PP)2.*" postag_regexp="yes"/>
</equivalence>
<equivalence type="third">
<token postag="(V...|PP)3.*" postag_regexp="yes"/>
</equivalence>
</unification>
<!-- Unification rules retrieved from galician grammar.xml - END -->
<!--
****************************************
POSSÍVEIS ERROS GRAMATICAIS
****************************************
-->
<category id="GRAMMAR" name="Gramática Geral" type="grammar">
<!-- Tiago F. Santos Rules Start ****START**** -->
<!-- ********************************************************** -->
<rulegroup id="GENERAL_GENDER_AGREEMENT_ERRORS" name="Erros de concordância de género (geral)">
<!-- General gender concordance errors -->
<!-- Created by Tiago F. Santos, Portuguese rule, 2016-10-21 -->
<url>https://pt.wikipedia.org/wiki/Concord%C3%A2ncia_nominal</url>
<rule>
<pattern>
<token negate='yes' regexp='yes'>e|de|-</token>
<marker>
<token postag='(D[ADIP].|P[ID]0|NC|A..)MS.+' postag_regexp='yes'>
<exception postag='(N.|A..|Z.)[CF]S.+|VM[CSIG].+|C.|R.|SPS00' postag_regexp='yes'></exception>
<exception regexp='yes'>e|ser|são|termo|nome</exception></token>
<token postag='(N.|A..|Z.)F.+' postag_regexp='yes'>
<exception postag='(N.|A..|Z.)[CM].+|VM[CSI].+|C.|R.|SPS00' postag_regexp='yes'></exception>
<exception regexp='yes'>uma|mas</exception>
</token>
</marker>
<token negate='yes' regexp='yes'>e|de|-</token>
</pattern>
<message>Erro de concordância de género.</message>
<suggestion><match no="2" postag="(D[ADIP].|P[ID]0|NC|A..)MS(.+)" postag_replace='$1FS$2' postag_regexp="yes"/> \3</suggestion>
<suggestion>\2 <match no="3" postag="(N.|A..)F.(.+)" postag_replace='$1MS$2' postag_regexp="yes"/></suggestion>
<example correction='Uma vaca|Um boi'><marker>Um vaca</marker> está no pasto.</example>
<example correction='uma omelete|um (omelete)'>Você pode fazer <marker>um omelete</marker> espanhola para eu jantar, por favor?</example>
<example>O Um torna-se Dois, o Dois torna-se Três.</example>
<example>Diz-se que a cada dia nasce um trouxa, e disso o vigarista sabe.</example>
<example correction='uma sanduíche|um (sanduíche)'>Estão comendo <marker>um sanduíche</marker>.</example>
</rule>
<rule>
<pattern>
<token negate='yes' regexp='yes'>e|de|-</token>
<marker>
<token regexp='yes'>&contracoes_MS;</token>
<token postag='(N.|A..|DP.)F.+' postag_regexp='yes'>
<exception postag='(N.|A..|DP.)[CM].+|VM[CSI].+|C.|R.|SPS00' postag_regexp='yes'></exception>
<exception regexp='yes'>uma|mas</exception>
</token>
</marker>
<token negate='yes' regexp='yes'>e|de|-</token>
</pattern>
<message>Erro de concordância de género.</message>
<example type='incorrect'>Foi resolvido <marker>no hora</marker> certa.</example>
<example type='correct'>Foi resolvido <marker>na hora</marker> certa.</example>
</rule>
<rule>
<pattern>
<token negate='yes' regexp='yes'>e|de|-</token>
<marker>
<token postag='(D[ADIP].|P[ID]0|NC|A..)MP.+' postag_regexp='yes'>
<exception postag='(N.|A..|Z.)[CF]P.+|VM[CSIG].+|C.|R.|SPS00' postag_regexp='yes'></exception>
<exception regexp='yes'>termos|nomes</exception></token>
<token postag='(N.|A..|Z.)F.+' postag_regexp='yes'>
<exception postag='(N.|A..|Z.)[CM].+|VM[CSI].+|C.|R.|SPS00' postag_regexp='yes'></exception>
<exception regexp='yes'>uma|mas</exception>
</token>
</marker>
<token negate='yes' regexp='yes'>e|de|-</token>
</pattern>
<message>Erro de concordância de género.</message>
<suggestion><match no="2" postag="(D[ADIP].|P[ID]0|NC|A..)MP(.+)" postag_replace='$1FP$2' postag_regexp="yes"/> \3</suggestion>
<suggestion>\2 <match no="3" postag="(N.|A..)F.(.+)" postag_replace='$1MP$2' postag_regexp="yes"/></suggestion>
<example correction='As invasoras|Os invasores'><marker>Os invasoras</marker> holandeses decidiram ir em direção ao Rio Grande do Norte...</example>
<example correction='As frases|Os (frases)'><marker>Os frases</marker> estão erredas.</example>
<example correction='Umas cadelas|Uns cães|Uns cãos'><marker>Uns cadelas</marker> estão na rua.</example>
<example type='correct'><marker>Os bois</marker> estão no pasto.</example>
</rule>
<rule>
<pattern>
<token negate='yes' regexp='yes'>e|de|-</token>
<marker>
<token regexp='yes'>&contracoes_MP;</token>
<token postag='(N.|A..|DP.)F.+' postag_regexp='yes'>
<exception postag='(N.|A..|DP.)[CM].+|VM[CSI].+|C.|R.|SPS00' postag_regexp='yes'></exception>
<exception regexp='yes'>uma|mas</exception>
</token>
</marker>
<token negate='yes' regexp='yes'>e|de|-</token>
</pattern>
<message>Erro de concordância de género.</message>
<example type='incorrect'><marker>Alguns frases</marker> tem erros gramaticais.</example>
<example type='correct'><marker>Algumas frases</marker> tem erros gramaticais.</example>
</rule>
<rule>
<pattern>
<token negate='yes' regexp='yes'>e|de|-</token>
<marker>
<token postag='(D[ADIP].|P[ID]0|NC|A..)FS.+' postag_regexp='yes'>
<exception postag='(N.|A..|Z.)[CM]S.+|VM[CSI].+|C.|R.|SPS00' postag_regexp='yes'></exception>
<exception regexp='yes'>e|ser|a|mas|palavra|letra|comunidade</exception></token>
<token postag='(N.|A..|Z.)M.+' postag_regexp='yes'>
<exception postag='(N.|A..|Z.)[CF].+|VM[CSIG].+|C.|R.|SPS00' postag_regexp='yes'></exception>
<exception regexp='yes'>um|uns|ser|&pontos_cardeais;|números?|são</exception></token>
</marker>
<token negate='yes' regexp='yes'>e|de|-</token>
</pattern>
<message>Erro de concordância de género.</message>
<suggestion><match no="2" postag="(D[ADIP].|P[ID]0|NC|A..)FS(.+)" postag_replace='$1MS$2' postag_regexp="yes"/> \3</suggestion>
<suggestion>\2 <match no="3" postag="(N.|A..)M.(.+)" postag_replace='$1FS$2' postag_regexp="yes"/></suggestion>
<example correction='Um boi|Uma vaca'><marker>Uma boi</marker> está no pasto.</example>
<example>À comunidade Mozilla (Firefox, Thunderbird e SeaMonkey).</example>
<example>Uma vaca está no pasto.</example>
</rule>
<rule>
<pattern>
<token negate='yes' regexp='yes'>e|de|-</token>
<marker>
<token regexp='yes'>&contracoes_FS;</token>
<token postag='(N.|A..|DP.)M.+' postag_regexp='yes'>
<exception postag='(N.|A..|DP.)[CF].+|VM[CSIG].+|C.|R.|SPS00' postag_regexp='yes'></exception>
<exception regexp='yes'>um|uns|ser|&pontos_cardeais;|números?|são</exception></token>
</marker>
<token negate='yes' regexp='yes'>e|de|-</token>
</pattern>
<message>Erro de concordância de género.</message>
<example type='incorrect'><marker>Alguma boi</marker> está no pasto.</example>
<example type='correct'>Algum vaca está no pasto.</example>
</rule>
<rule>
<pattern>
<token negate='yes' regexp='yes'>e|de|-</token>
<marker>
<token postag='(D[ADIP].|P[ID]0|NC|A..)FP.+' postag_regexp='yes'>
<exception postag='(N.|A..|Z.)[CM]P.+|VM[CSI].+|C.|R.|SPS00' postag_regexp='yes'></exception>
<exception regexp='yes'>e|mas|palavras|letras</exception></token>
<token postag='(N.|A..|Z.)M.+' postag_regexp='yes'>
<exception postag='(N.|A..|Z.)[CF].+|VM[CSIG].+|C.|R.|SPS00' postag_regexp='yes'></exception>
<exception regexp='yes'>um|uns|ser|&pontos_cardeais;|números?|são</exception></token>
</marker>
<token negate='yes' regexp='yes'>e|de|-</token>
</pattern>
<message>Erro de concordância de género.</message>
<suggestion><match no="2" postag="(D[ADIP].|P[ID]0|NC|A..)FP(.+)" postag_replace='$1MP$2' postag_regexp="yes"/> \3</suggestion>
<suggestion>\2 <match no="3" postag="(N.|A..)M.(.+)" postag_replace='$1FP$2' postag_regexp="yes"/></suggestion>
<example correction='Uns bois|Umas vacas'><marker>Umas bois</marker> estão no pasto.</example>
<example type='correct'><marker>Umas vacas</marker> estão no pasto.</example>
</rule>
<rule>
<pattern>
<token negate='yes' regexp='yes'>e|de|-</token>
<marker>
<token regexp='yes'>&contracoes_FP;
<exception>mas</exception></token>
<token postag='(N.|A..|DP.)M.+' postag_regexp='yes'>
<exception postag='(N.|A..|DP.)[CF].+|VM[CSIG].+|C.|R.|SPS00' postag_regexp='yes'></exception>
<exception regexp='yes'>um|uns|ser|&pontos_cardeais;|números?|são</exception></token>
</marker>
<token negate='yes' regexp='yes'>e|de|-</token>
</pattern>
<message>Erro de concordância de género.</message>
<example type='incorrect'><marker>Algumas bois</marker> estão no pasto.</example>
<example type='correct'><marker>Algumas vacas</marker> estão no pasto.</example>
</rule>
</rulegroup>
<!-- Specific gender concordance errors - A > Masculine Noun -->
<!-- Created by Tiago F. Santos, Portuguese rule, 2016-10-24 -->
<rule default='off' id="ERRO_DE_CONCORDNCIA_DO_GÉNERO_FEMININO_A" name="Erro de concordância do masculino">
<pattern>
<marker>
<token>a</token>
<token postag='(A..|N.)MS.+' postag_regexp='yes'>
<exception postag='(A..|N.)MS.+' postag_regexp='yes' negate_pos='yes'></exception>
<exception regexp='yes'>um|uns|ser|&pontos_cardeais;|números?|exemplo|fim|favor|sério|tempo|lado|uso|direito</exception></token>
</marker>
<token negate='yes' regexp='yes'>-</token>
</pattern>
<message>Erro de concordância de género.</message>
<suggestion>o \2</suggestion>
<suggestion>a <match no='2' postag='(A..|N.)MS(.+)' postag_replace='$1FS$2' postag_regexp='yes'/></suggestion>
<url>https://pt.wikipedia.org/wiki/Artigo_(gram%C3%A1tica)</url>
<example correction='O boi|A vaca'><marker>A boi</marker> está no pasto.</example>
<example type='correct'>A vaca está no pasto.</example>
</rule>
<!-- Specific gender concordance errors - A > Ended in A -->
<!-- Created by Tiago F. Santos, Portuguese rule, 2016-10-28 -->
<rule default='off' id="A_WORD_A" name="A + palavra terminada em A">
<pattern>
<token regexp='yes'>a</token>
<token postag='(A..|N.)M.+' postag_regexp='yes' regexp='yes'>.+a$
<exception regexp='yes'>palavra|letra</exception></token>
</pattern>
<message>Possível erro de concordância de género.</message>
<suggestion>o \2</suggestion>
<url>https://pt.wikipedia.org/wiki/Artigo_(gram%C3%A1tica)</url>
<example correction="O dogma"><marker>A dogma</marker> de quem sabe muito.</example>
</rule>
<!-- Specific gender concordance errors - A/Em > Nível -->
<!-- Created by Tiago F. Santos, Portuguese rule, 2016-10-28 -->
<rule id="A_NIVEL" name="A nível">
<pattern>
<token regexp='yes'>a|em</token>
<token>nível</token>
</pattern>
<message>Substitua por <suggestion>ao \2</suggestion>.</message>
<url>https://duvidas.dicio.com.br/em-nivel-de-a-nivel-de-ou-ao-nivel-de/</url>
<short>Construção gramatical incorreta.</short>
<example correction="Ao nível"><marker>A nível</marker> de português está muito mau.</example>
</rule>
<!-- Specific gender concordance errors - A/AO > Ponto de -->
<!-- Created by Tiago F. Santos, Portuguese rule, 2016-10-28 -->
<rule default='off' id="A_PONTO" name="Ao ponto de">
<pattern>
<token regexp='yes'>a|ao</token>
<token>ponto</token>
<token min='0'>de</token>
</pattern>
<message>Expressão usualmente confundida.</message>
<url>http://www.portuguesnarede.com/2012/05/ao-ponto-de-ou-ponto-de.html</url>
<short>Construção dúbia.</short>
<example type='incorrect'>Ela estava <marker>ao ponto de</marker> perder o controlo emocional.</example>
</rule>
<!-- Specific gender concordance errors - O > Feminine Noun -->
<!-- Created by Tiago F. Santos, Portuguese rule, 2016-10-24 -->
<rule id="ERRO_DE_CONCORDNCIA_DO_GÉNERO_MASCULINO_O" name="Erro de concordância do masculino">
<pattern>
<marker>
<token>o</token>
<token postag='(A..|N.)F.+' postag_regexp='yes'>
<exception postag='(A..|N.)F.+' postag_regexp='yes' negate_pos='yes'></exception>
<exception regexp='yes'>uma|umas|e|ser|nome|termo</exception></token>
</marker>
<token negate='yes' regexp='yes'>-</token>
</pattern>
<message>Erro de concordância de género.</message>
<suggestion>a \2</suggestion>
<suggestion>o <match no='2' postag='(A..|N.)FS(.+)' postag_replace='$1MS$2' postag_regexp='yes'/></suggestion>
<url>https://pt.wikipedia.org/wiki/Artigo_(gram%C3%A1tica)</url>
<example correction='A cadela|O cão'><marker>O cadela</marker> está no pasto.</example>
<example type='correct'>A cadela está no pasto.</example>
</rule>
<rulegroup id="GENERAL_NUMBER_AGREEMENT_ERRORS" name="Erros de concordância de número (geral)">
<!-- General number concordance errors -->
<!-- Created by Tiago F. Santos, Portuguese rule, 2016-10-19 -->
<url>https://pt.wikipedia.org/wiki/Concord%C3%A2ncia_nominal</url>
<rule>
<pattern>
<token negate='yes' regexp='yes'>e|de|-</token>
<marker>
<token postag='(D[ADIP].|NC|A..)[MC]P.+' postag_regexp='yes'>
<exception postag='(D[ADIP].|NC|A..)[MC]S.+|C.|R.|SPS00' postag_regexp='yes'></exception></token>
<token postag='(N.|A..|Z.)[MC]S.+' postag_regexp='yes'>
<exception postag='(N.|A..|Z.)[MC]P.+|P[ID].[CFM].+|C.|R.|SPS00|VMG0000' postag_regexp='yes'></exception>
<exception regexp="yes">há|são|ser|haver|devido</exception></token>
</marker>
<token negate='yes' regexp='yes'>e|-</token>
</pattern>
<message>Erro de concordância de número.</message>
<suggestion><match no="2" postag="(D[ADIP].|NC|A..)[MC]P(.+)" postag_replace='(D[ADIP].|NC|A..)[MC]S$2' postag_regexp="yes"/> \3</suggestion>
<suggestion>\2 <match no="3" postag="(N.|A..)[MC]S(.+)" postag_replace='(N.|A..|Z.)[MC]P$2' postag_regexp="yes"/></suggestion>
<example correction='O cão|Os cães|Os cãos'><marker>Os cão</marker> está no pasto.</example>
</rule>
<rule>
<pattern>
<token negate='yes' regexp='yes'>e|de|-</token>
<marker>
<token regexp='yes'>&contracoes_MP;</token>
<token postag='(N.|A..|DP.)[MC]S.+' postag_regexp='yes'>
<exception postag='(N.|A..|DP.)[MC]P.+|NPMS.+|P[ID].[CFM].+|C.|R.|SPS00|VMG0000' postag_regexp='yes'></exception>
<exception regexp="yes">há|são|ser|haver|devido|média|mídia</exception></token>
</marker>
<token negate='yes' regexp='yes'>e|-</token>
</pattern>
<message>Erro de concordância de número.</message>
<suggestion>\2 <match no="3" postag="(N.|A..)[MC]S(.+)" postag_replace='(N.|A..|Z.)[MC]P$2' postag_regexp="yes"/></suggestion>
<example correction='dos pais'>É o orgulho <marker>dos pai</marker>.</example>
</rule>
<rule>
<antipattern>
<token regexp='yes'>tod[oa]</token>
<token>ouvidos</token>
</antipattern>
<pattern>
<token negate='yes' regexp='yes'>e|ou|de|-</token>
<marker>
<token postag='(D[ADIP].|NC|A..)[MC]S.+' postag_regexp='yes'>
<exception postag='(D[ADIP].|N.|A..)[MC]P.+|C.|R.|SPS00|VMG0000' postag_regexp='yes'></exception>
<exception regexp="yes">há|são|ser|haver|serão</exception></token>
<token postag='(N.|A..|Z.)[MC]P.+' postag_regexp='yes'>
<exception postag='(N.|A..|Z.)[MC]S.+|P[ID].[CFM].+|C.|R.|SPS00' postag_regexp='yes'></exception></token>
</marker>
<token negate='yes' regexp='yes'>-</token>
</pattern>
<message>Erro de concordância de número.</message>
<suggestion>\2 <match no="3" postag="(N.|A..)[MC]P(.+)" postag_replace='(N.|A..|Z.)[MC]S$2' postag_regexp="yes"/></suggestion>
<suggestion><match no="2" postag="(D[ADIP].|NC|A..)[MC]S(.+)" postag_replace='(D[ADIP].|NC|A..)[MC]P$2' postag_regexp="yes"/> \3</suggestion>
<example correction='Este gato|Estes gatos'><marker>Este gatos</marker> estão no pasto.</example>
<example type='correct'>Sou todo ouvidos</example>
</rule>
<rule>
<antipattern>
<token regexp='yes'>tod[oa]</token>
<token>ouvidos</token>
</antipattern>
<pattern>
<token negate='yes' regexp='yes'>e|ou|de|-</token>
<marker>
<token regexp='yes'>&contracoes_MS;</token>
<token postag='(N.|A..|DP.)[MC]P.+' postag_regexp='yes'>
<exception postag='(N.|A..|DP.)[MC]S.+|P[ID].[CFM].+|C.|R.|SPS00' postag_regexp='yes'></exception></token>
</marker>
<token negate='yes' regexp='yes'>-</token>
</pattern>
<message>Erro de concordância de número.</message>
<suggestion>\2 <match no="3" postag="(N.|A..)[MC]P(.+)" postag_replace='(N.|A..|Z.)[MC]S$2' postag_regexp="yes"/></suggestion>
<suggestion>\2s \3</suggestion>
<example correction='do pai|dos pais'>É o orgulho <marker>do pais</marker>.</example>
</rule>
<rule>
<pattern>
<token negate='yes' regexp='yes'>e|de|-</token>
<marker>
<token postag='(D[ADIP].|NC|A..)[FC]S.+' postag_regexp='yes'>
<exception postag='(D[ADIP].|N.|A..)[FC]P.+|C.|R.' postag_regexp='yes'></exception></token>
<token postag='(N.|A..|Z.)[FC]P.+' postag_regexp='yes'>
<exception postag='(N.|A..|Z.)[FC]S.+|P[ID].[CFM].+|C.|R.|SPS00' postag_regexp='yes'></exception></token>
</marker>
<token negate='yes' regexp='yes'>-</token>
</pattern>
<message>Erro de concordância de número.</message>
<suggestion>\2 <match no="3" postag="(N.|A..)[FC]P(.+)" postag_replace='(N.|A..|Z.)[FC]S$2' postag_regexp="yes"/></suggestion>
<suggestion><match no="2" postag="(D[ADIP].|NC|A..)[FC]S(.+)" postag_replace='(D[ADIP].|NC|A..)[FC]P$2' postag_regexp="yes"/> \3</suggestion>
<example correction='A vaca|As vacas'><marker>A vacas</marker> são malhadas.</example>
</rule>
<rule>
<antipattern>
<token>a</token> <!-- FIXME Improve disambiguator for a as SP cases -->
<token>docentes</token>
</antipattern>
<pattern>
<token negate='yes' regexp='yes'>e|de|-</token>
<marker>
<token regexp='yes'>&contracoes_FS;</token>
<token postag='(N.|A..|DP.)[FC]P.+' postag_regexp='yes'>
<exception postag='(N.|A..|DP.)[FC]S.+|P[ID].[CFM].+|C.|R.|SPS00' postag_regexp='yes'></exception></token><!-- FIXME Review patterns to include passive without crippling detection -->
</marker>
<token negate='yes' regexp='yes'>-</token>
</pattern>
<message>Erro de concordância de número.</message>
<suggestion>\2 <match no="3" postag="(N.|A..)[FC]P(.+)" postag_replace='(N.|A..|Z.)[FC]S$2' postag_regexp="yes"/></suggestion>
<suggestion>\2s \3</suggestion>
<example correction='numa espécie|numas espécies'>Valor contido <marker>numa espécies</marker> por descobrir.</example>
</rule>
<rule>
<pattern>
<token negate='yes' regexp='yes'>e|de|-</token>
<marker>
<token postag='(D[ADIP].|NC|A..)[FC]P.+' postag_regexp='yes'>
<exception postag='(D[ADIP].|N.|A..)[FC]S.+|C.|R.|SPS00' postag_regexp='yes'></exception></token>
<token postag='(N.|A..|Z.)[FC]S.+' postag_regexp='yes'>
<exception postag='(N.|A..|Z.)[FC]P.+|P[ID].[CFM].+|C.|R.|SPS00' postag_regexp='yes'></exception></token>
</marker>
<token negate='yes' regexp='yes'>e|-</token>
</pattern>
<message>Erro de concordância de número.</message>
<suggestion><match no="2" postag="(D[ADIP].|NC|A..)[FC]P(.+)" postag_replace='(D[ADIP].|NC|A..)[FC]S$2' postag_regexp="yes"/> \3</suggestion>
<suggestion>\2 <match no="3" postag="(N.|A..)[FC]S(.+)" postag_replace='(N.|A..|Z.)[FC]P$2' postag_regexp="yes"/></suggestion>
<example correction='A vaca|As vacas'><marker>As vaca</marker> são malhadas.</example>
</rule>
<rule>
<pattern>
<token negate='yes' regexp='yes'>e|de|-</token>
<marker>
<token regexp='yes'>&contracoes_FP;
<exception>mas</exception></token>
<token postag='(N.|A..|DP.)[FC]S.+' postag_regexp='yes'>
<exception postag='(N.|A..|DP.)[FC]P.+|P[ID].[CFM].+|C.|R.|SPS00' postag_regexp='yes'></exception></token>
</marker>
<token negate='yes' regexp='yes'>e|-</token>
</pattern>
<message>Erro de concordância de número.</message>
<suggestion>\2 <match no="3" postag="(N.|A..)[FC]S(.+)" postag_replace='(N.|A..|Z.)[FC]P$2' postag_regexp="yes"/></suggestion>
<example correction='numas espécies'>Valor contido <marker>numas espécie</marker> por descobrir.</example>
</rule>
</rulegroup>
<rulegroup id="LINKING_VERB_PREDICATE_AGREEMENT" name='Concordância dos complementos com o verbo copulativo' default='off'><!-- TODO default='on' after chunker or enumeration disambiguation -->
<!-- Created by Tiago F. Santos, 2017-01-17 -->
<url>https://pt.wikipedia.org/wiki/Verbo_de_liga%C3%A7%C3%A3o</url>
<rule>
<pattern case_sensitive='yes'>
<token inflected='yes' postag_regexp='yes' postag='V....S.+' regexp='yes'>&verbos_de_ligacao;
<exception postag_regexp='yes' postag='V.[NP].+'/></token>
<token postag_regexp='yes' postag='(NC|A..).P.+'>
<exception negate_pos='yes' postag_regexp='yes' postag='(NC|A..).P.+'/></token>
</pattern>
<message>O predicativo tem de concordar em número com o verbo de ligação.</message>
<suggestion>\1 <match no="2" postag="(NC|A..)(.)P(.+)" postag_replace='$1$2S$3' postag_regexp="yes"/></suggestion>
<suggestion><match no="1" postag="(V....)S(.+)" postag_replace='$1P$2' postag_regexp="yes"/> \2</suggestion>
<!--<example correction='é rosa|são rosas'>Isto <marker>é rosas</marker>, Senhor. São rosas.</example>--><!-- TODO rosas? also from verb Rosar - Disambiguate colores/verbs -->
<example correction='é trevo|são trevos'>Isto <marker>é trevos</marker>, Senhor. São trevos.</example>
<example>Tal Estado, ainda que proletário, somente faria permanecer antigas estruturas de dominação de uma parcela da populaç...</example>
<example>Eles têm sido bons vizinhos até hoje.</example>
<example>Nós devemos aprender a viver juntos como irmãos, ou vamos morrer juntos como tolos.</example>
</rule>
<rule>
<pattern case_sensitive='yes'>
<token inflected='yes' postag_regexp='yes' postag='V....P.+' regexp='yes'>&verbos_de_ligacao;
<exception postag_regexp='yes' postag='V.[NP].+'/></token>
<token postag_regexp='yes' postag='(NC|A..).S.+'>
<exception negate_pos='yes' postag_regexp='yes' postag='(NC|A..).S.+'/></token>
</pattern>
<message>O predicativo tem de concordar em número com o verbo de ligação.</message>
<suggestion>\1 <match no="2" postag="(NC|A..)(.)S(.+)" postag_replace='$1$2P$3' postag_regexp="yes"/></suggestion>
<suggestion><match no="1" postag="(V....)P(.+)" postag_replace='$1S$2' postag_regexp="yes"/> \2</suggestion>
<!--<example correction='são rosas|é rosa'>Isto <marker>são rosa</marker>, Senhor. São rosas.</example>--><!-- TODO rosas? also from verb Rosar - Disambiguate colores/verbs -->
<example correction='são trevos|é trevo'>Isto <marker>são trevo</marker>, Senhor. São trevos.</example>
<example>Constituiu-se a Capitania Real de São José do Rio Negro pela Carta-régia de 3 de março de 17...</example>
<example>As roupas deles são bem parecidas com as dos nossos ancestrais.</example>
<example>Os principais rios são Paraná (o maior), Pilcomayo, Paraguai, Bermejo, Colorado...</example>
</rule>
</rulegroup>
<rulegroup id="GENERAL_VERB_AGREEMENT_ERRORS" name="Erros de concordância verbal (geral)">
<!-- General verbal concordance errors -->
<!-- Created by Tiago F. Santos, Portuguese rule, 2016-10-16 -->
<url>http://www.infoescola.com/portugues/concordancia-verbal/</url>
<rule>
<antipattern>
<token/>
<token regexp='yes' case_sensitive='yes'>e|ou</token>
<token>eu</token>
<token min="0" max="2" postag='CS|R.' postag_regexp='yes'/>
<token postag='VM[CIS].([23]S0|[123]P0)' postag_regexp='yes'>
<exception postag='VM[CIS].1S0' postag_regexp='yes'></exception></token>
</antipattern>
<pattern>
<token>eu</token>
<token min="0" max="2" postag='CS|R.' postag_regexp='yes'/>
<token postag='VM[CIS].([23]S0|[123]P0)' postag_regexp='yes'>
<exception postag='VM[CIS].1S0' postag_regexp='yes'></exception></token>
</pattern>
<message>Erro de concordância verbal.</message>
<suggestion><match no='1' include_skipped='all'/> <match no='2' include_skipped='all'/> <match no='3' include_skipped='all' postag='(VM[CIS].)([23]S0|[123]P0)' postag_replace='$11S0' postag_regexp='yes'/></suggestion>
<example correction='Eu passeio'><marker>Eu passeiam</marker> na praia.</example>
</rule>
<rule>
<antipattern>
<token/>
<token regexp='yes' case_sensitive='yes'>e|ou</token>
<token>tu</token>
<token min="0" max="2" postag='CS|R.' postag_regexp='yes'/>
<token postag='VM[CIS].([13]S0|[123]P0)' postag_regexp='yes'>
<exception postag='VM[CIS].2S0' postag_regexp='yes'></exception></token>
</antipattern>
<pattern>
<token>tu</token>
<token min="0" max="2" postag='CS|R.' postag_regexp='yes'/>
<token postag='VM[CIS].([13]S0|[123]P0)' postag_regexp='yes'>
<exception postag='VM[CIS].2S0' postag_regexp='yes'></exception></token>
</pattern>
<message>Erro de concordância verbal.</message>
<suggestion><match no='1' include_skipped='all'/> <match no='2' include_skipped='all'/> <match no='3' include_skipped='all' postag='(VM[CIS].)([13]S0|[123]P0)' postag_replace='$12S0' postag_regexp='yes'/></suggestion>
<example correction='Tu não passeias'><marker>Tu não passeia</marker> na praia.</example>
</rule>
<rule>
<antipattern>
<token/>
<token regexp='yes' case_sensitive='yes'>e|ou</token>
<token regexp="yes">ele|ela|você</token>
<token min="0" max="2" postag='CS|R.' postag_regexp='yes'/>
<token postag='VM[CIS].([12]S0|[123]P0)' postag_regexp='yes'>
<exception postag='VM[CIS].3S0' postag_regexp='yes'></exception>
<exception>como</exception></token>
</antipattern>
<pattern>
<token regexp="yes">ele|ela|você</token>
<token min="0" max="2" postag='CS|R.' postag_regexp='yes'/>
<token postag='VM[CIS].([12]S0|[123]P0)' postag_regexp='yes'>
<exception postag='VM[CIS].3S0' postag_regexp='yes'></exception>
<exception>como</exception></token>
</pattern>
<message>Erro de concordância verbal.</message>
<suggestion><match no='1' include_skipped='all'/> <match no='2' include_skipped='all'/> <match no='3' include_skipped='all' postag='(VM[CIS].)([12]S0|[123]P0)' postag_replace='$13S0' postag_regexp='yes'/></suggestion>
<example correction='Ele não passeia'><marker>Ele não passeiam</marker> na praia.</example>
</rule>
<rule>
<pattern>
<token>nós</token>
<token min="0" max="2" postag='CS|R.' postag_regexp='yes'/>
<token postag='VM[CIS].([23]P0|[123]S0)' postag_regexp='yes'>
<exception postag='VM[CIS].1P0' postag_regexp='yes'></exception></token>
</pattern>
<message>Erro de concordância verbal.</message>
<suggestion><match no='1' include_skipped='all'/> <match no='2' include_skipped='all'/> <match no='3' include_skipped='all' postag='(VM[CIS].)([23]P0|[123]S0)' postag_replace='$11P0' postag_regexp='yes'/></suggestion>
<example correction='Nós não passeamo|Nós não passeamos'><marker>Nós não passeia</marker> na praia.</example>
<!-- TODO 'Nós não passeamo' is a inflection for reflexive forms. Find a way to remove it from suggestions -->
<example type="correct"><marker>Nós ainda não passeamos</marker> na praia.</example>
</rule>
<rule>
<pattern>
<token>eu</token>
<token regexp='yes'>e|ou</token>
<token min='0' max='1' postag='DA0[MF].0' postag_regexp='yes'/>
<token/>
<token min="0" max="2" postag='CS|R.' postag_regexp='yes'/>
<token postag='VM[CIS].([23]P0|[123]S0)' postag_regexp='yes'>
<exception postag='VM[CIS].1P0' postag_regexp='yes'></exception></token>
</pattern>
<message>Erro de concordância verbal.</message>
<suggestion>\1 <match no='2' include_skipped='all'/> <match no='3' include_skipped='all'/> <match no='4' include_skipped='all'/> <match no='5' include_skipped='all'/> <match no='6' include_skipped='all' postag='(VM[CIS].)([23]P0|[123]S0)' postag_replace='$11P0' postag_regexp='yes'/></suggestion>
<example correction='Eu e Rita passeamo|Eu e Rita passeamos'><marker>Eu e Rita passeiam</marker> na praia.</example>
<example type="correct"><marker>Eu e Rita passeiamos</marker> na praia.</example>
</rule>
<rule>
<pattern>
<token regexp='yes'>tu|você|vós|vocês|ele|ela|eles|elas</token>
<token regexp='yes'>e|ou</token>
<token>eu</token>
<token min="0" max="2" postag='CS|R.' postag_regexp='yes'/>
<token postag='VM[CIS].([23]P0|[123]S0)' postag_regexp='yes'>
<exception postag='VM[CIS].1P0' postag_regexp='yes'></exception></token>
</pattern>
<message>Erro de concordância verbal.</message>
<suggestion>\1 \2 <match no='3' include_skipped='all'/> <match no='4' include_skipped='all'/> <match no='5' include_skipped='all' postag='(VM[CIS].)([23]P0|[123]S0)' postag_replace='$11P0' postag_regexp='yes'/></suggestion>
<example correction='Tu e eu passeamo|Tu e eu passeamos'><marker>Tu e eu passeio</marker> na praia.</example>
<example type="correct">Tu e eu passeamos na praia.</example>
</rule>
<rule>
<pattern>
<token>vós</token>
<token min="0" max="2" postag='CS|R.' postag_regexp='yes'/>
<token postag='VM[CIS].([13]P0|[123]S0)' postag_regexp='yes'>
<exception postag='VM[CIS].2P0' postag_regexp='yes'></exception></token>
</pattern>
<message>Erro de concordância verbal.</message>
<suggestion><match no='1' include_skipped='all'/> <match no='2' include_skipped='all'/> <match no='3' include_skipped='all' postag='(VM[CIS].)([13]P0|[123]S0)' postag_replace='$12P0' postag_regexp='yes'/></suggestion>
<example correction='Vós passeai|Vós passeais'><marker>Vós passeiam</marker> na praia.</example>
<example type="correct">Vós passeais na praia.</example>
</rule>
<rule>
<antipattern>
<token>eu</token>
<token regexp='yes' case_sensitive='yes'>e|ou</token>
<token regexp='yes'>eles|elas|vocês</token>
<token min="0" max="2" postag='CS|R.' postag_regexp='yes'/>
<token postag='VM[CIS].1P0' postag_regexp='yes'/>
</antipattern>
<pattern>
<token regexp='yes'>eles|elas|vocês</token>
<token min="0" max="2" postag='CS|R.' postag_regexp='yes'/>
<token postag='VM[CIS].([12]P0|[123]S0)' postag_regexp='yes'>
<exception postag='VM[CIS].3P0' postag_regexp='yes'></exception></token>
</pattern>
<message>Erro de concordância verbal.</message>
<suggestion><match no='1' include_skipped='all'/> <match no='2' include_skipped='all'/> <match no='3' include_skipped='all' postag='(VM[CIS].)([12]P0|[123]S0)' postag_replace='$13P0' postag_regexp='yes'/></suggestion>
<example correction='elas passeiam'>Eles e <marker>elas passeamos</marker> na praia.</example>
<example type="correct">Eles e elas passeiam na praia.</example>
<example type="correct">Eu e elas vamos ao parque</example>
</rule>
</rulegroup>
<!-- General verbal concordance errors - They + Verb -->
<!-- Created by Tiago F. Santos, Portuguese rule, 2016-10-16 -->
<!-- FIXME Disambiguate verbs better and then set as default='on' -->
<rule default='off' id="ERRO_DE_CONCORDNCIA_DO_NMERO_DO_VERBO_3P-2" name="Erro de concordância do número do verbo (3P composto)">
<pattern>
<token negate='yes'>entre</token>
<marker>
<token postag_regexp='yes' postag='N.+'>
<exception postag_regexp='yes' postag='SPS00.+'></exception></token>
<token>e</token>
<token postag_regexp='yes' postag='N.+'>
<exception postag_regexp='yes' postag='SPS00.+'></exception>
<exception regexp='yes'>um|uma|uns|umas|a|o|as|os|não</exception>
</token>
<token min="0" max="2" postag='CS|R.' postag_regexp='yes'/>
<token postag='VM[CIS].([12]P0|[123]S0)' postag_regexp='yes'>
<exception postag='VM[CIS].3P0' postag_regexp='yes'></exception>
<exception regexp='yes'>quentes|marinhas|silva|militares|para|como|recordes|pires|seguro|vida|vales|formas|sua|humanas|internas|ambiente|entre|individuais|sobre|pelo|penas</exception>
</token>
</marker>
</pattern>
<message>Erro de concordância verbal.</message>
<suggestion>\2 \3 <match no='4' include_skipped='all'/> <match no='5' include_skipped='all'/> <match no='6' include_skipped='all' postag='(VM[CIS].)([12]P0|[123]S0)' postag_replace='$13P0' postag_regexp='yes'/></suggestion>
<url>http://books.scielo.org/id/67y3k/pdf/lobo-9788523212308-15.pdf</url>
<example correction='Cão e gato são'><marker>Cão e gato é</marker> animais.</example>
<example type="correct">Cão e gato são animais.</example>
</rule>
<rulegroup id="NEGATIVE_PRONOUN_VERB" name='Negação + verbo + pronome oblíquo'>
<!-- Created by Tiago F. Santos , Portuguese rule, 2017-01-11 -->
<url>https://ciberduvidas.iscte-iul.pt/consultorio/perguntas/a-colocacao-dos-pronomes-atonos/11366</url>
<rule>
<pattern>
<token regexp='yes'>&negacoes;</token>
<token postag_regexp='yes' postag='V.+'/>
<token>-</token>
<token regexp='yes'>me|te|se|lhe|nos|vos|lhes</token>
</pattern>
<message>As negações colocam o pronome antes do verbo.</message>
<suggestion>\1 \4 \2</suggestion>
<example correction='Não me diga'><marker>Não diga-me</marker> isso.</example>
<example correction='Nunca te farei'><marker>Nunca farei-te</marker> essa promessa.</example>
<example correction='Ninguém se propôs'><marker>Ninguém propôs-se</marker> a fazer o relatório de contas.</example>
</rule>
<rule>
<pattern>
<token>de</token>
<token regexp='yes'>forma|jeito|modo</token>
<token regexp='yes'>(algum|nenhum)a?</token>
<token postag_regexp='yes' postag='V.+'/>
<token>-</token>
<token regexp='yes'>me|te|se|lhe|nos|vos|lhes</token>
</pattern>
<message>As negações colocam o pronome antes do verbo.</message>
<suggestion>\1 \2 \3 \6 \4</suggestion>
<example correction='De forma alguma me diga'><marker>De forma alguma diga-me</marker> isso.</example>
</rule>
</rulegroup>
<!-- DEQUEISMO_QUEISMO rules from Spanish grammar.xml - START-->
<!-- DEQUEISMO_QUEISMO Dequeísmo e queísmo: utilização incorrecta de DE + QUE -->
<rulegroup id="DEQUEISMO_QUEISMO" name="Queísmos e dequeismos" type="grammar">
<!--INF_PP_QUE Queísmo: convenceram-nos que -> convenceram-nos de que -->
<!-- Localized by Tiago F. Santos, Portuguese rule, 2016-11-25 -->
<rule id="INF_PP_QUE" name="Infinitivo do tipo convencer + pron.pers + que">
<pattern>
<token regexp="yes">(alegrar|saber|informar|duvidar|convencer|fartar|queixar|protestar)</token>
<token>-</token>
<token regexp="yes">(me|te|lh[ea][s]?|se|nos|os)</token>
<token>que</token>
</pattern>
<message>Neste contexto, o verbo é seguido normalmente da preposição 'de': <suggestion>\1\2\3 de \4</suggestion></message>
<url>https://ciberduvidas.iscte-iul.pt/consultorio/perguntas/uso-de-de-que-de-novo-queismo-e-dequeismo/19156</url>
<short>Possível queísmo.</short>
<example correction="alegrar-se de que">Está bem <marker>alegrar-se que</marker> haja dinheiro para todos.</example>
<example correction="Informar-se de que"><marker>Informar-se que</marker> ocorreu alterações ao código.</example>
<example>Não pareces <marker>alegrar-te de que</marker> tudo está resolvido.</example>
</rule>
<!-- ESTAR_SEGURO_QUE Queísmo: Estou seguro que -> Estou seguro de que -->
<!-- Localized by Tiago F. Santos, Portuguese rule, 2016-10-28 -->
<rule id="ESTAR_SEGURO_QUE" name="Estar + seguro + que">
<pattern>
<token inflected="yes"><exception postag="VAIP3S0"/>estar</token>
<token inflected="yes" regexp="yes">seguro|certo|alegre|triste|entristecer|surpreender|convencer|preocupar|farto|cansar|aborrecer</token>
<token>que</token>
</pattern>
<message>Neste contexto, o verbo é seguido normalmente da preposição 'de': <suggestion>\1 \2 de \3</suggestion></message>
<url>https://ciberduvidas.iscte-iul.pt/consultorio/perguntas/uso-de-de-que-de-novo-queismo-e-dequeismo/19156</url>
<short>Possível queísmo.</short>
<example correction="Estamos certos de que"><marker>Estamos certos que</marker> falta pouco para acabar.</example>
<example><marker>Está segura de que</marker> o que dizes é certo.</example>
</rule>
<!-- PP_V_QUE Queísmo: alegro-me que -> alegro-me de que -->
<!-- Localized by Tiago F. Santos, Portuguese rule, 2016-11-25 -->
<rule id="PP_V_QUE" name="PP + verbo do tipo alegrar + que">
<pattern>
<token postag="PP[12]C.000" postag_regexp="yes"/>
<token inflected="yes" regexp="yes">alegrar|surprender|entristecer|aborrecer|emocionar|preocupar<exception postag="VM..3.." postag_regexp="yes"/></token>
<token>que</token>
</pattern>
<message>Neste contexto, o verbo é seguido normalmente da preposição 'de': <suggestion>\1 \2 de que</suggestion></message>
<url>https://ciberduvidas.iscte-iul.pt/consultorio/perguntas/uso-de-de-que-de-novo-queismo-e-dequeismo/19156</url>
<short>Possível queísmo.</short>
<example correction="Me preocupo de que"><marker>Me preocupo que</marker> haja comida para todos.</example>
<example>Foi quando <marker>informaste-os de que</marker> acabou-se a temporada.</example>
</rule>
<!-- VERBO_DE_QUE Queísmo: Penso de que -> Penso que -->
<!-- Localized by Tiago F. Santos, Portuguese rule, 2016-10-28 -->
<rule id="VERBO_DE_QUE" name="Verbo tipo pensar + de que">
<pattern>
<token inflected="yes" regexp="yes">pensar|opinar|acreditar|comentar|expresar|dizer|deduzir|inferir|razoar|comunicar|confirmar|corroborar|desmentir|constar|resultar|aconselhar|ver|observar|gostar|antes<exception>razões</exception></token>
<token>de</token>
<token>que</token>
</pattern>
<message>Possível queísmo: <suggestion>\1 \3</suggestion>.</message>
<url>https://ciberduvidas.iscte-iul.pt/consultorio/perguntas/uso-de-de-que-de-novo-queismo-e-dequeismo/19156</url>
<short>Possível dequeísmo.</short>
<example correction="Penso que"><marker>Penso de que</marker> estamos a melhor muito.</example>
<example>Acreditamos <marker>que</marker> podemos melhorar mais.</example>
</rule>
<!-- ESTAR_CLARO_DE_QUE Queísmo: Está claro de que -> Está claro que -->
<!-- Localized by Tiago F. Santos, Portuguese rule, 2016-10-28 -->
<rule id="ESTAR_CLARO_DE_QUE" name="Verbo do tipo estar + Adj. + de que">
<pattern>
<token inflected="yes" regexp="yes">ser|estar|encontrar|ver|entender</token>
<token postag="RG|A.+" postag_regexp="yes"><exception inflected="yes" regexp="yes">seguro|certo|livre|consciente|farto</exception></token>
<token>de</token>
<token>que</token>
</pattern>
<message>Possível dequeísmo: <suggestion>\1 \2 \4</suggestion>.</message>
<url>https://ciberduvidas.iscte-iul.pt/consultorio/perguntas/uso-de-de-que-de-novo-queismo-e-dequeismo/19156</url>
<short>Possível 'dequeísmo'.</short>
<example correction="É fácil que"><marker>É fácil de que</marker> voltemos a encontrar-mo-nos</example>
</rule>
<!-- V3_DE_QUE Dequeísmo: alegra-me de que -> Alegra-me que -->
<!-- Localized by Tiago F. Santos, Portuguese rule, 2016-11-25 -->
<rule id="V3_DE_QUE" name="Verbo na 3a pessoa + de que">
<pattern>
<token regexp="yes">alegra|entristece|importa|resvala|farta|emociona|altera|aburrece|falta|preocupa</token>
<token>-</token>
<token postag="PP[123]C.[0D]00" postag_regexp="yes"/>
<token>de</token>
<token>que</token>
</pattern>
<message>Possível dequeísmo: <suggestion>\1\2\3 \5</suggestion>.</message>
<url>https://ciberduvidas.iscte-iul.pt/consultorio/perguntas/uso-de-de-que-de-novo-queismo-e-dequeismo/19156</url>
<short>Possível 'dequeísmo'.</short>
<example correction="Alegra-me que"><marker>Alegra-me de que</marker> voltemos a encontrar-nos</example>
<example><marker>Entristece-me que</marker> tenham mudado de marca.</example>
</rule>
<!-- INSISTIR_DE_QUE Dequeísmo: Insisto de que -> Insisto en que -->
<!-- Localized by Tiago F. Santos, Portuguese rule, 2016-10-28 -->
<rule id="INSISTIR_DE_QUE" name="Verbo do tipo insistir + de que">
<pattern>
<token inflected="yes">insistir</token>
<token>de</token>
<token>que</token>
</pattern>
<message>Possível dequeísmo: <suggestion>\1 em \3</suggestion>.</message>
<url>http://cvc.cervantes.es/ALHABLA/MUSEO_HORRORES/museo_010.htm</url>
<example correction="insistas em que">Não <marker>insistas de que</marker> vamos ao cinema.</example>
<example><marker>Insistiram em que</marker> lhes faltava um documento.</example>
</rule>
</rulegroup>
<!-- CRASE_CONFUSION, Erros de crase: Dia à dia -->
<rulegroup id="CRASE_CONFUSION" name="Erros de crase">
<!-- Created by Tiago F. Santos, Portuguese rule, 2016-12-23 -->
<rule>
<pattern>
<token regexp='yes'>às?</token>
<token postag_regexp='yes' postag='V.+'>
<exception postag_regexp='yes' postag='(N.|A..|Z.)[FC].+'/></token>
</pattern>
<message>Não se aplica a crase antes de um verbo.</message>
<suggestion><match no='1' regexp_match='(à)(s?)' regexp_replace='a$2'/> \2</suggestion>
<url>https://pt.wikipedia.org/wiki/Crase</url>
<example correction='a carregar'>Assim que começamos <marker>à carregar</marker> as compras para o carro, começou a chover.</example>
<example> Fomos às compras, e viemos com o carro cheio</example>
</rule>
<rule>
<pattern>
<token><exception postag='SENT_START'/></token>
<token>à</token>
<token><match no='0'/></token>
</pattern>
<message>Erro de crase.</message>
<suggestion>\1 a \3</suggestion>
<url>https://pt.wikipedia.org/wiki/Crase</url>
<example correction="dia a dia">Foi preciso conformar com a rotina do <marker>dia à dia</marker>.</example>
</rule>
<rule>
<pattern>
<token>de</token>
<marker>
<token postag='Z.+' postag_regexp='yes'/>
<token>à</token>
<token postag='Z.+' postag_regexp='yes'/>
</marker>
</pattern>
<message>Erro de crase.</message>
<suggestion>\2 a \4</suggestion>
<url>https://pt.wikipedia.org/wiki/Crase</url>
<example correction="10 a 30">Consiga descontos de <marker>10 à 30</marker> por cento nos saldos desta semana.</example>
</rule>
<rule>
<pattern>
<marker>
<token>devido</token>
<token regexp='yes'>as?</token>
</marker>
<token postag_regexp='yes' postag='N.F.+'/>
</pattern>
<message>Erro de crase.</message>
<suggestion>\1 <match no='2' regexp_match='(a)(s?)' regexp_replace='à$2'/></suggestion>
<url>https://pt.wikipedia.org/wiki/Crase</url>
<example correction='devido à'>Isso é <marker>devido a</marker> presença de estranhos.</example>
</rule>
<rule>
<pattern>
<marker>
<token regexp='yes'>em|com</token>
<token>relação</token>
<token regexp='yes'>as?</token>
</marker>
<token postag_regexp='yes' postag='N.F.+'/>
</pattern>
<message>Erro de crase.</message>
<suggestion>\1 \2 <match no='3' regexp_match='(a)(s?)' regexp_replace='à$2'/></suggestion>
<url>https://ciberduvidas.iscte-iul.pt/consultorio/perguntas/a-crase-em-em-relacao-a-disciplina/31029</url>
<example correction='Em relação à'><marker>Em relação a</marker> falecida, estamos a averiguar a situação.</example>
</rule>
<rule>
<pattern>
<marker>
<token inflected='yes' regexp='yes'>aderir|desobedecer|ir|pertencer|obedecer|reagir
<exception inflected='yes'>ser</exception></token>
<token postag='RG' min='0'/>
<token regexp='yes'>as?</token>
</marker>
<token postag_regexp='yes' postag='N.F.+'>
<exception postag='D..F.+' postag_regexp='yes'/></token>
</pattern>
<message>Erro de crase.</message>
<suggestion>\1 <match no='2' include_skipped='all'/> <match no='3' regexp_match='(a)(s?)' regexp_replace='à$2'/></suggestion>
<url>https://pt.wikipedia.org/wiki/Crase</url>
<example correction='Vamos às'><marker>Vamos as</marker> compras no supermercado.</example>
<example correction='Iremos à'><marker>Iremos a</marker> escola, falar com os professores.</example>
<!--<example correction='foi à'>Ele <marker>foi a</marker> herdade.</example>--><!-- TODO Replace exception by 'ir' and 'ser' verbs disambiguation -->
<example correction='adere à'>A cola <marker>adere a</marker> folha.</example>
<example correction='Pertence provavelmente à'><marker>Pertence provavelmente a</marker> equipa dos seus amigos.</example>
<example>A causa de sua morte foi a pneumonia.</example>
<example>Os 6% restantes pertencem a outras nacionalidades.</example>
</rule>
<rule>
<pattern>
<token regexp='yes'>às?|as</token>
<token regexp='yes'>(sua|vossa)s?</token>
<token regexp="yes">&pronomes_de_tratamento;</token>
</pattern>
<message>Pronomes de tratamento não admitem artigo.</message>
<suggestion><match no='1' regexp_match='(à)(s?)' regexp_replace='a'/> \2 \3</suggestion>
<suggestion>\2 \3</suggestion>
<url>http://www.nilc.icmc.usp.br/nilc/minigramatica/mini/acraseeospronomesdetratamento.htm</url>
<example correction='a Sua Excelência|Sua Excelência'>Pergunte <marker>à Sua Excelência</marker> qual o modo adequado de tratamento.</example>
<example correction='a Vossas Beatitudes|Vossas Beatitudes'>Envie o pedido <marker>às Vossas Beatitudes</marker>.</example>
</rule>
<rule>
<pattern>
<token regexp='yes'>às?|as</token>
<token regexp='yes'>vocês?</token>
</pattern>
<message>Pronomes de tratamento não admitem artigo.</message>
<suggestion><match no='1' regexp_match='(à)(s?)' regexp_replace='a'/> \2</suggestion>
<url>http://www.nilc.icmc.usp.br/nilc/minigramatica/mini/acraseeospronomesdetratamento.htm</url>
<example correction='a você'>Se digo <marker>à você</marker> deixa de ser segredo.</example>
</rule>
<rule>
<pattern>
<token postag_regexp='yes' postag='V..[PF].+'/>
<token regexp='yes'>as?</token>
<token postag_regexp='yes' postag='Z.+|C.' max='3'/>
<token regexp='yes'>horas?</token>
</pattern>
<message>Erro de crase.</message>
<suggestion>\1 <match no='2' regexp_match='(a)(s?)' regexp_replace='à$2' include_skipped='all'/> <match no='3' include_skipped='all'/> \4</suggestion>
<url>https://pt.wikipedia.org/wiki/Crase</url>
<example correction='Chego às vinte e uma horas'><marker>Chego as vinte e uma horas</marker>.</example>
</rule>
<rule>
<pattern>
<token>a</token>
<token regexp='yes'>direita|esquerda</token>
<token regexp='yes'>[dn][eao]s?</token>
</pattern>
<message>Erro de crase.</message>
<suggestion>à \2 \3</suggestion>
<example correction='à direita do'>Os estacionamentos <marker>a direita do</marker> parque são reservados.</example>
<example>Os autocarros estacionaram à esquerda do pátio.</example>
</rule>
</rulegroup>
<!-- FIXME While containing rule regressed. Comment out until I have time to fix
<rule id='FRAGMENT_TWO_ARTICLES' name='Possível fragmento - dois artigos seguidos' default='on'>-->
<!-- Created by Tiago F. Santos, Portuguese rule, 2017-01-08
<antipattern>
<token>a</token>
<token postag='D.+' postag_regexp='yes'/>
</antipattern>
<pattern>
<token postag='D.+' postag_regexp='yes'/>
<token inflected='yes' ><match no='1' postag='D.+' postag_regexp='yes'/></token> --><!-- Restrict to only inflected equivalents TODO Improve
</pattern>
<message>Possível fragmento.</message>
<suggestion>\1</suggestion>
<suggestion>\2</suggestion>
<example correction='o|um'>Foi <marker>o um</marker> erro de digitação.</example>
<example correction='As|A'><marker>As a</marker> resposta está incorreta.</example>
<example correction='Os|O'><marker>Os o</marker> lugar que se visita.</example>
-->
<!--<example correction='Toda|Todo'><marker>Toda todo</marker> lugar que se visita.</example>
<example><marker>A uns</marker> dão prioridade, a outros, ignoram.</example>
<example>Leve <marker>a sua</marker> irmã no carro.</example>
<example>Em todos os comprimentos de onda.</example>
<example>Há um pouco de verdade no que ele está dizendo.</example>
<example>Nem todos os professores se comportam assim.</example>
<example>A algumas.</example>
</rule>
-->
<rulegroup id='FRAGMENT_TWO_ARTICLES' name='Possível fragmento - dois artigos seguidos' default='on'>
<!-- Created by Tiago F. Santos, Portuguese rule, 2017-01-08 -->
<rule>
<antipattern>
<token regexp='yes'>uma?</token>
<token>a</token>
<token regexp='yes'>uma?</token>
</antipattern>
<pattern>
<token negate='yes'>-</token>
<marker>
<token regexp='yes'>as|os?|uma?s?|uns|algu[mn]a?s?|[nd][oa]s?</token>
<token regexp='yes'>as?|os?|uma?s?|uns|algu[mn]a?s?|n[oa]s?</token>
</marker>
</pattern>
<message>Possível fragmento.</message>
<suggestion>\2</suggestion>
<suggestion>\3</suggestion>
<suggestion>\2, \3</suggestion>
<example correction='o|um|o, um'>Foi <marker>o um</marker> erro de digitação.</example>
<example>"(...) levando-o a investigar mais longe."</example>
<example>As casas antigas foram demolidas para dar espaço a um supermercado.</example>
<example>Um a um.</example>
<example>A religião deu lugar a uma concepção científica do homem e do universo.</example>
<example>As línguas oficiais são as das antigas metrópoles —</example>
<example>Portugal foi um dos últimos países a adotar o novo método, </example>
</rule>
<rule>
<antipattern>
<token regexp='yes'>[nd][oa]s?</token>
<token regexp='yes'>del[ea]s?|dest[ea]s?|doutr[ao]s?|daquel[ea]s?</token>
</antipattern>
<antipattern>
<token regexp='yes'>algu[mn]a?s?</token>
<token regexp='yes'>del[ea]s?|dest[ea]s?|doutr[ao]s?|daquel[ea]s?|[nd][oa]s?</token>
</antipattern>
<pattern>
<token negate='yes'>-</token>
<marker>
<token regexp='yes'>dum|dele|deste|desse|daquele|disto|disso|daquilo|doutro|no|num|nele|nesse|neste|naquele|nisto|nisso|naquilo|noutro|algum|duma|dela|desta|dessa|daquela|doutra|na|numa|nela|nessa|nesta|naquela|noutra|alguma|duns|deles|destes|desses|daqueles|doutros|nos|nuns|neles|nesses|nestes|naqueles|noutros|pelos|alguns|dumas|delas|destas|dessas|daquelas|doutras|nas|numas|nelas|nessas|nestas|naquelas|noutras|algumas</token>
<token regexp='yes'>dum|dele|deste|desse|daquele|disto|disso|daquilo|doutro|no|num|nele|nesse|neste|naquele|nisto|nisso|naquilo|noutro|algum|duma|dela|desta|dessa|daquela|doutra|na|numa|nela|nessa|nesta|naquela|noutra|alguma|duns|deles|destes|desses|daqueles|doutros|nos|nuns|neles|nesses|nestes|naqueles|noutros|pelos|alguns|dumas|delas|destas|dessas|daquelas|doutras|nas|numas|nelas|nessas|nestas|naquelas|noutras|algumas</token>
</marker>
</pattern>
<message>Possível fragmento.</message>
<suggestion>\2</suggestion>
<suggestion>\3</suggestion>
<suggestion>\2, \3</suggestion>
<example correction='dele|dela|dele, dela'>A irmã <marker>dele dela</marker> saiu de casa.</example>
<example>Alguns destes animais são efetivamente mortos, e outros são pos...</example>
<example>Eu não quero perder as minhas ideias, mesmo que algumas delas sejam um pouco extremas.</example>
<example>O guarani é falado por alguns no nordeste, especialmente em Corrientes (onde possu...</example>
<example>Não há novidade alguma nos meus olhos espantados.</example>
<example>Alguns deles defendem uma abordagem e rejeitam a outra; outros...</example>
</rule>
</rulegroup>
<rulegroup id="SENTENCE_FRAGMENT" name="Fragmentos de frases" default="off">
<!-- Localized by Tiago F. Santos, from english grammar.xml, 2016-11-29 -->
<url>http://viva-read.com/article/tipos-de-fragmentos-de-frases</url>
<rule>
<antipattern>
<token postag='SENT_START'/>
<token postag='C.|R.' postag_regexp='yes'/>
<token skip='-1'/>
<token regexp='yes'>[,;:!\?]</token>
</antipattern>
<antipattern>
<token postag='SENT_START'/>
<token postag='C.|R.' postag_regexp='yes'/>
<token skip='-1'/>
<token postag='CC'/>
</antipattern>
<pattern>
<marker>
<token postag='SENT_START'/>
<token postag='C.|R.' postag_regexp='yes' skip="-1">
<exception negate_pos='yes' postag='C.|R.' postag_regexp='yes'/>
</token>
</marker>
<token postag='SENT_END'/>
</pattern>
<message>“\2” no início de uma frase, requer uma segunda oração. Talvez uma vírgula, ponto de interrogação ou de exclamação estão em falta, ou a frase está incompleta e deve ser ligada à frase que a precede, ou à seguinte.</message>
<short>Falta uma vírgula ou a frase é um fragmento</short>
<example correction=""><marker>Apesar</marker> de o cão gostar de ladrar.</example>
<example correction=""><marker>Depois</marker> de jantar.</example>
<example>Apesar de o cão ladrar muito, continua a ser um cão simpático.</example>
<example>Vamos ao cinema, depois de jantar.</example>
<example>Não, não é nada longe.</example>
<example>Não posso andar, porque estou com a perna quebrada.</example>
<example>Cerca de mil pessoas participaram na manifestação.</example>
<example>Segundo: os crioulo (pessoas de descendência espanhola...</example>
</rule>
<rule>
<antipattern>
<token postag='SENT_START'/>
<token regexp='yes'>Mesmo|Então|Portanto</token>
<token regexp='yes' min='0'>[,:]</token>
<token postag='C.|R.' postag_regexp='yes' skip='-1'/>
<token regexp='yes'>[,;:!\?]</token>
</antipattern>
<antipattern>
<token postag='SENT_START'/>
<token regexp='yes'>Mesmo|Então|Portanto</token>
<token regexp='yes' min='0'>[,:]</token>
<token postag='C.|R.' postag_regexp='yes' skip='-1'/>
<token postag='CC'/>
</antipattern>
<pattern>
<marker>
<token postag='SENT_START'/>
<token regexp='yes'>Mesmo|Então|Portanto</token>
<token regexp='yes' min='0'>[,:]</token>
<token postag='C.|R.' postag_regexp='yes' skip='-1'>
</token>
</marker>
<token postag='SENT_END'/>
</pattern>
<message>“\2<match no='3' include_skipped='all'/> \4” no início de uma frase, requer uma segunda oração. Talvez uma vírgula, ponto de interrogação ou de exclamação estão em falta, ou a frase está incompleta e deve ser ligada à frase que a precede, ou à seguinte.</message>
<short>Falta uma vírgula ou a frase é um fragmento</short>
<example correction=""><marker>Mesmo se</marker> o cão gosta de ladrar.</example>
<example>Mesmo se o cão gosta de ladrar, continua a ser simpático.</example>
</rule>
<rule>
<antipattern>
<token postag='SENT_START'/>
<token regexp='yes'>Desde|A|Até|Sempre|Enquanto|Onde|O|Quem</token>
<token regexp='yes' skip='-1'>vez|que|menos|quer</token>
<token regexp='yes'>[,;:!\?]</token>
</antipattern>
<antipattern>
<token postag='SENT_START'/>
<token regexp='yes'>Desde|A|Até|Sempre|Enquanto|Onde|O|Quem</token>
<token regexp='yes' skip='-1'>vez|que|menos|quer</token>
<token postag='CC'/>
</antipattern>
<pattern>
<token postag='SENT_START'/>
<token regexp='yes'>Desde|A|Até|Sempre|Enquanto|Onde|O|Quem</token>
<token regexp='yes' skip='-1'>vez|que|menos|quer</token>
<token postag='SENT_END'/>
</pattern>
<message>“\2 <match no='3' include_skipped='all'/> <match no='4' include_skipped='all'/> \5” no início de uma frase, requer uma segunda oração. Talvez uma vírgula, ponto de interrogação ou de exclamação estão em falta, ou a frase está incompleta e deve ser ligada à frase que a precede, ou à seguinte.</message>
<short>Falta uma vírgula ou a frase é um fragmento</short>
<example correction=""><marker>Desde que o cão ladre.</marker></example>
<example>Desde que o cão ladre, consegue guardar a casa.</example>
</rule>
<rule>
<antipattern>
<token postag='SENT_START'/>
<token regexp='yes'>De|A|Considerando|Contando</token>
<token skip='-1' regexp='yes'>que|menos|quer</token>
<token regexp='yes'>[,;:!\?]</token>
</antipattern>
<antipattern>
<token postag='SENT_START'/>
<token regexp='yes'>De|A|Considerando|Contando</token>
<token skip='-1' regexp='yes'>que|menos|quer</token>
<token postag='CC'/>
</antipattern>
<pattern>
<marker>
<token postag='SENT_START'/>
<token regexp='yes'>De|A|Considerando|Contando</token>
<token skip='-1' regexp='yes'>que|menos|quer</token>
</marker>
<token postag='SENT_END'/>
</pattern>
<message>“\2 \3” no início de uma frase, requer uma segunda oração. Talvez uma vírgula, ponto de interrogação ou de exclamação estão em falta, ou a frase está incompleta e deve ser ligada à frase que a precede, ou à seguinte.</message>
<short>Falta uma vírgula ou a frase é um fragmento</short>
<example correction=""><marker>Considerando que</marker> o cão guarda a minha casa.</example>
<example>Considerando que o cão guarda a minha casa, eu não me importo que ladre alto.</example>
</rule>
<rule>
<antipattern>
<token postag='SENT_START'/>
<token regexp='yes'>Uma|De|Quem|A|Tendo</token>
<token regexp='yes'>vez|modo|quer|menos|em</token>
<token skip='-1' regexp='yes'>a|que|conta</token>
<token regexp='yes'>[,;:!\?]</token>
</antipattern>
<antipattern>
<token postag='SENT_START'/>
<token regexp='yes'>Uma|De|Quem|A|Tendo</token>
<token regexp='yes'>vez|modo|quer|menos|em</token>
<token skip='-1' regexp='yes'>a|que|conta</token>
<token postag='CC'/>
</antipattern>
<pattern>
<marker>
<token postag='SENT_START'/>
<token regexp='yes'>Uma|De|Quem|A|Tendo</token>
<token regexp='yes'>vez|modo|quer|menos|em</token>
<token skip='-1' regexp='yes'>a|que|conta</token>
</marker>
<token postag='SENT_END'/>
</pattern>
<message>“\2 \3 \4” no início de uma frase, requer uma segunda oração. Talvez uma vírgula, ponto de interrogação ou de exclamação estão em falta, ou a frase está incompleta e deve ser ligada à frase que a precede, ou à seguinte.</message>
<short>Falta uma vírgula ou a frase é um fragmento</short>
<example correction=""><marker>Tendo em conta</marker> que o cão guarda a casa.</example>
<example>Tendo em conta que o cão guarda a casa, ladrando ruidosamente.</example>
</rule>
</rulegroup>
<rule id='FORMAL_COM_NÓS' name="Expressões 'com nós'">
<!-- Created by Tiago F. Santos, Portuguese rule, 2016-12-28 -->
<pattern>
<token>com</token>
<token>nós</token>
</pattern>
<message>Será que quis dizer <suggestion>connosco</suggestion>?</message>
<url>https://ciberduvidas.iscte-iul.pt/consultorio/perguntas/connosco-com-a-gente-e-com-nos-no-portugues-europeu/26842</url>
<short>Linguagem informal</short>
<example correction="connosco">Ele veio <marker>com nós</marker> para o revéillon.</example>
</rule>
<!-- Tiago F. Santos Rules Ending ****END**** -->
<!-- ********************************************************** -->
<!-- Concordance error plural - FOREM + ADJECTIVE PLURAL FEM-->
<rulegroup id="FOREM-ADJECTIVE" name="Erro de concordância de número FOREM + ADJ">
<short>Erro de concordância de número</short>
<rule>
<pattern>
<token>forem</token>
<marker>
<token postag="AQ0FS0"><exception postag="VMIP3S0"></exception></token>
</marker>
</pattern>
<message>Erro de concordância de número: <suggestion><match no="2" postag_regexp= "yes" postag="AQ0FS0" postag_replace="AQ0FP0"/></suggestion></message>
<example correction="necessárias">Quando forem <marker>necessária</marker> novas medidas.</example>
</rule>
<rule>
<pattern>
<token>forem</token>
<marker>
<token postag="AQ0MS0"><exception postag="VMIP1S0"></exception></token>
</marker>
</pattern>
<message>Erro de concordância de número: <suggestion><match no="2" postag_regexp= "yes" postag="AQ0MS0" postag_replace="AQ0MP0"/></suggestion></message>
<example correction="necessários">Quando forem <marker>necessário</marker> mais meios.</example>
</rule>
<rule>
<pattern>
<token>forem</token>
<marker>
<token postag="AQ0CS0"></token>
</marker>
</pattern>
<message>Erro de concordância de número: <suggestion><match no="2" postag_regexp= "yes" postag="AQ0CS0" postag_replace="AQ0CP0"/></suggestion></message>
<example correction="urgentes">Todos os exames que forem <marker>urgente</marker> serão marcados.</example>
</rule>
</rulegroup>
<!-- Concordance error plural - É + PLURAL -->
<rule id="É_PLURAL" name="Erro de concordância de número É+PLURAL">
<pattern>
<marker>
<token>é</token>
</marker>
<token postag_regexp="yes" postag="AQ0CP0|AQ0MP0|AQ0FP0|VMII2P0"></token>
</pattern>
<message>Erro de concordância de número.</message>
<suggestion>são</suggestion>
<example correction="são">Os correctores gramaticais <marker>é</marker> funcionais.</example>
</rule>
<!-- FIXME Remove. Contrary to grammar rules. 'Quem' agrees with 'whom' oration -->
<!-- Concordance error plural - QUEM + VERB SINGULAR -->
<!--
<rule id="QUEM-VERB_PLURAL" name="Erro de concordância de número QUEM + VERBO SINGULAR">
<pattern>
<token>quem</token>
<marker>
<token postag="VMIS3P0"></token>
</marker>
</pattern>
<message>Erro de concordância de número: <suggestion><match no="2" postag_regexp= "yes" postag="VMIS3P0" postag_replace="VMIS3S0"/></suggestion></message>
FIXME This example is correct
<example correction="fez|fê">Foram eles quem <marker>fizeram</marker> os trabalhos.</example>
</rule>
-->
<rulegroup id="A_NOUN_VERB" name="Erro de concordância de número DETERMINANTE + NOME + VERBO NO">
<short>Erro de concordância de número</short>
<!-- TODO Use pos_regexp to improve rule. Suggestion V....S. -->
<!-- Concordance error plural - A + FEMALE PLURAL + SINGULAR VERB -->
<rule>
<pattern>
<token>a</token>
<marker>
<token postag="NCFP000"></token>
</marker>
<token postag="VMIP3S0"></token>
</pattern>
<message>Erro de concordância de número: <suggestion><match no="2" postag_regexp= "yes" postag="NCFP000" postag_replace="NCFS000"/></suggestion></message>
<example correction="vaca">A <marker>vacas</marker> está no pasto.</example>
</rule>
<rule>
<pattern>
<token>as</token>
<marker>
<token postag="NCFS000"></token>
</marker>
<token postag="VMIP3P0"></token>
</pattern>
<message>Erro de concordância de número: <suggestion><match no="2" postag_regexp= "yes" postag="NCFS000" postag_replace="NCFP000"/></suggestion></message>
<example correction="vacas">As <marker>vaca</marker> estão no pasto.</example>
</rule>
<rule>
<pattern>
<token>o</token>
<marker>
<token postag="NCMP000"></token>
</marker>
<token postag="VMIP3S0"></token>
</pattern>
<message>Erro de concordância de número: <suggestion><match no="2" postag_regexp= "yes" postag="NCMP000" postag_replace="NCMS000"/></suggestion></message>
<example correction="boi">O <marker>bois</marker> está no pasto.</example>
</rule>
<rule>
<pattern>
<token>os</token>
<marker>
<token postag="NCMS000"></token>
</marker>
<token postag="VMIP3P0"></token>
</pattern>
<message>Erro de concordância de número: <suggestion><match no="2" postag_regexp= "yes" postag="NCMS000" postag_replace="NCMP000"/></suggestion></message>
<example correction="bois">Os <marker>boi</marker> estão no pasto.</example>
</rule>
</rulegroup>
<!-- TODO Use pos_regexp to improve rule. Suggestion V....P. -->
<!-- Concordance error plural - A GENTE + PLURAL VERB > A GENTE + SINGULAR VERB -->
<rule id="A_GENTE-SINGULAR_PLURAL-VERB" name="Erro de concordância de número A GENTE + SINGULAR VERB">
<pattern>
<token>a</token>
<token>gente</token>
<marker>
<token postag="VMIP1P0"></token>
</marker>
</pattern>
<message>Erro de concordância de número: <suggestion><match no="3" postag_regexp= "yes" postag="VMIP1P0" postag_replace="VMIP3S0"/></suggestion></message>
<short>Erro de concordância de número</short>
<example correction="vai">A gente <marker>vamos</marker> à praia.</example>
</rule>
<!-- TODO Use inflections to improve rule. Suggestion inflect='yes'>procurar< -->
<!-- Concordance error plural - PROCURA-SE > PROCURAM-SE -->
<rule id="PROCURA_SE-PROCURAM_SE" name="Erro de concordânica do plural PROCURA-SE > PROCURAM-SE">
<pattern>
<marker>
<token>procura</token>
<token>-</token>
<token>se</token>
</marker>
<token postag_regexp="yes" postag="NCFP000|NCMP000|AQ0FP0|AQ0MP0"></token>
</pattern>
<message>Erro de concordância de número.</message>
<suggestion>procuram-se</suggestion>
<example correction="procuram-se">Aqui <marker>procura-se</marker> pessoas sérias.</example>
</rule>
<rulegroup id="NECESSÁRIO_NECESSÁRIA" name="Erro de concordância NECESSÁRIO/A">
<short>Erro de concordância de género</short>
<!-- TODO Improve with inflections. Suggestion <token inflected='yes'>ser</token> -->
<!-- Concordance gender - NECESSÁRIO > NECESSÁRIA -->
<rule>
<pattern>
<token regexp="yes">é|foi|era|fora|será|seria|seja|fosse|for</token>
<marker>
<token>necessário</token>
</marker>
<token>uma</token>
<token postag="NCFS000"><exception postag_regexp="yes" postag="AQ0CS0|PI0FS000|PI0MS000|NCMS000"></exception><exception>uma</exception></token>
</pattern>
<message>Erro de género. Usar: <suggestion>necessária</suggestion>.</message>
<example correction="necessária">É <marker>necessário</marker> uma festa.</example>
</rule>
<rule>
<pattern>
<token regexp="yes">é|foi|era|fora|será|seria|seja|fosse|for</token>
<marker>
<token>necessário</token>
</marker>
<token>uma</token>
<token postag_regexp="yes" postag="AQ0CS0|PI0FS000|PI0MS000|NCFS000"><exception>uma</exception></token>
<token postag="NCFS000"><exception postag="NCMS000"></exception><exception>uma</exception></token>
</pattern>
<message>Erro de género. Usar: <suggestion>necessária</suggestion>.</message>
<example correction="necessária">É <marker>necessário</marker> uma grande festa.</example>
</rule>
</rulegroup>
</category>
<category id="MISC" name="Sem Categoria Definida" type="uncategorized">
<!-- AFEAR afiar -->
<rule id="AFEAR" name="Confusão: afear - afiar">
<pattern>
<marker>
<token inflected='yes'>afear</token>
</marker>
<token regexp="yes">as?|umas?</token>
<token regexp="yes">pontas?|facas?|lâminas?|tesouras?|espadas?</token>
</pattern>
<message>Substitua por <suggestion><match no='1' postag='V.+'>afiar</match></suggestion>.</message>
<example correction="afiar">É preciso <marker>afear</marker> as facas.</example>
</rule>
<!-- ALUGAR CASA(S) arrendar casa(s) -->
<rule id="ALUGAR_CASA" name="arrendar casa">
<pattern>
<token inflected='yes'>alugar</token>
<token min="0" regexp="yes">as?|umas?|os?|um|uns</token>
<token regexp="yes">casas?|apartamentos?|habitaç(ão|ões)|imóv(el|eis)</token>
</pattern>
<message>Se não pretende realçar o tipo de imóvel, considere <suggestion><match no='1' postag='V.+'>arrendar</match></suggestion>.</message>
<suggestion><match no='1' postag='V.+'>arrendar</match> \2 \3</suggestion>
<example correction="arrendar|arrendar uma casa">Vou <marker>alugar uma casa</marker> em Lisboa.</example>
<example correction="Arrendei|Arrendei um apartamento"><marker>Aluguei um apartamento</marker> em Lisboa.</example>
</rule>
<!-- CAIXA COM FÓSFOROS caixa de fósforos -->
<rule id="CAIXA_COM_FÓSFOROS" name="Caixa de fósforos">
<pattern>
<token regexp="yes">caixas?</token>
<marker>
<token>com</token>
</marker>
<token>fósforos</token>
</pattern>
<message>Substitua por <suggestion>de</suggestion>.</message>
<example correction="de">Vou comprar uma caixa <marker>com</marker> fósforos.</example>
</rule>
<!-- CAPTURAR IMAGENS captar imagens -->
<rule id="CAPTURAR_IMAGENS" name="Captar imagens">
<pattern>
<marker>
<token>capturar</token>
</marker>
<token min="0" max="1"/>
<token>imagens</token>
</pattern>
<message>Substitua por <suggestion>captar</suggestion>.</message>
<example correction="captar">Vamos <marker>capturar</marker> imagens.</example>
</rule>
<!-- COLETE/S À PROVA DE BALA colete/s à prova de balas -->
<rule id="COLETE-S_À_PROVA_DE_BALA" name="Colete/s à prova de balas">
<pattern>
<marker>
<token regexp="yes">coletes?</token>
<token>à</token>
<token>prova</token>
<token>de</token>
<token>bala</token>
</marker>
</pattern>
<message>Será que quis dizer <suggestion>\1 \2 \3 \4 balas</suggestion>?</message>
<example correction="colete à prova de balas">Usa o <marker>colete à prova de bala</marker>.</example>
</rule>
<!-- CRIAM queriam -->
<rule id="CRIAM" name="Queriam + Infinitivo">
<pattern>
<marker>
<token>criam</token>
</marker>
<token postag="VMN0000"></token>
</pattern>
<message>Substitua por <suggestion>queriam</suggestion>.</message>
<example correction="queriam">Eles <marker>criam</marker> comprar o livro.</example>
</rule>
<!-- DA UM dá um -->
<rule id="DA_UM" name="Confusão: da um - dá um">
<pattern>
<marker>
<token>da</token>
<token>um</token>
</marker>
</pattern>
<message>Substitua por <suggestion>dá um</suggestion>.</message>
<example correction="dá um">Ana, <marker>da um</marker> beijo ao Rui.</example>
</rule>
<!-- DE PRESSA - depressa -->
<rule id="DE_PRESSA" name="Confusão: de pressa - depressa">
<pattern>
<token postag_regexp="yes" postag="NCMS000|NCMN000|AQ0CS0|AQ0MS0"></token>
<marker>
<token>de</token>
<token>pressa</token>
</marker>
</pattern>
<message>Substitua por <suggestion>depressa</suggestion>.</message>
<example correction="depressa">Ele lê muito <marker>de pressa</marker>.</example>
</rule>
<!-- DE VAGAR - devagar -->
<rule id="DE_VAGAR" name="Confusão: de vagar - devagar">
<pattern>
<token postag_regexp="yes" postag="NCMS000|NCMN000|AQ0CS0|AQ0MS0"></token>
<marker>
<token>de</token>
<token>vagar</token>
</marker>
</pattern>
<message>Substitua por <suggestion>devagar</suggestion>.</message>
<example correction="devagar">Ele lê muito <marker>de vagar</marker>.</example>
</rule>
<!-- DE/DA MATRICULA de/da matrícula -->
<rule id="DE_DA_MATRICULA" name="Confusão: matricula - matrícula">
<pattern>
<token regexp="yes">de|da</token>
<marker>
<token>matricula</token>
</marker>
</pattern>
<message>Substitua por <suggestion>matrícula</suggestion>.</message>
<example correction="matrícula">Não esquecer da <marker>matricula</marker> do Rui.</example>
</rule>
<!-- DE/DAS MATRICULAS de/das matrículas -->
<rule id="DE_DAS_MATRICULAS" name="De-das matrículas">
<pattern>
<token regexp="yes">de|das</token>
<marker>
<token>matriculas</token>
</marker>
</pattern>
<message>Substitua por <suggestion>matrículas</suggestion>.</message>
<example correction="matrículas">Não esquecer das <marker>matriculas</marker> amanhã.</example>
</rule>
<!-- DE/DA/A SOBRE MESA de/da/a sobremesa -->
<rule id="DE_DA_A_SOBRE_MESA" name="Confusão: sobre mesa - sobremesa">
<pattern>
<token regexp="yes">de|da|a</token>
<marker>
<token>sobre</token>
<token>mesa</token>
</marker>
</pattern>
<message>Substitua por <suggestion>sobremesa</suggestion>.</message>
<example correction="sobremesa">Gosto da <marker>sobre mesa</marker>.</example>
</rule>
<!-- TODO Merge specific concordance rules in rulegroup to compact options -->
<!-- DET_FEM_MAS words that use "o" instead of "a" -->
<rule id="DET_FEM_MAS_A_O" name="Palavras a-o">
<pattern case_sensitive="no">
<marker>
<token>a</token>
</marker>
<token regexp="yes">herpes|mármore|cônjuge|espécime|bracelete</token>
</pattern>
<message>Erro de género. Usar: <suggestion>o</suggestion>.</message>
<example correction="o">Temos de curar <marker>a</marker> herpes.</example>
</rule>
<!-- TODO Review coverage by General Concordance Rules -->
<!-- FIXME Conjugês is incorrect -->
<!-- DET_FEM_MAS words that use "os" instead of "as"
<rule id="DET_FEM_MAS_AS_OS" name="Palavras as-os">
<pattern case_sensitive="no">
<marker>
<token>as</token>
</marker>
<token regexp="yes">mármores|cônjuges|espécimes|braceletes</token>
</pattern>
<message>Erro de género. Usar: <suggestion>os</suggestion>.</message>
<example correction="os">Temos de estudar <marker>as</marker> espécimes.</example>
</rule>
-->
<rulegroup id="DET_MAS_FEM_O_A" name="Erros de concordância de género específicos">
<short>Erro de concordância de género</short>
<!-- DET_MAS_FEM words that use "a" instead of "o" -->
<rule>
<pattern case_sensitive="no">
<marker>
<token>o</token>
</marker>
<token regexp="yes">mascote|celeuma|acne|entorse|síndrome|sentinela</token>
</pattern>
<message>Erro de género. Usar: <suggestion>a</suggestion>.</message>
<example correction="a">Temos de ver <marker>o</marker> mascote.</example>
</rule>
<rule>
<pattern case_sensitive="no">
<marker>
<token>os</token>
</marker>
<token regexp="yes">mascotes|celeumas|entorses|síndromes|sentinelas</token>
</pattern>
<message>Erro de género. Usar: <suggestion>as</suggestion>.</message>
<example correction="as">Temos de ver <marker>os</marker> mascotes.</example>
</rule>
</rulegroup>
<!-- A COMO É AS/OS a como são as/os -->
<rule id="A_COMO_É_AS_OS" name="A como são as/os">
<pattern>
<token>a</token>
<token>como</token>
<marker>
<token>é</token>
</marker>
<token regexp="yes">os|as</token>
</pattern>
<message>Substitua por <suggestion>são</suggestion>.</message>
<example correction="são">A como <marker>é</marker> os tomates?</example>
</rule>
<!-- A DENTRO adentro -->
<rule id="A_DENTRO" name="Adentro">
<pattern>
<token>a</token>
<token>dentro</token>
</pattern>
<message>Substitua por <suggestion>adentro</suggestion>.</message>
<example correction="adentro">Ele atreveu-se rio <marker>a dentro</marker>.</example>
</rule>
<!-- A DIZER VERDADE a dizer a verdade -->
<rule id="A_DIZER_VERDADE" name="A dizer a verdade">
<pattern>
<token>a</token>
<token>dizer</token>
<token>verdade</token>
</pattern>
<message>Substitua por <suggestion>a dizer a verdade</suggestion>.</message>
<example correction="a dizer a verdade">Eles estão <marker>a dizer verdade</marker>.</example>
</rule>
<!-- A GUARDA-NOCTURNO a guarda-nocturna -->
<rule id="A_GUARDA-NOCTURNO" name="A guarda-nocturna">
<pattern>
<token>a</token>
<token>guarda</token>
<token>-</token>
<token>nocturno</token>
</pattern>
<message>Substitua por <suggestion>a guarda-nocturna</suggestion>.</message>
<example correction="a guarda-nocturna">Vamos ver <marker>a guarda-nocturno</marker>.</example>
</rule>
<!-- À MAIS EM há mais em -->
<rule id="À_MAIS_EM" name="Há mais em">
<pattern>
<token>à</token>
<token>mais</token>
<token>em</token>
</pattern>
<message>Substitua por <suggestion>há mais em</suggestion>.</message>
<example correction="há mais em">Amanhã <marker>à mais em</marker> jogo.</example>
</rule>
<!-- À MARAVILHA às mil maravilhas -->
<rule id="À_MARAVILHA" name="às mil maravilhas">
<pattern>
<token>à</token>
<token>maravilha</token>
</pattern>
<message>Substitua por <suggestion>às mil maravilhas</suggestion>.</message>
<example correction="às mil maravilhas">Isto correu <marker>à maravilha</marker>.</example>
</rule>
<!-- À MEDIDA EM QUE à medida que -->
<rule id="À_MEDIDA_EM_QUE" name="à medida que">
<pattern>
<token>à</token>
<token>medida</token>
<token>em</token>
<token>que</token>
</pattern>
<message>Substitua por <suggestion>à medida que</suggestion>.</message>
<example correction="à medida que">Faz a revisão <marker>à medida em que</marker> lês.</example>
</rule>
<!-- À MEIA NOITE à meia-noite -->
<rule id="À_MEIA_NOITE" name="à meia-noite">
<pattern>
<token>à</token>
<token>meia</token>
<token>noite</token>
</pattern>
<message>Substitua por <suggestion>à meia-noite</suggestion>.</message>
<example correction="à meia-noite">O encontro é <marker>à meia noite</marker>.</example>
</rule>
<!-- À MUITO há muito -->
<rule id="À_MUITO" name="Há muito">
<pattern>
<token>à</token>
<token>muito</token>
</pattern>
<message>Substitua por <suggestion>há muito</suggestion>.</message>
<example correction="há muito">Ainda <marker>à muito</marker> a fazer.</example>
</rule>
<!-- A PREÇO PELO apreço pelo -->
<rule id="A_PREÇO_PELO" name="Confusão: a preço - apreço">
<pattern>
<token>a</token>
<token>preço</token>
<token regexp='yes'>por|pel[ao]s?</token>
</pattern>
<message>Substitua por <suggestion>apreço \3</suggestion>.</message>
<example correction="apreço pelo">Tenho muito <marker>a preço pelo</marker> DVD.</example>
<example correction="apreço por">Tenho muito <marker>a preço por</marker> ele.</example>
</rule>
<!-- A PREÇO POR apreço por -->
<!--
<rule id="A_PREÇO_POR" name="Apreço por">
<pattern>
<token>a</token>
<token>preço</token>
<token>por</token>
</pattern>
<message>Substitua por <suggestion>apreço por</suggestion>.</message>
<example correction="apreço por">Tenho muito <marker>a preço por</marker> ele.</example>
</rule>
-->
<!-- A QUANDO aquando -->
<rule id="A_QUANDO" name="Confusão: a quando - aquando">
<pattern>
<token>a</token>
<token>quando</token>
</pattern>
<message>Substitua por <suggestion>aquando</suggestion>.</message>
<example correction="aquando">Vamos tratar disso <marker>a quando</marker> da ida do Rui.</example>
</rule>
<!-- TODO Merge à-há confusion in a rulegroup to compact options -->
<!-- À QUE há que -->
<rule id="À_QUE" name="Confusão: à que - há que">
<pattern>
<token>à</token>
<token>que</token>
</pattern>
<message>Substitua por <suggestion>há que</suggestion>.</message>
<example correction="há que">Mas <marker>à que</marker> saber estudar.</example>
</rule>
<!-- A QUE SERVE ISTO/ISSO para que serve isto/isso -->
<rule id="A_QUE_SERVE_ISTO_ISSO" name="Para que serve isto/isso">
<pattern>
<marker>
<token>a</token>
</marker>
<token>que</token>
<token>serve</token>
<token regexp="yes">isto|isso</token>
</pattern>
<message>Substitua por <suggestion>para</suggestion>.</message>
<example correction="Para"><marker>A</marker> que serve isto?</example>
</rule>
<!-- À SÓS a sós -->
<rule id="À_SÓS" name="A sós">
<pattern>
<token>à</token>
<token>sós</token>
</pattern>
<message>Substitua por <suggestion>a sós</suggestion>.</message>
<example correction="a sós">Fazemos <marker>à sós</marker> ou em grupo?</example>
</rule>
<!-- A TRÁS atrás -->
<rule id="A_TRÁS" name="Confusão: a trás - atrás">
<pattern>
<token>a</token>
<token>trás</token>
</pattern>
<message>Substitua por <suggestion>atrás</suggestion>.</message>
<example correction="atrás">Vê <marker>a trás</marker> da porta.</example>
</rule>
<!-- ATREVIMENTO A atrevimento para -->
<rule id="ATREVIMENTO_A" name="Atrevimento para">
<pattern>
<token>atrevimento</token>
<token>a</token>
</pattern>
<message>Substitua por <suggestion>atrevimento para</suggestion>.</message>
<example correction="atrevimento para">É muito <marker>atrevimento a</marker> falar assim.</example>
</rule>
<!-- A UM CONSERTO a um concerto -->
<rule id="A_UM_CONSERTO" name="A um concerto">
<pattern>
<token>a</token>
<token>um</token>
<token>conserto</token>
</pattern>
<message>Substitua por <suggestion>a um concerto</suggestion>.</message>
<example correction="a um concerto">Vou <marker>a um conserto</marker>.</example>
</rule>
<!-- A XXX DE VOCÊS a vossa XXX -->
<rule id="A_XXX_DE_VOCÊS" name="Confusão: A XXX de vocês -> a vossa XXX">
<pattern>
<token>a</token>
<token><exception regexp="yes">um|dois|três|maioria|minoria|fim</exception></token>
<token>de</token>
<token>vocês</token>
</pattern>
<message>Será que quis dizer <suggestion>\1 vossa \2</suggestion>?</message>
<example correction="A vossa opinião"><marker>A opinião de vocês</marker> é importante.</example>
<example>A maioria de vocês.</example>
</rule>
<!-- ÀS CUSTAS DA/DAS/DO/DOS à custa da/das/do/dos -->
<rule id="ÀS_CUSTAS_DA_DAS_DO_DOS" name="Confusão: às custas - à custa">
<pattern>
<marker>
<token>às</token>
<token>custas</token>
</marker>
<token regexp="yes">da|das|do|dos</token>
</pattern>
<message>Substitua por <suggestion>à custa</suggestion>.</message>
<example correction="à custa">Ele fê-lo <marker>às custas</marker> do filho.</example>
</rule>
<!-- ABANDONAR O LEITO deixar a cama -->
<rule id="ABANDONAR_O_LEITO" name="Deixar a cama">
<pattern>
<token>abandonar</token>
<token>o</token>
<token>leito</token>
</pattern>
<message>Substitua por <suggestion>deixar a cama</suggestion>.</message>
<example correction="deixar a cama">Vou <marker>abandonar o leito</marker>.</example>
</rule>
<!-- ADESÃO aderência -->
<rule id="ADESÃO" name="Aderência">
<pattern case_sensitive="no">
<marker>
<token>adesão</token>
</marker>
<token regexp="yes">das?|dos?</token>
<token regexp="yes">rodas?|pneus?</token>
</pattern>
<message>Substitua por <suggestion>aderência</suggestion>.</message>
<example correction="aderência">A <marker>adesão</marker> do pneu é boa.</example>
</rule>
<!-- AINDA NUNCA ainda não -->
<rule id="AINDA_NUNCA" name="Ainda não">
<pattern>
<token>ainda</token>
<token>nunca</token>
</pattern>
<message>Substitua por <suggestion>ainda não</suggestion>.</message>
<example correction="ainda não">Eu <marker>ainda nunca</marker> li o livro.</example>
</rule>
<!-- AJUDAR QUE SE FAÇA ajudar a que se faça -->
<rule id="AJUDAR_QUE_SE_FAÇA" name="Ajudar a que se faça">
<pattern>
<token>ajudar</token>
<marker>
<token>que</token>
</marker>
<token>se</token>
<token>faça</token>
</pattern>
<message>Substitua por <suggestion>a que</suggestion>.</message>
<example correction="a que">Devemos ajudar <marker>que</marker> se faça justiça.</example>
</rule>
<!-- ALERTAR PARA COM alertar para -->
<rule id="ALERTAR_PARA_COM" name="Alertar para">
<pattern>
<token>alertar</token>
<token>para</token>
<token>com</token>
</pattern>
<message>Substitua por <suggestion>alertar para</suggestion>.</message>
<example correction="alertar para">Obrigado por me <marker>alertar para com</marker> o perigo.</example>
</rule>
<!-- AMOR PELA LÍNGUA amor à língua -->
<rule id="AMOR_PELA_LÍNGUA" name="Amor à língua">
<pattern>
<token>amor</token>
<marker>
<token>pela</token>
</marker>
<token>língua</token>
</pattern>
<message>Substitua por <suggestion>à</suggestion>.</message>
<example correction="à">Tenho amor <marker>pela</marker> língua materna.</example>
</rule>
<!-- ANALISE análise -->
<rule id="ANALISE" name="Confusão: analise - análise">
<pattern case_sensitive="no">
<marker>
<token>analise</token>
</marker>
<token regexp="yes">dos?|das?</token>
</pattern>
<message>Substitua por <suggestion>análise</suggestion>.</message>
<example correction="análise">Quero uma <marker>analise</marker> do problema.</example>
</rule>
<!-- ANDARES-MODELOS andares-modelo -->
<rule id="ANDARES-MODELOS" name="Andares-modelo">
<pattern>
<token>andares</token>
<token>-</token>
<token>modelos</token>
</pattern>
<message>Substitua por <suggestion>andares-modelo</suggestion>.</message>
<example correction="andares-modelo">Vamos ver os <marker>andares-modelos</marker>.</example>
</rule>
<!-- APELAR À LUTA/FÉ apelar para a luta/fé -->
<rule id="APELAR_À_LUTA-FÉ" name="Apelar para a luta-fé">
<pattern>
<token>apelar</token>
<marker>
<token>à</token>
</marker>
<token regexp="yes">luta|fé</token>
</pattern>
<message>Substitua por <suggestion>para a</suggestion>.</message>
<example correction="para a">Vamos apelar <marker>à</marker> fé.</example>
</rule>
<!-- APOSTAR EM COMO apostar que -->
<rule id="APOSTAR_EM_COMO" name="Apostar que">
<pattern>
<token>apostar</token>
<marker>
<token>em</token>
<token>como</token>
</marker>
</pattern>
<message>Substitua por <suggestion>que</suggestion>.</message>
<example correction="que">Vou apostar <marker>em como</marker> irei ganhar.</example>
</rule>
<!-- AO MEIO DIA ao meio-dia -->
<rule id="AO_MEIO_DIA" name="Ao meio-dia">
<pattern>
<token>ao</token>
<token>meio</token>
<token>dia</token>
</pattern>
<message>Substitua por <suggestion>ao meio-dia</suggestion>.</message>
<example correction="ao meio-dia">O encontro é amanhã <marker>ao meio dia</marker>.</example>
</rule>
<!-- AO SEREM USADO ao serem usados -->
<rule id="AO_SEREM_USADO" name="Ao serem usados">
<pattern>
<token>ao</token>
<token>serem</token>
<token>usado</token>
</pattern>
<message>Substitua por <suggestion>ao serem usados</suggestion>.</message>
<example correction="ao serem usados">Há produtos que <marker>ao serem usado</marker> fazem-nos sentir bem.</example>
</rule>
<!-- AS MILHARES os milhares -->
<rule id="AS_MILHARES" name="Os milhares">
<pattern>
<token>as</token>
<token>milhares</token>
</pattern>
<message>Substitua por <suggestion>os milhares</suggestion>.</message>
<example correction="os milhares">Vejam <marker>as milhares</marker> de mulheres.</example>
</rule>
<!-- ABORDO DA a bordo da -->
<rule id="ABORDO_DA" name="A bordo da">
<pattern>
<token>abordo</token>
<token>da</token>
</pattern>
<message>Substitua por <suggestion>a bordo da</suggestion>.</message>
<example correction="a bordo da">Vai uma pessoa importante <marker>abordo da</marker> fragata.</example>
</rule>
<!-- ABORDO DO a bordo do -->
<rule id="ABORDO_DO" name="A bordo do">
<pattern>
<token>abordo</token>
<token>do</token>
</pattern>
<message>Substitua por <suggestion>a bordo do</suggestion>.</message>
<example correction="a bordo do">Vai uma pessoa importante <marker>abordo do</marker> avião.</example>
</rule>
<!-- ABRIR-MOS abrirmos -->
<rule id="ABRIR-MOS" name="Confusão: abrir-mos - abrirmos">
<pattern>
<token>abrir</token>
<token>-</token>
<token>mos</token>
</pattern>
<message>Substitua por <suggestion>abrirmos</suggestion>.</message>
<example correction="abrirmos">Pediram para <marker>abrir-mos</marker> a porta.</example>
</rule>
<!-- ADIVINHA DISSO QUE advinha disso que -->
<rule id="ADIVINHA_DISSO_QUE" name="Advinha disso que">
<pattern>
<marker>
<token>adivinha</token>
</marker>
<token>disso</token>
<token>que</token>
</pattern>
<message>Substitua por <suggestion>advinha</suggestion>.</message>
<example correction="advinha">A mensagem <marker>adivinha</marker> disso que ele revelou.</example>
</rule>
<!-- ANTES DE QUE antes que -->
<rule id="ANTES_DE_QUE" name="Antes que">
<pattern>
<token>antes</token>
<token>de</token>
<token>que</token>
</pattern>
<message>Substitua por <suggestion>antes que</suggestion>.</message>
<example correction="antes que">Tratar de algo <marker>antes de que</marker> seja tarde.</example>
</rule>
<!-- ANTI VÍRUS antivírus -->
<rule id="ANTI_VÍRUS" name="Antivírus">
<pattern>
<token>anti</token>
<token>vírus</token>
</pattern>
<message>Substitua por <suggestion>antivírus</suggestion>.</message>
<example correction="antivírus">Actualiza sempre o <marker>anti vírus</marker>.</example>
</rule>
<!-- AO MEU VER a meu ver -->
<rule id="AO_MEU_VER" name="A meu ver">
<pattern>
<token>ao</token>
<token>meu</token>
<token>ver</token>
</pattern>
<message>Substitua por <suggestion>a meu ver</suggestion>.</message>
<example correction="a meu ver">Isto é, <marker>ao meu ver</marker>, muito importante.</example>
</rule>
<!-- AS BRACELETES os braceletes -->
<rule id="AS_BRACELETES" name="Os braceletes">
<pattern>
<token>as</token>
<token>braceletes</token>
</pattern>
<message>Substitua por <suggestion>os braceletes</suggestion>.</message>
<example correction="os braceletes">Coloca <marker>as braceletes</marker>.</example>
</rule>
<!-- ASSERTO DE CONTAS acerto de contas -->
<rule id="ASSERTO_DE_CONTAS" name="Acerto de contas">
<pattern>
<marker>
<token>asserto</token>
</marker>
<token>de</token>
<token>contas</token>
</pattern>
<message>Substitua por <suggestion>acerto</suggestion>.</message>
<example correction="acerto">Temos de fazer um <marker>asserto</marker> de contas.</example>
</rule>
<!-- ASSUNTO/ASSUNTOS A ESCLARECER assunto/assuntos para esclarecer -->
<rule id="ASSUNTO_ASSUNTOS_A_ESCLARECER" name="Assunto/assuntos para esclarecer">
<pattern>
<token regexp="yes">assunto|assuntos</token>
<marker>
<token>a</token>
</marker>
<token>esclarecer</token>
</pattern>
<message>Substitua por <suggestion>para</suggestion>.</message>
<example correction="para">Temos vários assuntos <marker>a</marker> esclarecer.</example>
</rule>
<!-- ATAQUES EM MASSA ataques em grande escala -->
<rule id="ATAQUES_EM_MASSA" name="Ataques em grande escala">
<pattern>
<token>ataques</token>
<token>em</token>
<token>massa</token>
</pattern>
<message>Substitua por <suggestion>ataques em grande escala</suggestion>.</message>
<example correction="ataques em grande escala">As botnets fazem <marker>ataques em massa</marker>.</example>
</rule>
<!-- ATÉ MANHÃ até amanhã -->
<rule id="ATÉ_MANHÃ" name="Até amanhã">
<pattern>
<token>até</token>
<token>manhã</token>
</pattern>
<message>Substitua por <suggestion>até amanhã</suggestion>.</message>
<example correction="até amanhã">Boa noite e <marker>até manhã</marker> cedo.</example>
</rule>
<!-- AUTO-FALANTE altifalante -->
<rule id="AUTO-FALANTE" name="Altifalante">
<pattern>
<token>auto</token>
<token>-</token>
<token>falante</token>
</pattern>
<message>Substitua por <suggestion>altifalante</suggestion>.</message>
<example correction="altifalante">O <marker>auto-falante</marker> está avariado.</example>
</rule>
<!-- AUTO-FALANTES altifalantes -->
<rule id="AUTO-FALANTES" name="Altifalantes">
<pattern>
<token>auto</token>
<token>-</token>
<token>falantes</token>
</pattern>
<message>Substitua por <suggestion>altifalantes</suggestion>.</message>
<example correction="altifalantes">Os <marker>auto-falantes</marker> estão avariados.</example>
</rule>
<!-- BOLOS-REI bolos-reis -->
<rule id="BOLOS-REI" name="Bolos-reis">
<pattern>
<token>bolos</token>
<token>-</token>
<token>rei</token>
</pattern>
<message>Substitua por <suggestion>bolos-reis</suggestion>.</message>
<example correction="bolos-reis">Vamos comprar os <marker>bolos-rei</marker>.</example>
</rule>
<!-- DEZENAS/CENTENAS DE MILHAR dezenas/centenas de milhares -->
<rule id="DEZENAS_CENTENAS_DE_MILHAR" name="Dezenas/centenas de milhares">
<pattern>
<token regexp="yes">dezenas|centenas</token>
<token>de</token>
<marker>
<token>milhar</token>
</marker>
</pattern>
<message>Substitua por <suggestion>milhares</suggestion>.</message>
<example correction="milhares">Existem várias centenas de <marker>milhar</marker> de militantes.</example>
</rule>
<!-- CHEGARAM A SABEREM chegaram a saber -->
<rule id="CHEGARAM_A_SABEREM" name="Chegaram a saber">
<pattern>
<token>chegaram</token>
<token>a</token>
<marker>
<token>saberem</token>
</marker>
</pattern>
<message>Substitua por <suggestion>saber</suggestion>.</message>
<example correction="saber">Eles chegaram a <marker>saberem</marker> os resultados?</example>
</rule>
<!-- CICLO VICIOSO círculo vicioso -->
<rule id="CICLO_VICIOSO" name="Círculo vicioso">
<pattern>
<token>ciclo</token>
<token>vicioso</token>
</pattern>
<message>Substitua por <suggestion>círculo vicioso</suggestion>.</message>
<example correction="círculo vicioso">O <marker>ciclo vicioso</marker> da pobreza.</example>
</rule>
<!-- CÍRCULO FECHADO ciclo fechado -->
<rule id="CÍRCULO_FECHADO" name="Ciclo fechado">
<pattern>
<token>círculo</token>
<token>fechado</token>
</pattern>
<message>Substitua por <suggestion>ciclo fechado</suggestion>.</message>
<example correction="ciclo fechado">Uma produção de <marker>círculo fechado</marker>.</example>
</rule>
<!-- CONTRA CAPA contracapa -->
<rule id="CONTRA_CAPA" name="Contracapa">
<pattern>
<token>contra</token>
<token>capa</token>
</pattern>
<message>Substitua por <suggestion>contracapa</suggestion>.</message>
<example correction="contracapa">O livro é composto por: capa, <marker>contra capa</marker> e lombada.</example>
</rule>
<!-- CONTRA PARTIDA contrapartida -->
<rule id="CONTRA_PARTIDA" name="Contrapartida">
<pattern>
<token>contra</token>
<token>partida</token>
</pattern>
<message>Substitua por <suggestion>contrapartida</suggestion>.</message>
<example correction="contrapartida">A <marker>contra partida</marker> é grande.</example>
</rule>
<!-- CUJO O cujo -->
<rule id="CUJO_O" name="Cujo">
<pattern>
<token>cujo</token>
<token>o</token>
</pattern>
<message>Substitua por <suggestion>cujo</suggestion>.</message>
<example correction="cujo">O autor <marker>cujo o</marker> livro foi um best-seller.</example>
</rule>
<!-- DA dá -->
<rule id="DA" name="" default='off'>
<pattern>
<marker>
<token>da</token>
</marker>
<token postag="SPS00"><exception regexp='yes'>de|contra</exception></token>
</pattern>
<message>Substitua por <suggestion>dá</suggestion>.</message>
<example correction="">Não <marker>da</marker> para acreditar.</example>
<example>O uso sistemático da agressão ou da contra agressão por parte de</example>
</rule>
<!-- DAR OS BONS DIAS dar os bons-dias -->
<rule id="DAR_OS_BONS_DIAS" name="Dar os bons-dias">
<pattern>
<token inflected='yes'>dar</token>
<token>os</token>
<token>bons</token>
<token>dias</token>
</pattern>
<message>Substitua por <suggestion>\1 os bons-dias</suggestion>.</message>
<example correction="dar os bons-dias">Vou <marker>dar os bons dias</marker> ao Miguel.</example>
</rule>
<!-- DE/DO/UM/NUM NEGOCIO de/do/um/num negócio -->
<rule id="DE_DO_UM_NUM_NEGOCIO" name="De/do/um/num negócio">
<pattern>
<token regexp="yes">de|do|um|num</token>
<marker>
<token>negocio</token>
</marker>
</pattern>
<message>Substitua por <suggestion>negócio</suggestion>.</message>
<example correction="negócio">Qual o modelo de <marker>negocio</marker> adequado?</example>
</rule>
<!-- DE CALCULO de cálculo -->
<rule id="DE_CALCULO" name="De cálculo">
<pattern>
<token>de</token>
<marker>
<token>calculo</token>
</marker>
</pattern>
<message>Substitua por <suggestion>cálculo</suggestion>.</message>
<example correction="cálculo">Isto é de <marker>calculo</marker> difícil.</example>
</rule>
<!-- DE CERTO decerto -->
<rule id="DE_CERTO" name="Decerto">
<pattern>
<marker>
<token>de</token>
<token>certo</token>
</marker>
<token><exception regexp="yes">valor|montante|assunto|tema|produto|modo|indivíduo|período</exception></token>
</pattern>
<message>Substitua por <suggestion>decerto</suggestion>.</message>
<example correction="decerto">Isso irá <marker>de certo</marker> lesar os trabalhadores.</example>
</rule>
<!-- DE CIMA/ALTO ABAIXO de cima/alto a baixo -->
<rule id="DE_CIMA-ALTO_ABAIXO" name="De cima/alto a baixo">
<pattern>
<token>de</token>
<token regexp="yes">cima|alto</token>
<marker>
<token>abaixo</token>
</marker>
</pattern>
<message>Substitua por <suggestion>a baixo</suggestion>.</message>
<example correction="a baixo">Ela observou o Rui de alto <marker>abaixo</marker>.</example>
</rule>
<!-- DE FORMA A QUE para que -->
<rule id="DE_FORMA_A_QUE" name="Para que">
<pattern>
<token>de</token>
<token>forma</token>
<token>a</token>
<token>que</token>
</pattern>
<message>Substitua por <suggestion>para que</suggestion>.</message>
<example correction="para que">Isto é feito <marker>de forma a que</marker> os cidadãos possam ser livres.</example>
</rule>
<!-- DE IMPACTO ECOLÓGICA de impacto ecológico -->
<rule id="DE_IMPACTO_ECOLÓGICA" name="De impacto ecológico">
<pattern>
<token>de</token>
<token>impacto</token>
<marker>
<token>ecológica</token>
</marker>
</pattern>
<message>Substitua por <suggestion>ecológico</suggestion>.</message>
<example correction="ecológico">Temos riscos de impacto <marker>ecológica</marker>.</example>
</rule>
<!-- DE MANEIRA A QUE de maneira que -->
<rule id="DE_MANEIRA_A_QUE" name="De maneira que">
<pattern>
<token>de</token>
<token>maneira</token>
<token>a</token>
<token>que</token>
</pattern>
<message>Substitua por <suggestion>de maneira que</suggestion>.</message>
<example correction="de maneira que">Isto é feito <marker>de maneira a que</marker> os cidadãos possam ser livres.</example>
</rule>
<!-- DE MODO A QUE de modo que -->
<rule id="DE_MODO_A_QUE" name="De modo que">
<pattern>
<token>de</token>
<token>modo</token>
<token>a</token>
<token>que</token>
</pattern>
<message>Substitua por <suggestion>de modo que</suggestion>.</message>
<example correction="de modo que">Isto é feito <marker>de modo a que</marker> os cidadãos possam ser livres.</example>
</rule>
<!-- DE VÊS EM QUANDO de vez em quando -->
<rule id="DE_VÊS_EM_QUANDO" name="De vez em quando">
<pattern>
<token>de</token>
<token>vês</token>
<token>em</token>
<token>quando</token>
</pattern>
<message>Substitua por <suggestion>de vez em quando</suggestion>.</message>
<example correction="de vez em quando">Ela aparece <marker>de vês em quando</marker>.</example>
</rule>
<!-- DECRETO DE LEI decreto-lei -->
<rule id="DECRETO_DE_LEI" name="Decreto-lei">
<pattern>
<token>decreto</token>
<token>de</token>
<token>lei</token>
</pattern>
<message>Substitua por <suggestion>decreto-lei</suggestion>.</message>
<example correction="decreto-lei">Saiu um novo <marker>decreto de lei</marker>.</example>
</rule>
<!-- DECRETOS-LEI decretos-leis -->
<rule id="DECRETOS-LEI" name="Decretos-leis">
<pattern>
<token>decretos</token>
<token>-</token>
<token>lei</token>
</pattern>
<message>Substitua por <suggestion>decretos-leis</suggestion>.</message>
<example correction="decretos-leis">Vamos analisar os <marker>decretos-lei</marker>.</example>
</rule>
<!-- DÊS DO desde o -->
<rule id="DÊS_DO" name="Desde o">
<pattern>
<token>dês</token>
<token>do</token>
</pattern>
<message>Substitua por <suggestion>desde o</suggestion>.</message>
<example correction="desde o">Isto acontece <marker>dês do</marker> mês passado.</example>
</rule>
<!-- DÊS DOS desde os -->
<rule id="DÊS_DOS" name="Desde os">
<pattern>
<token>dês</token>
<token>dos</token>
</pattern>
<message>Substitua por <suggestion>desde os</suggestion>.</message>
<example correction="desde os">Isto acontece <marker>dês dos</marker> tempos da minha avó.</example>
</rule>
<!-- DESDE QUE HAJAM desde que haja -->
<rule id="DESDE_QUE_HAJAM" name="Desde que haja">
<pattern>
<token>desde</token>
<token>que</token>
<marker>
<token>hajam</token>
</marker>
</pattern>
<message>Substitua por <suggestion>haja</suggestion>.</message>
<example correction="haja">Isso é possível desde que <marker>hajam</marker> condições.</example>
</rule>
<!-- DEVE DE deve -->
<rule id="DEVE_DE" name="Deve">
<pattern>
<token>deve</token>
<token>de</token>
</pattern>
<message>Substitua por <suggestion>deve</suggestion>.</message>
<example correction="deve">Ele <marker>deve de</marker> vir mais tarde.</example>
</rule>
<!-- DEVEM DE devem -->
<rule id="DEVEM_DE" name="Devem">
<pattern>
<token>devem</token>
<token>de</token>
</pattern>
<message>Substitua por <suggestion>devem</suggestion>.</message>
<example correction="devem">Eles <marker>devem de</marker> vir mais tarde.</example>
</rule>
<!-- DIAGNÓSTICO RESERVADO prognóstico reservado -->
<rule id="DIAGNÓSTICO_RESERVADO" name="Prognóstico reservado">
<pattern>
<marker>
<token>diagnóstico</token>
</marker>
<token>reservado</token>
</pattern>
<message>Substitua por <suggestion>prognóstico</suggestion>.</message>
<example correction="prognóstico">A Ana mantém-se com <marker>diagnóstico</marker> reservado.</example>
</rule>
<!-- TODO Review rule adequacy or move to CONTRACTIONS rulegroup -->
<!-- DUM de um -->
<!-- <rule id="DUM" name="De um">
<pattern>
<token>dum</token>
</pattern>
<message>Substitua por <suggestion>de um</suggestion>.</message>
<example correction="de um">A venda <marker>dum</marker> apartamento.</example>
</rule> -->
<!-- TODO Review rule adequacy or move to CONTRACTIONS rulegroup -->
<!-- DUMA de uma -->
<!-- <rule id="DUMA" name="De uma">
<pattern>
<token>duma</token>
</pattern>
<message>Substitua por <suggestion>de uma</suggestion>.</message>
<example correction="de uma">A venda <marker>duma</marker> casa.</example>
</rule> -->
<!-- É SUPOSTO QUE supõe-se que -->
<rule id="É_SUPOSTO_QUE" name="Supõe-se que">
<pattern>
<token>é</token>
<token>suposto</token>
<token>que</token>
</pattern>
<message>Substitua por <suggestion>supõe-se que</suggestion>.</message>
<example correction="supõe-se que">Assim, <marker>é suposto que</marker> aconteça.</example>
</rule>
<!-- E MAS TARDE e mais tarde -->
<rule id="E_MAS_TARDE" name="E mais tarde">
<pattern>
<token>e</token>
<token>mas</token>
<token>tarde</token>
</pattern>
<message>Substitua por <suggestion>e mais tarde</suggestion>.</message>
<example correction="e mais tarde">As mulheres engravidam menos <marker>e mas tarde</marker>.</example>
</rule>
<!-- TODO Coverage by CONCORDANCE rulegroup and consider removal -->
<!-- ELAS TEM elas têm -->
<rule id="ELAS_TEM" name="Elas têm">
<pattern>
<token>elas</token>
<token>tem</token>
</pattern>
<message>Substitua por <suggestion>elas têm</suggestion>.</message>
<example correction="elas têm">Há palavras que <marker>elas tem</marker> medo de ouvir.</example>
</rule>
<!-- TODO Coverage by CONCORDANCE rulegroup and consider removal -->
<!-- ELES TEM eles têm -->
<rule id="ELES_TEM" name="Eles têm">
<pattern>
<token>eles</token>
<token>tem</token>
</pattern>
<message>Substitua por <suggestion>eles têm</suggestion>.</message>
<example correction="eles têm">Há palavras que <marker>eles tem</marker> medo de ouvir.</example>
</rule>
<!-- EM ANEXAS/ANEXOS em anexo -->
<rule id="CONFUSÃO_EM_ANEXAS_ANEXOS" name="Confusão anexas/anexos">
<pattern>
<token>em</token>
<token regexp="yes">anexas?|anexos</token>
</pattern>
<message>A expressão é invariável.</message>
<suggestion>em anexo</suggestion>
<example correction="em anexo">Os documentos seguem <marker>em anexas</marker>.</example>
<example correction="em anexo">Os documentos seguem <marker>em anexos</marker>.</example>
<example>Os documentos seguem <marker>em anexo</marker>.</example>
</rule>
<!-- TODO Review coverage by CONTRACTIONS rulegroup and consider move to new category -->
<!-- EM UM num -->
<!-- <rule id="EM_UM" name="Num">
<pattern>
<token>em</token>
<token>um</token>
</pattern>
<message>Substitua por <suggestion>num</suggestion>.</message>
<example correction="num">Está <marker>em um</marker> armário.</example>
</rule> -->
<!-- TODO Review coverage by CONTRACTIONS rulegroup and consider move to new category -->
<!-- EM UMA numa -->
<!-- <rule id="EM_UMA" name="Numa">
<pattern>
<token>em</token>
<token>uma</token>
</pattern>
<message>Substitua por <suggestion>numa</suggestion>.</message>
<example correction="numa">Está <marker>em uma</marker> gaveta.</example>
</rule> -->
<!-- EM VÊS DE/DA/DAS/DO/DOS em vez de/da/das/do/dos -->
<rule id="EM_VÊS_DE_DA_DAS_DO_DOS" name="Confusão: vês - vez">
<pattern>
<token>em</token>
<marker>
<token>vês</token>
</marker>
<token regexp="yes">de|das?|dos?</token>
</pattern>
<message>Substitua por <suggestion>vez</suggestion>.</message>
<example correction="vez">Ele falou em <marker>vês</marker> de escrever.</example>
</rule>
<!-- ENTRAS TE entraste -->
<rule id="ENTRAS_TE" name="Confusão: entras te - entraste">
<pattern>
<token>entras</token>
<token min='0'>-</token>
<token>te</token>
</pattern>
<message>Substitua por <suggestion>entraste</suggestion>.</message>
<example correction="entraste">Então <marker>entras te</marker> bem o ano.</example>
</rule>
<!-- ESQUECEU-SE/ESQUECERAM-SE/ESQUECI-ME/ESQUECER-SE QUE esqueceu-se de que -->
<rule id="ESQUECEU-SE_QUE" name="Esqueceu-se de que">
<pattern>
<token regexp="yes">esqueceu|esqueceram|esqueci|esquecere</token>
<token>-</token>
<token>se</token>
<marker>
<token>que</token>
</marker>
</pattern>
<message>Substitua por <suggestion>de que</suggestion>.</message>
<example correction="de que">O Rui esqueceu-se <marker>que</marker> tinha um exame.</example>
</rule>
<rulegroup id="ESTA_CONFUSION" name="Confusão: Esta - Está">
<!-- ESTA MELHOR está melhor -->
<rule>
<pattern>
<token>esta</token>
<token>melhor</token>
</pattern>
<message>Substitua por <suggestion>está melhor</suggestion>.</message>
<example correction="está melhor">Assim <marker>esta melhor</marker> que no passado.</example>
</rule>
<!-- ESTÁ TÉCNICA esta técnica -->
<rule>
<pattern>
<token>está</token>
<token>técnica</token>
</pattern>
<message>Substitua por <suggestion>esta técnica</suggestion>.</message>
<example correction="esta técnica">Os primeiros a usar <marker>está técnica</marker> foram eles.</example>
</rule>
<!-- ESTAS MELHOR estás melhor -->
<rule>
<pattern>
<token>estas</token>
<token>melhor</token>
</pattern>
<message>Substitua por <suggestion>estás melhor</suggestion>.</message>
<example correction="estás melhor">Assim <marker>estas melhor</marker>.</example>
</rule>
</rulegroup>
<!-- Use infinitive - ESTAR/ESTÃO + A + INFINITIVE-->
<rule id="ESTAR-ESTÃO_A_PLURAL" name="Usar infinitivo ESTAR/ESTÃO + A + INFINITIVO">
<pattern>
<token regexp="yes">estar|estão</token>
<token>a</token>
<marker>
<token postag="VMSF3P0"></token>
</marker>
</pattern>
<message>Usar infinitivo: <suggestion><match no="3" postag_regexp= "yes" postag="VMSF3P0" postag_replace="VMN0000"/></suggestion></message>
<example correction="pedir">Alguns carteiros estão a <marker>pedirem</marker> a reforma.</example>
</rule>
<!-- EU CRIA eu queria -->
<rule id="EU_CRIA" name="Confusão: cria - queria">
<pattern>
<token>eu</token>
<token>cria</token>
</pattern>
<message>Substitua por <suggestion>eu queria</suggestion>.</message>
<example correction="eu queria">É o que <marker>eu cria</marker> dizer.</example>
</rule>
<!-- EXISTE MUITAS existem muitas -->
<rule id="EXISTE_MUITAS" name="Existem muitas">
<pattern>
<token>existe</token>
<token>muitas</token>
</pattern>
<message>Substitua por <suggestion>existem muitas</suggestion>.</message>
<example correction="existem muitas">Na vida <marker>existe muitas</marker> coisas boas.</example>
</rule>
<!-- FAZEM n SEGUNDOS/MINUTOS/HORAS/DIAS/SEMANAS/MESES/ANOS > FAZ -->
<rule id="FAZEM" name="Faz">
<pattern>
<marker>
<token>fazem</token>
</marker>
<token></token>
<token regexp="yes">&expressoes_de_tempo;</token>
</pattern>
<message>Substitua por <suggestion>faz</suggestion>.</message>
<example correction="faz">Rui, <marker>fazem</marker> duas semanas que não falamos.</example>
</rule>
<!-- FALARAM-SE DE falou-se de -->
<rule id="FALARAM-SE_DE" name="Falou-se de">
<pattern>
<token>falaram</token>
<token>-</token>
<token>se</token>
<token>de</token>
</pattern>
<message>Substitua por <suggestion>falou-se de</suggestion>.</message>
<example correction="falou-se de">Hoje <marker>falaram-se de</marker> de vários problemas.</example>
</rule>
<!-- FAZER AS COISAS DIREITAS fazer as coisas direito -->
<rule id="FAZER_AS_COISAS_DIREITAS" name="Fazer as coisas direito">
<pattern>
<token inflected='yes'>fazer</token>
<token>as</token>
<token>coisas</token>
<marker>
<token>direitas</token>
</marker>
</pattern>
<message>Substitua por <suggestion>direito</suggestion>.</message>
<example correction="direito">Preciso fazer as coisas <marker>direitas</marker>.</example>
</rule>
<!-- FOI ACEITADA foi aceite -->
<rule id="FOI_ACEITADA" name="Foi aceite">
<pattern>
<token>foi</token>
<token>aceitada</token>
</pattern>
<message>Substitua por <suggestion>foi aceite</suggestion>.</message>
<example correction="foi aceite">A proposta <marker>foi aceitada</marker> hoje.</example>
</rule>
<!-- FOI ACEITADO foi aceite -->
<rule id="FOI_ACEITADO" name="Foi aceite">
<pattern>
<token>foi</token>
<token>aceitado</token>
</pattern>
<message>Substitua por <suggestion>foi aceite</suggestion>.</message>
<example correction="foi aceite">O acordo <marker>foi aceitado</marker> hoje.</example>
</rule>
<!-- FOI SOU UM/UMA foi só um/uma -->
<rule id="FOI_SOU_UM-UMA" name="Foi só um/uma">
<pattern>
<token>foi</token>
<marker>
<token>sou</token>
</marker>
<token regexp="yes">um|uma</token>
</pattern>
<message>Substitua por <suggestion>só</suggestion>.</message>
<example correction="">Na realidade foi <marker>sou</marker> um esquecimento.</example>
</rule>
<!-- FORMAS INOVADORES formas inovadoras -->
<rule id="FORMAS_INOVADORES" name="Formas inovadoras">
<pattern>
<token>formas</token>
<token>inovadores</token>
</pattern>
<message>Substitua por <suggestion>formas inovadoras</suggestion>.</message>
<example correction="formas inovadoras">Tudo são <marker>formas inovadores</marker>.</example>
</rule>
<!-- FURTO DE IDENTIDADE usurpação de identidade -->
<rule id="FURTO_DE_IDENTIDADE" name="Usurpação de identidade">
<pattern>
<token>furto</token>
<token>de</token>
<token>identidade</token>
</pattern>
<message>Substitua por <suggestion>usurpação de identidade</suggestion>.</message>
<example correction="usurpação de identidade">É comum ser alvo de <marker>furto de identidade</marker> na Internet.</example>
</rule>
<!-- Covered by VERBO_DE_QUE TODO Remove -->
<!-- GOSTO DE QUE gosto que
<rule id="GOSTO_DE_QUE" name="Gosto que">
<pattern>
<token>gosto</token>
<token>de</token>
<token>que</token>
</pattern>
<message>Substitua por <suggestion>gosto que</suggestion>.</message>
<example correction="gosto que">Nem sempre <marker>gosto de que</marker> me ensinem.</example>
</rule>
-->
<!-- GUARDAS-CHUVAS guarda-chuvas -->
<rule id="GUARDAS-CHUVAS" name="Guarda-chuvas">
<pattern>
<token>guardas</token>
<token>-</token>
<token>chuvas</token>
</pattern>
<message>Substitua por <suggestion>guarda-chuvas</suggestion>.</message>
<example correction="guarda-chuvas">Abram os <marker>guardas-chuvas</marker>.</example>
</rule>
<rule id="HÁ-ATRÁS" name="Há n tempo atrás">
<pattern>
<token>há</token>
<token min="0" regexp="yes">quase|poucos?|alguns|cerca</token>
<token skip="4"><exception scope="next" postag='VM[CIS][CFIMPS]..0' postag_regexp='yes'></exception></token>
<token regexp="yes">&expressoes_de_tempo;|tempos?</token>
<token>atrás</token>
</pattern>
<message>Com o verbo haver não é necessário usar "atrás": <suggestion><match no="1" include_skipped="all" ></match> <match no="2" include_skipped="all" ></match> <match no="3" include_skipped="all" ></match> <match no="4" include_skipped="all" ></match></suggestion>.</message>
<example correction="Há n segundos"><marker>Há n segundos atrás</marker>.</example>
</rule>
<!-- À n SEGUNDOS/MINUTOS/HORAS/DIAS/SEMANAS/MESES/ANOS há n tempo-->
<rule id="À-HÁ_N_TEMPO" name="Há n tempo">
<antipattern>
<token>à</token>
<token>última</token>
<token>hora</token>
</antipattern>
<pattern>
<marker>
<token>à</token>
</marker>
<token min="0" regexp="yes">quase|poucos?|alguns|cerca</token>
<token skip="4"><exception scope="next" postag='VM[CIS][CFIMPS]..0' postag_regexp='yes'></exception></token>
<token regexp="yes">&expressoes_de_tempo;|tempos?</token>
</pattern>
<message>Substitua por <suggestion>há</suggestion>.</message>
<example correction="">Conheço a Ana <marker>à</marker> quase 30 anos.</example>
</rule>
<!-- AI aí -->
<rule id="AI" name="Confusão: ai - aí">
<pattern>
<token postag_regexp="yes" postag="SPS00|V.+"></token>
<marker>
<token>ai</token>
</marker>
</pattern>
<message>Substitua por <suggestion>aí</suggestion>.</message>
<example correction="">Vou por <marker>ai</marker> fora a cantar.</example>
</rule>
<!-- HÁS VEZES às vezes -->
<rule id="HÁS_VEZES" name="Confusão: hás vezes - às vezes">
<pattern>
<token>hás</token>
<token>vezes</token>
</pattern>
<message>Substitua por <suggestion>às vezes</suggestion>.</message>
<example correction="às vezes">É que <marker>hás vezes</marker> temos de tomar decisões.</example>
</rule>
<!-- HOUVERAM MUITOS houve muitos -->
<rule id="HOUVERAM_MUITOS" name="Houve muitos">
<pattern>
<token>houveram</token>
<token>muitos</token>
</pattern>
<message>Substitua por <suggestion>houve muitos</suggestion>.</message>
<example correction="houve muitos">No passado <marker>houveram muitos</marker> muitos acidentes.</example>
</rule>
<!-- ARREAR A/AS VELA/S BANDEIRA/S arriar a/as vela/s bandeira/s -->
<rule id="ARREAR_A_AS_VELA_S_BANDEIRA_S" name="Confusão: arrear - arriar">
<pattern>
<marker>
<token>arrear</token>
</marker>
<token regexp="yes">a|as</token>
<token regexp="yes">vela|velas|bandeira|bandeiras</token>
</pattern>
<message>Substitua por <suggestion>arriar</suggestion>.</message>
<example correction="arriar">Vamos <marker>arrear</marker> a vela.</example>
</rule>
<!-- IR NA PRAIA ir à praia -->
<rulegroup id="IR_CONTRACTION_NOUN" name="Ir + na/no + nome">
<rule>
<pattern>
<token inflected='yes'>ir
<exception regexp='yes'>foi|fora|indo</exception></token>
<token>na</token>
<token postag='N.F.+' postag_regexp='yes'/>
</pattern>
<message>Substitua por <suggestion>\1 à \3</suggestion>.</message>
<example correction="ir à praia">Tenho de <marker>ir na praia</marker>.</example>
<example>Tenho de <marker>ir à praia</marker>.</example>
<example>O menor número registrado foi na faixa etária entre 50 a 54 anos...</example>
</rule>
<rule>
<pattern>
<token inflected='yes'>ir
<exception regexp='yes'>foi|fora|indo</exception></token>
<token>no</token>
<token postag='N.M.+' postag_regexp='yes'/>
</pattern>
<message>Substitua por <suggestion>\1 ao \3</suggestion>.</message>
<example correction="ir ao ginásio">Tenho de <marker>ir no ginásio</marker>.</example>