diff options
Diffstat (limited to 'JLanguageTool/src/rules/es')
-rw-r--r-- | JLanguageTool/src/rules/es/el.txt | 99 | ||||
-rw-r--r-- | JLanguageTool/src/rules/es/grammar.xml | 1331 |
2 files changed, 1430 insertions, 0 deletions
diff --git a/JLanguageTool/src/rules/es/el.txt b/JLanguageTool/src/rules/es/el.txt new file mode 100644 index 0000000..dfbdc52 --- /dev/null +++ b/JLanguageTool/src/rules/es/el.txt @@ -0,0 +1,99 @@ +# words that require 'el' instead of 'al' as a determiner +antia +aura +ábsida +ácana +ácigos +ácula +áfaca +ágata +ágora +águila +álaga +álgebra +álica +álsine +áncora +ánfora +ánima +ápoca +áqueta +árdea +área +árgana +árgema +árgoma +árnica +árula +áster +aca +acta +adra +afta +agua +aguasal +aguatinta +aguatocha +aguaturma +aguaverde +aguavilla +aguaviva +ala +alba +alca +ale +alga +algia +alma +alna +alta +alza +ama +amia +*ana +anca +ancla +anda +angla +angra +ansa +ansia +anta +ara +arca +archa +arda +aria +arma +arna +arpa +arria +arta +arte +asa +asca +ascua +asma +aspa +asta +auca +aula +ave +aya +azua +haba +habla +haca +hacha +hada +halda +hambre +hampa +hansa +harca +harma +harpa +harria +harta +haya +haza diff --git a/JLanguageTool/src/rules/es/grammar.xml b/JLanguageTool/src/rules/es/grammar.xml new file mode 100644 index 0000000..9093a5f --- /dev/null +++ b/JLanguageTool/src/rules/es/grammar.xml @@ -0,0 +1,1331 @@ +<?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" ?> +<!-- +Spanish Grammar and Typo Rules for LanguageTool +Copyright (C) 2006 Marcin Miłkowski +Copyright (C) 2010 Juan Martorell +$Id$ +--> +<rules lang="es" xsi:noNamespaceSchemaLocation="../rules.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema"> + <category name="Miscelánea"> + <!-- from Spanish Wikipedia --> + + <rule id="DE_GRATIS" name="«de gratis» (gratis)"> + <!--DE_GRATIS--> + + <pattern case_sensitive="no" mark_from="0"> + <token>de</token> + + <token>gratis</token> + </pattern> + + <message>La forma correcta es decir <suggestion>gratis</suggestion>.</message> + + <short>Expresión incorrecta</short> + + <example type="correct">El agua es gratis.</example> + + <example correction="gratis" type="incorrect">El agua es <marker>de gratis</marker>.</example> + </rule> + + <rule id="EN_BASE_A" name="en base a"> + <!-- EN_BASE_A En base a -> con base en (o basado en) (o sobre la base de)--> + + <pattern> + <token>en</token> + + <token>base</token> + + <token>a</token> + </pattern> + + <message>En español, la expresión «en base a» no existe.</message> + + <short>Expresión incorrecta</short> + + <example correction="" type="incorrect">Se puede regresar a la zona <marker>en base a</marker> lo expuesto por las autoridades</example> + + <example type="correct">Se ha reducido la cadencia de los trenes basándose en la estadistica elaborada.</example> + </rule> + </category> + + <category name="Palabras de difícil ortografía"> + <rule id="AH_INF" name="ah + infinitivo (a)"> + <!--AH_INF ah acabar--> + + <pattern case_sensitive="no"> + <token>ah</token> + + <token postag="V[ASM]N0000" postag_regexp="yes"></token> + </pattern> + + <message>La preposición se escribe sin h: <suggestion>a \2</suggestion>.</message> + + <short>Error ortográfico</short> + + <example correction="a hablar" type="incorrect">Voy <marker>ah hablar</marker> con ella.</example> + + <example type="correct">Voy <marker>a hablar</marker> con ella.</example> + </rule> + + <rule id="VOY_HA_INF" name="ir ha + infinitivo (a)"> + <!--VOY_HA_INF ir + ha + INF--> + + <pattern> + <token inflected="yes">ir</token> + + <token>ha</token> + + <token postag="V[ASM]N0000" postag_regexp="yes"></token> + </pattern> + + <message>Esta palabra se escribe sin h: <suggestion>\1 a \3</suggestion>.</message> + + <short>Error ortográfico</short> + + <example correction="Voy a hablar" type="incorrect"><marker>Voy ha hablar</marker> con ella.</example> + + <example type="correct"><marker>Voy a hablar</marker> con ella.</example> + </rule> + + <rule id="VOY_INF" name="ir + infinitivo (a)"> + <!--VOY_INF ir + infinitivo (a)--> + + <pattern> + <token inflected="yes">ir<exception inflected="yes" regexp="yes">ver|ser</exception></token> + + <token postag="V[ASM]N0000" postag_regexp="yes"></token> + </pattern> + + <message>La construcción "ir" más infinitivo exige la presencia de la preposición "a": <suggestion>\1 a \2</suggestion>.</message> + + <example correction="Voy a hablar" type="incorrect"><marker>Voy hablar</marker> con ella.</example> + + <example type="correct"><marker>Voy a hablar</marker> con ella.</example> + </rule> + </category> + + <category name="Ortografía"> + <rulegroup id="AE_COMIDO" name="Tiempos compuestos 'a' o 'e' + participio"> + <rule id="A_PARTICIPIO" name="a + participio"> + <!--A_PARTICIPIO a comido--> + + <pattern mark_from="1" mark_to="-1"> + <token postag=".*" postag_regexp="yes"><exception inflected="yes" regexp="yes">oler|saber|gustar</exception></token> + + <token>a</token> + + <token postag="V[ASM]P00SM" postag_regexp="yes"></token> + </pattern> + + <message>El verbo 'haber' lleva hache: <suggestion>ha</suggestion></message> + + <short>Error ortográfico.</short> + + <example correction="ha" type="incorrect">El atleta <marker>a</marker> corrido de forma espectacular.</example> + + <example type="correct">El atleta <marker>ha</marker> corrido de forma espectacular.</example> + </rule> + + <rule id="E_PARTICIPIO" name="e+ participio"> + <!--E_PARTICIPIO e comido--> + + <pattern mark_to="-1"> + <token>e</token> + + <token postag="V[ASM]P00SM" postag_regexp="yes"><exception regexp="yes">^h?[ií].* </exception></token> + </pattern> + + <message>El verbo 'haber' lleva hache: <suggestion>he</suggestion></message> + + <short>Error ortográfico.</short> + + <example correction="he" type="incorrect">Siempre <marker>e</marker> comido bien.</example> + + <example type="correct">Nos llevamos como anfitrión <marker>e</marker> invitado.</example> + </rule> + + <rule id="PRON_E_PARTICIPIO" name="e+ participio"> + <!--PRON_E_PARTICIPIO e comido--> + + <pattern mark_from="1" mark_to="-1"> + <token postag="PP.*" postag_regexp="yes"></token> + + <token>e</token> + + <token postag="V[ASM]P00SM" postag_regexp="yes" regexp="yes">^h?[ií].*</token> + </pattern> + + <message>El verbo 'haber' lleva hache: <suggestion>he</suggestion></message> + + <short>Error ortográfico.</short> + + <example correction="he" type="incorrect">Nos <marker>e</marker> incluido en la lista.</example> + + <example type="correct">Les <marker>he</marker> invitado.</example> + </rule> + </rulegroup> + + <!--HABER_AVER Uso incorrecto de «haber» por «a ver»--> + + <rulegroup id="HABER_AVER" name="Uso incorrecto de «haber» por «a ver»"> + <rule> + <!--HABER_QUE--> + + <pattern> + <token>haber</token> + + <token>que</token> + </pattern> + + <message>Verifique que no quiso decir <suggestion>a ver qué</suggestion>.</message> + + <example correction="a ver qué" type="incorrect">Mirad esto, <marker>haber que</marker> opináis.</example> + + <example type="correct">Tiene en su haber el Campeonato del Mundo.</example> + </rule> + + <rule> + <!--HABER_SI--> + + <pattern mark_from="1"> + <token postag="SENT_START" postag_regexp="yes"></token> + + <token>haber</token> + + <token>si</token> + </pattern> + + <message>Verifique que no quiso decir <suggestion>a ver si</suggestion>.</message> + + <example correction="A ver si" type="incorrect"><marker>Haber si</marker> puedes arreglar esto.</example> + + <example type="correct">No va a haber si se ha acabado.</example> + </rule> + </rulegroup> + + <rulegroup id="Y_E_O_U" name="y Italia, o Honduras"> + <rule id="Y_E" name="e ante palabras empezando por i"> + <!--Y_E Cambio e por y--> + + <pattern> + <token>y<exception scope="previous">¿</exception></token> + + <token regexp="yes">^h?[ií].* <exception regexp="yes">^h?ih?[aeouáéóú].*</exception><!--Números romanos--><exception + regexp="yes">[ivxlcdm]+</exception></token> + </pattern> + + <message>Cuando precede a palabras que comienzan por i- (o hi-), la conjunción "y" se transforma en "e": <suggestion>e <match + no="2"></match></suggestion></message> + + <short>Error ortográfico.</short> + + <example correction="e Italia" type="incorrect">Alemania <marker>y Italia</marker> disputarán el torneo.</example> + + <example type="correct">Alemania <marker>e Italia</marker> disputarán el torneo.</example> + + <example type="correct">¿<marker>Y Irene</marker>?</example> + </rule> + + <rule id="O_U" name="cambio de o ante palabras empezando por o"> + <!--O_U Cambio u por o--> + + <pattern> + <token>o</token> + + <token regexp="yes">^h?[oó].*</token> + </pattern> + + <message>Cuando precede a palabras que comienzan por o- (u ho-), la conjunción "o" se transforma en "u": <suggestion>u <match + no="2"></match></suggestion></message> + + <short>Error ortográfico.</short> + + <example correction="u Honduras" type="incorrect">El torneo lo disputarán Alemania <marker>o Honduras</marker>.</example> + + <example type="correct">El torneo lo disputarán Alemania <marker>u Honduras</marker>.</example> + </rule> + </rulegroup> + + <!--AFRENTAR_DIFICULTADES http://cvc.cervantes.es/alhabla/museo_horrores/museo_050.htm--> + + <rule id="AFRENTAR_DIFICULTADES" name="afrentar dificultades o problemas (afrontar)"> + <pattern> + <token inflected="yes" skip="1">afrentar</token> + + <token inflected="yes" regexp="yes">dificultad|problema|vicisitud</token> + </pattern> + + <message>La forma correcta es usando el verbo "afrontar: <suggestion><match include_skipped="none" no="1" postag="(.*)" + postag_replace="$1">afrontar</match> <match include_skipped="following" no="1"></match> <match no="2"></match></suggestion>"</message> + + <example correction="afrontar muchos problemas" type="incorrect">Tuvo que <marker>afrentar muchos problemas</marker> con la mudanza.</example> + + <example type="correct">Afrontaron muchas dificultades en la travesía.</example> + </rule> + + <rule id="DESTORNILLAR_RISA" name="destornillarse de risa (desternillarse)"> + <!--DESTORNILLAR_RISA http://cvc.cervantes.es/alhabla/museo_horrores/museo_015.htm--> + + <!----> + + <pattern> + <token inflected="yes" skip="1">destornillar</token> + + <token>de</token> + + <token>risa</token> + </pattern> + + <message>La forma correcta es usando el verbo «desternillar»: <suggestion><match include_skipped="none" no="1" postag="(.*)" + postag_replace="$1">desternillar</match> <match include_skipped="all" no="2"></match> <match no="3"></match></suggestion>"</message> + + <example correction="desternilló de risa" type="incorrect">Con ese chiste, se <marker>destornilló de risa</marker>.</example> + + <example type="correct">Casi te desternillas de risa el otro día.</example> + </rule> + + <rule id="CONTRA_MAS" name="Contra más (cuanto más)"> + <!--CONTRA_MAS http://cvc.cervantes.es/alhabla/museo_horrores/museo_034.htm--> + + <pattern> + <token>contra</token> + + <token>más</token> + </pattern> + + <message>La forma correcta es <suggestion>cuanto más</suggestion> excepto en el contexto de litigar o luchar y no en el contexto de sumar.</message> + + <short>Posible expresión incorrecta</short> + + <example correction="cuanto más" type="incorrect">Seguro que <marker>contra más</marker> estudias, más aprendes</example> + + <example type="correct">Cuanto más insistas, menos caso te haré.</example> + </rule> + + <rule id="SIN_ECUANIME" name="sin ecuánime (sine quae non)"> + <!--SIN_ECUANIME--> + + <pattern> + <token>condición</token> + + <token>sin</token> + + <token>ecuánime</token> + </pattern> + + <message>La forma correcta es <suggestion>condición sine quae non</suggestion>.</message> + + <short>Expresión incorrecta</short> + + <example correction="condición sine quae non" type="incorrect">Para aprobar, la <marker>condición sin ecuánime</marker> es obtener un 5.</example> + + <example type="correct">Es condición sine quae non tener permiso para entrar en el local.</example> + </rule> + + <!--Pronombres personales cuyo tilde se olvida o se pone impropiamente +Atención: estas reglas pueden generar muchos falsos positivos.--> + + <rulegroup id="PRONOM_TILDE" name="Pronombres personales con o sin tilde"> + <!--TU_VERBO_P2 tu + verbo en 2a persona--> + + <rule id="TU_VERBO_P2" name="Tu + verbo en 2a"> + <pattern mark_to="-1"> + <token>tu</token> + + <token postag="V.{3}2.*" postag_regexp="yes"><exception negate_pos="yes" postag="V.{3}2.*" postag_regexp="yes"></exception></token> + </pattern> + + <message>El pronombre personal <suggestion>tú</suggestion> lleva tilde.</message> + + <example correction="tú" type="incorrect">Cuando <marker>tu</marker> vuelves, yo voy.</example> + + <example type="correct">Me alegra tu vuelta al trabajo.</example> + </rule> + + <rule id="TU_PARTICULA_VERBO_P2" name="Tu + verbo en 2a"> + <!--TU_PARTICULA_VERBO_P2 tu no te lo pierdas +Anulamos si entremedias hay al menos un nombre--> + + <pattern mark_to="-2"> + <token>tu</token> + + <token postag="[RPC].*|UNKNOWN" postag_regexp="yes" skip="3"><exception postag="A..*|DI0.S0" postag_regexp="yes"></exception></token> + + <token postag="V.{3}2.*" postag_regexp="yes"><exception negate_pos="yes" postag="V.{3}2.*" postag_regexp="yes"></exception></token> + </pattern> + + <message>El pronombre personal <suggestion>tú</suggestion> lleva tilde.</message> + + <example correction="tú" type="incorrect">Cuando <marker>tu</marker> no vuelves, yo voy.</example> + + <example type="correct">Me alegra tu feliz vuelta al trabajo.</example> + </rule> + + <rule id="EL_VERBO_P3" name="el + verbo en 3a"> + <!--EL_VERBO_P3 El + verbo 3a persona lleva tilde--> + + <pattern case_sensitive="yes" mark_to="-1"> + <token regexp="yes">[E|e]l</token> + + <token postag="V.{3}3.*" postag_regexp="yes"><exception postag="N.*|P.*|AQ.*" postag_regexp="yes"></exception><exception + regexp="yes">\p{Lu}.*</exception></token> + </pattern> + + <message>El pronombre personal <suggestion>él</suggestion> lleva tilde.</message> + + <example correction="él" type="incorrect">Cuando <marker>el</marker> llegó, yo me fui.</example> + + <example type="correct">Me alegra tu vuelta al trabajo.</example> + </rule> + + <rule id="TU_FINAL" name="Pronombre tú al final de la oración."> + <!--TU_FINAL Tu al final de la oración. Siempre será nominativo.--> + + <pattern mark_to="-1"> + <token>tu</token> + + <token postag="SENT_END" postag_regexp="yes"></token> + </pattern> + + <message>El pronombre personal <suggestion>tú</suggestion> lleva tilde.</message> + + <example correction="tú" type="incorrect">Tu hermnana es como <marker>tu</marker>.</example> + + <example type="correct">¿Te puedes ocupar tú?</example> + </rule> + + <rule id="EL_FINAL" name="Pronombre sin tilde al final de la oración"> + <!--EL_FINAL Él al final de la oración--> + + <pattern mark_to="-1"> + <token>el</token> + + <token postag="SENT_END" postag_regexp="yes"></token> + </pattern> + + <message>El pronombre personal <suggestion>él</suggestion> lleva tilde.</message> + + <example correction="él" type="incorrect">Se encargará <marker>el</marker>.</example> + + <example type="correct">Esa caja es para él.</example> + </rule> + </rulegroup> + + <rule id="LO_SE" name="lo se (sé)"> + <!--LO_SE lo sé--> + + <pattern mark_from="1"> + <token regexp="yes">l[oae]</token> + + <token>se</token> + </pattern> + + <message>El presente de indicativo primera persona del verbo saber es <suggestion>sé</suggestion>.</message> + + <example correction="sé" type="incorrect">Yo lo <marker>se</marker> desde hace tiempo</example> + + <example type="correct">Si lo sé, no vengo.</example> + </rule> + + <rule id="SE_FINAL" name="se al final de la oración. (sé)"> + <!--SE_FINAL se al final de la oración simepre es verbo. +--> + + <pattern mark_to="-1"> + <token><!--Included «lo» to avoid overlap with LO_SE rule--><exception regexp="yes" scope="previous">per|lo</exception>se</token> + + <token postag="SENT_END" postag_regexp="yes"></token> + </pattern> + + <message>El presente de indicativo primera persona del verbo saber es <suggestion>sé</suggestion>.</message> + + <example correction="sé" type="incorrect">Hay quien programa, pero yo no <marker>se</marker>.</example> + + <example type="correct">Hay que saber tocar y yo sé.</example> + </rule> + </category> + + <category name="Gramática"> + <rulegroup id="DEQUEISMO_QUEISMO" name="Queísmos y dequeismos"> + <!-- Dequeísmo y queísmo: utilización incorrecta de DE + QUE +Fuentes: http://cvc.cervantes.es/ALHABLA/MUSEO_HORRORES/museo_010.htm --> + + <rule id="INF_PP_QUE" name="Infinitivo tipo convencer + pron.pers + que"> + <!--INF_PP_QUE Queísmo: convenceros que -> convenceros de que --> + + <pattern> + <token regexp="yes">(alegrar|enterar|informar|dudar|convencer|hartar)(me|te|se|nos|os)</token> + + <token>que</token> + </pattern> + + <message>En este contexto, el verbo va seguido normalmente de la preposición 'de': <suggestion>\1 de \2</suggestion></message> + + <short>Posible dequeísmo</short> + + <example correction="alegrarse de que" type="incorrect">Está bien <marker>alegrarse que</marker> haya dinero para todos.</example> + + <example type="correct">No pareces <marker>enterarte de que</marker> todo está resuelto.</example> + </rule> + + <rule id="ESTAR_SEGURO_QUE" name="Estar + seguro + que"> + <!-- ESTAR_SEGURO_QUE Queísmo: Estoy seguro que -> Estoy seguro de que --> + + <pattern> + <token inflected="yes"><exception postag="VAIP3S0" postag_regexp="yes"></exception>estar</token> + + <token inflected="yes">seguro</token> + + <token>que</token> + </pattern> + + <message>En este contexto, el verbo va seguido normalmente de la preposición 'de': <suggestion>\1 \2 de \3</suggestion></message> + + <short>Posible queísmo</short> + + <example correction="Estamos seguros de que" type="incorrect"><marker>Estamos seguros que</marker> falta poco para acabar.</example> + + <example type="correct"><marker>Está segura de que</marker> lo que decís es cierto.</example> + </rule> + + <rule id="PP_V_QUE" name="PP + verbo tipo alegrar + que"> + <!-- PP_V_QUE Queísmo: me alegro que -> me alegro de que --> + + <pattern> + <token postag="PP[12]C[SP]000" postag_regexp="yes"></token> + + <token inflected="yes" regexp="yes">alegrar|sorprender|entreistecer|agobiar|emocionar|aburres|preocupa<exception postag="VM.*3.*" + postag_regexp="yes"></exception></token> + + <token>que</token> + </pattern> + + <message>En este contexto, el verbo va seguido normalmente de la preposición 'de': <suggestion>\1 \2 de que</suggestion></message> + + <short>Posible queísmo</short> + + <example correction="Nos alegramos de que" type="incorrect"><marker>Nos alegramos que</marker> haya comida para todos</example> + + <example type="correct">Fue cuando <marker>os enterasteis de que</marker> se acabó la temporada.</example> + </rule> + + <rule id="VERBO_DE_QUE" name="verbo tipo pensar + de que"> + <!-- VERBO_DE_QUE Queísmo: Pienso de que -> Pienso que --> + + <pattern> + <token inflected="yes" + regexp="yes">pensar|opinar|creer|comentar|expresar|decir|deducir|inferir|colegir|razonar|comunicar|confirmar|corroborar|desmentir|constar|resultar|aconsejar|ver|observar</token> + + <token>de</token> + + <token>que</token> + </pattern> + + <message>Posible dequeísmo: <suggestion>\1 \3</suggestion>.</message> + + <short>Posible dequeísmo</short> + + <example correction="Pienso que" type="incorrect"><marker>Pienso de que</marker> estamos mejorando mucho.</example> + + <example type="correct">Creemos <marker>que</marker> podemos mejorar más.</example> + </rule> + + <rule id="ESTAR_CLARO_DE_QUE" name="Vervo tipo estar + AQ + de que"> + <!-- ESTAR_CLARO_DE_QUE Queísmo: Está claro de que -> Está claro que --> + + <pattern> + <token inflected="yes" regexp="yes">ser|estar|encontrar|ver|entender</token> + + <token postag="RG|AQ.*" postag_regexp="yes"><exception inflected="yes" regexp="yes">seguro|libre|consciente|harto</exception></token> + + <token>de</token> + + <token>que</token> + </pattern> + + <message>Posible dequeísmo: <suggestion>\1 \2 \4</suggestion>.</message> + + <short>Posible dequeísmo</short> + + <example correction="Es fácil que" type="incorrect"><marker>Es fácil de que</marker> volvamos a encontrarnos</example> + + <example type="correct"><marker>Encontrarás útil que</marker> hayan cambiado el cartel</example> + </rule> + + <rule id="V3_DE_QUE" name="Verbo en 3a + de que"> + <!-- V3_DE_QUE Dequeísmo: Me alegra de que -> Me alegra que --> + + <pattern> + <token postag="PP[123]C[SP][0D]00" postag_regexp="yes"></token> + + <token regexp="yes">alegra|entreistece|agobia|importa|resbala|harta|emociona|altera|aburre|falta|preocupa</token> + + <token>de</token> + + <token>que</token> + </pattern> + + <message>Posible dequeísmo: <suggestion>\1 \2 \4</suggestion>.</message> + + <short>Posible dequeísmo</short> + + <example correction="Me alegra que" type="incorrect"><marker>Me alegra de que</marker> volvamos a encontrarnos</example> + + <example type="correct"><marker>Me entristece que</marker> hayan cambiado el cartel</example> + </rule> + + <rule id="INSISTIR_DE_QUE" name="Verbo tipo insistir + de que"> + <!-- INSISTIR_DE_QUE Dequeísmo: Insisto de que -> Insisto en que --> + + <pattern> + <token inflected="yes">insistir</token> + + <token>de</token> + + <token>que</token> + </pattern> + + <message>Posible dequeísmo: <suggestion>\1 en \3</suggestion>.</message> + + <short>Posible dequeísmo</short> + + <example correction="insistas en que" type="incorrect">No <marker>insistas de que</marker> vayamos al cine</example> + + <example type="correct"><marker>Inisitieron en que</marker> les faltaba un documento.</example> + </rule> + </rulegroup> + + <rulegroup id="DETRAS_PX" name="Preposición de opsición + posesivo"> + <!--DETRAS_PX http://cvc.cervantes.es/alhabla/museo_horrores/museo_025.htm--> + + <rule> + <!--1ª Singular: detrás mío.--> + + <pattern> + <token regexp="yes">detrás|delante|debajo|encima|cerca</token> + + <token postag="PX1.S0S0" postag_regexp="yes"></token> + </pattern> + + <message>La expresión correcta es «<suggestion>\1 de <match no="2" postag="PX(\d).S0S0" postag_regexp="yes" + postag_replace="PP$1CSO00">mí</match></suggestion>».</message> + + <example correction="detrás de mí" type="incorrect">Venían <marker>detrás mío</marker>.</example> + + <example type="correct">Tengo a los niños encima de mí.</example> + </rule> + + <rule> + <!--2ª Singular: debajo tuyo/tuya--> + + <pattern> + <token regexp="yes">detrás|delante|debajo|encima|cerca</token> + + <token postag="PX2.S0S0" postag_regexp="yes"></token> + </pattern> + + <message>La expresión correcta es «<suggestion>\1 de <match no="2" postag="PX(\d).S0S0" postag_regexp="yes" + postag_replace="PP$1CSO00">ti</match></suggestion>».</message> + + <example correction="detrás de ti" type="incorrect">Venían <marker>detrás tuyo</marker>.</example> + + <example type="correct">Tienes a los niños encima de ti.</example> + </rule> + + <rule> + <!--1ª plural: delante nuestro/a.--> + + <pattern> + <token regexp="yes">detrás|delante|debajo|encima|cerca</token> + + <token postag="PX1.S0P0" postag_regexp="yes"></token> + </pattern> + + <message>La expresión correcta es «\1 de nosotros/as»</message> + + <example type="incorrect">Venían <marker>detrás nuestro</marker>.</example> + + <example type="correct">Tenemos a los niños encima de nosotros.</example> + </rule> + + <rule> + <!--2ª plural: cerca vuestro/a--> + + <pattern> + <token regexp="yes">detrás|delante|debajo|encima|cerca</token> + + <token postag="PX2.S0P0" postag_regexp="yes"></token> + </pattern> + + <message>La expresión correcta es «\1 de vosotros/as».</message> + + <example type="incorrect">Venían <marker>detrás vuestro</marker>.</example> + + <example type="correct">Tenemos a los niños encima de vosotros.</example> + </rule> + + <rule> + <!--3ª: detrás suyo--> + + <pattern> + <token regexp="yes">detrás|delante|debajo|encima|cerca</token> + + <token postag="PX3.{2}0C0" postag_regexp="yes"></token> + </pattern> + + <message>La expresión correcta es «\1 de él/ella/ello/ellos/ellas/usted/ustedes».</message> + + <example type="incorrect">Venían <marker>detrás suya</marker>.</example> + + <example type="correct">Tienen a los niños encima de ellos.</example> + </rule> + </rulegroup> + + <!--http://roble.pntic.mec.es/acid0002/index_archivos/Gramatica/imperativo.htm +cantad [cantar/VMM02P0] +cantéis[cantar/VMSP2P0] + +ven [venir/VMM02S0 +vengas[venir/VMSP2S0]--> + + <rule id="NO_IMPERATIVO" name="no + imperativo"> + <pattern> + <token regexp="yes">no|nunca|jamás</token> + + <token postag="VMM.*" postag_regexp="yes"><exception negate_pos="yes" postag="VMM.*" postag_regexp="yes"></exception></token> + </pattern> + + <message>Con la partícula negativa \1, en lugar del imperativo \2 debe usarse el subjuntivo <suggestion>\1 <match no="2" postag="VMM.(.{3})" + postag_regexp="yes" postag_replace="VMSP$1"></match></suggestion>.</message> + + <example correction="No contéis" type="incorrect"><marker>No contad</marker> con nosotros.</example> + + <example type="correct">Nunca contéis conmigo.</example> + </rule> + + <rule id="PP_SE" name="te se, me se"> + <!--PP_SE: te se -> se te--> + + <pattern> + <token postag="PP.CS[0D]00" postag_regexp="yes"></token> + + <token>se</token> + </pattern> + + <message>El orden de las partículas debe invertirse: «<suggestion>\2 \1</suggestion>».</message> + + <short>Incorreción gramatical: \1 \2</short> + + <example correction="se te" type="incorrect">¡Como te agarre, <marker>te se</marker> cae el pelo!</example> + + <example type="correct">Lo agarraron y se le cayó el pelo.</example> + </rule> + + <rulegroup id="MAS_BUENO_MALO" name="más + bueno/malo (mejor/peor)"> + <rule id="MAS_BUENA"> + <!--MAS_BUENA--> + + <pattern> + <token>más</token> + + <token inflected="yes" postag="AQ.*" postag_regexp="yes">bueno</token> + </pattern> + + <message>En español, se utiliza el término <suggestion><match no="2" postag="AQ.{2}(.)." postag_replace="AQ0C$10">mejor</match></suggestion></message> + + <example correction="mejor" type="incorrect">Este pan está <marker>más bueno</marker> que el otro</example> + + <example type="correct">Cuando una solución es la más simple es mejor que cualquier otra.</example> + </rule> + + <rule id="MAS_MALA"> + <!--MAS_MALA--> + + <pattern> + <token>más</token> + + <token inflected="yes" postag="AQ.*" postag_regexp="yes">malo</token> + </pattern> + + <message>En español, se utiliza el término <suggestion><match no="2" postag="AQ.{2}(.)." postag_replace="AQ0C$10">peor</match></suggestion></message> + + <example correction="peor" type="incorrect">Este pan está <marker>más malo</marker> que el otro</example> + + <example type="correct">Cuando una solución es la más complicada es peor que cualquier otra.</example> + </rule> + </rulegroup> + + <!--GROSSO_MODO +http://buscon.rae.es/dpdI/SrvltConsulta?lema=grosso--> + + <rule id="GROSSO_MODO" name="A grosso modo --> grosso modo"> + <pattern> + <token postag="SP.*" postag_regexp="yes"></token> + + <token regexp="yes">gross?o</token> + + <token>modo</token> + </pattern> + + <message>La expresión latina <suggestion>grosso modo</suggestion> se usa sin preposición.</message> + + <example correction="grosso modo" type="incorrect">Las cifras indican <marker>a grosso modo</marker> que la gestión es correcta.</example> + + <example type="correct">La Tierra se encuentra, dicho grosso modo, a ocho minutos-luz del Sol.</example> + </rule> + </category> + + <category name="Concordancia"> + <rulegroup id="CONC_NUM" name="Concordancias de número"> + <!-- Concordancias de número --> + + <!-- Exclusiones deliberadas: + Las formas estilísticas adjetivo + nombre (casos S->P y P->S) + Razón: Son costosas (x2) y poco comunes para justificar su inclusión. + TODO: Incluir una categoría por defecto desactivada con esas reglas. + No se sintetiza porque es muy difícil saber la intención del autor y más que ayudar puede despistar. + --> + + <rule id="DET_NOM_SING" name="Concordancia singular en Determinante + nombre"> + <!-- DET_NOM_SING Concordancia (el pavos) --> + + <pattern case_sensitive="yes"> + <token postag="D.{3}S.*" postag_regexp="yes"><exception postag="DI0CS0" postag_regexp="yes"></exception></token> + + <token postag="N.{2}P.*" postag_regexp="yes"><!--TODO: Include adjectives: N.{2}P.*|AQ.{2}P. --><exception negate_pos="yes" postag="N.{2}P.*" + postag_regexp="yes"></exception><exception regexp="yes">[Bb]otones|\p{Lu}\p{L}*</exception></token> + </pattern> + + <message>Posible falta de concordancia de número entre «\1» y «\2».</message> + + <short>Concordancia de número dudosa</short> + + <example type="incorrect">Acércame <marker>la sillas</marker>, por favor.</example> + + <example type="correct">Acércame las sillas, por favor.</example> + </rule> + + <rule id="DEL_NOM_SING" name="Concordancia singular en Determinante + nombre"> + <!-- DEL_NOM_SING Concordancia (del pavos) --> + + <pattern case_sensitive="yes"> + <token regexp="yes">del|al</token> + + <token postag="N.{2}P.*" postag_regexp="yes"><!--TODO: Include adjectives: N.{2}P.*|AQ.{2}P. --><exception negate_pos="yes" postag="N.{2}P.*" + postag_regexp="yes"></exception><exception regexp="yes">\p{Lu}\p{L}*</exception></token> + </pattern> + + <message>Posible falta de concordancia de número entre «\1» y «\2».</message> + + <short>Concordancia de número dudosa</short> + + <example type="incorrect">Ha vuelto <marker>del parques</marker> pronto.</example> + + <example type="correct">Ha vuelto del parque pronto.</example> + </rule> + + <rule id="DET_NOM_PLUR" name="Concordancia plural en Determinante + nombre"> + <!-- DET_NOM_PLUR Concordancia (los pavo) --> + + <pattern case_sensitive="yes"> + <token postag="D.{3}P.*" postag_regexp="yes"></token> + + <token postag="N.{2}S.*" postag_regexp="yes"><!--TODO: Include adjectives: N.{2}S.*|AQ.{2}S. --><exception negate_pos="yes" postag="N.{2}S.*" + postag_regexp="yes"></exception><exception regexp="yes">\p{Lu}\p{L}*</exception></token> + </pattern> + + <message>Posible falta de concordancia de número entre «\1» y «\2».</message> + + <short>Concordancia de número dudosa</short> + + <example type="incorrect">Ordenamos <marker>las silla</marker> por colores.</example> + + <example type="correct">Ordenamos las sillas por colores.</example> + </rule> + + <rule id="NOM_ADJ_SINGULAR" name="Concordancia singular Nombre + adjetivo"> + <!-- NOM_ADJ_SINGULAR Concordancia (pavo rojos) --> + + <pattern case_sensitive="yes" mark_to="-1"> + <token postag="N.{2}S.*" postag_regexp="yes" skip="1"><exception postag="C.*|SP.*" postag_regexp="yes" scope="previous"></exception><exception + postag="[VRCD].*|SP.*" postag_regexp="yes"></exception><exception + regexp="yes">mayoría|minoría|parte|número|mitad|vez|modo|manera|guisa|forma</exception><exception regexp="yes" + scope="next">[^\p{L}].*|al|del|suficientemente</exception></token> + + <token postag="A.{3}P.*" postag_regexp="yes"><exception postag="[VRCD].*|SP.*" postag_regexp="yes" scope="previous"></exception><exception + postag="D.*|SP.*" postag_regexp="yes"></exception><exception regexp="yes">\p{Lu}\p{L}+</exception></token> + + <token postag=".+" postag_regexp="yes"><exception postag="N.{2}P.*" postag_regexp="yes" scope="current"></exception></token> + </pattern> + + <message>Posible falta de concordancia de número entre «\1» y «\2».</message> + + <short>Concordancia de número dudosa</short> + + <example type="incorrect">Hay <marker>silla verdes</marker> en esa tienda.</example> + + <example type="correct">Hay sillas verdes en esa tienda.</example> + </rule> + + <rule id="NOM_ADJ_PLURAL" name="Concordancia plural Nombre + adjetivo"> + <!-- NOM_ADJ_PLURAL Concordancia (pavos rojo) --> + + <pattern case_sensitive="yes" mark_to="-1"> + <token postag="N.{2}P.*|P.{3}P.*" postag_regexp="yes" skip="1"><exception postag="SP.*" postag_regexp="yes" scope="previous"></exception><exception + negate_pos="yes" postag="N.{2}P.*|P.{3}P.*" postag_regexp="yes"></exception><exception inflected="yes" postag="" + regexp="yes">me|nos|mí|conmigo|ti|contigo|lo|le|les|se|consigo|la|do</exception><exception regexp="yes">botones|veces</exception><exception + regexp="yes" scope="next">[^\p{L}].*|al|del</exception></token> + + <token postag="A.{3}S.*" postag_regexp="yes"><exception postag="[VRCD].*|SP.*" postag_regexp="yes" scope="previous"></exception><exception + scope="previous">del</exception><exception postag="R.*|SP.*" postag_regexp="yes"></exception><exception + regexp="yes">clave|guía|extra|\p{Lu}\p{L}+</exception></token> + + <token postag=".+" postag_regexp="yes"><exception postag="C.*" postag_regexp="yes" regexp="yes">[;,]</exception></token> + </pattern> + + <message>Posible falta de concordancia de número entre «\1» y «\2».</message> + + <short>Concordancia de número dudosa</short> + + <example type="incorrect">Pintaremos las <marker>sillas verde</marker> de otro color.</example> + + <example type="correct">Pintaremos las sillas verdes de otro color.</example> + </rule> + </rulegroup> + + <rulegroup id="CONC_GENERO" name="Concordancias de género"> + <!-- Concordancias de género --> + + <!-- Exclusiones deliberadas: + Las formas estilísticas adjetivo + nombre (casos M->F y F->M) + Razón: Son costosas (x2) y poco comunes para justificar su inclusión. + TODO: Incluir una categoría por defecto desactivada con esas reglas. + + El grupo completo se ha copiado del de concordancias de género, + sustituyendo S y P por F y M respectivamente y ajustando los textos + y las posiciones. + + --> + + <rule id="DET_NOM_FEM" name="Concordancia femenino en Determinante + nombre"> + <!-- DET_NOM_FEM Concordancia (la pavo) --> + + <pattern case_sensitive="yes"> + <token postag="D.{2}F.*" postag_regexp="yes"></token> + + <token postag="N.{1}M.*" postag_regexp="yes"><exception negate_pos="yes" postag="N.{1}M.*" postag_regexp="yes" scope="current"></exception><exception + regexp="yes">botones|\p{Lu}\p{L}*</exception><exception inflected="yes" regexp="yes">la|do|número</exception></token> + </pattern> + + <message>Posible falta de concordancia de género entre «\1» y «\2».</message> + + <short>Concordancia de género dudosa</short> + + <example type="incorrect">Me gusta <marker>esa teléfono</marker> para ti.</example> + + <example type="correct">Me gusta ese coche para ti.</example> + </rule> + + <rule id="DET_FEM_NOM_FEM" name="Palabras que empiezan por fonema A tónico"> + <!-- DET_FEM_NOM_FEM Palabras que empiezan por fonema A tónico. --> + + <pattern case_sensitive="no"> + <token>la</token> + + <!--Eliminado "alta" por tener valor femenino y masculino.--> + + <token + regexp="yes">aura|ágata|ágora|águila|álgebra|áncora|ánfora|ánima|área|árnica|acta|afta|agua|aguasal|aguaviva|ala|alba|alga|algia|alma|alza|ama|anca|ancla|ansia|ara|arca|archa|aria|arma|arpa|arria|arte|asa|ascua|asma|aspa|asta|aula|ave|aya|haba|habla|hacha|hada|hambre|hampa|haya</token> + </pattern> + + <message>Antes de una palabra que empieza por "a" o "ha" tónicas, se emplea el determinante masculino: <suggestion>el \2</suggestion>.</message> + + <short>Determinante incorrecto.</short> + + <example correction="el agua" type="incorrect">Me gusta <marker>la agua</marker> que hay ahí.</example> + + <example type="correct">Me gusta el agua que hay ahí.</example> + </rule> + + <rule id="DET_NOM_MASC" name="Concordancia masculino en Determinante + nombre"> + <!-- DET_NOM_MASC Concordancia (ese pava) --> + + <pattern case_sensitive="yes"> + <token postag="D[^P].{1}M.*" postag_regexp="yes"><exception regexp="yes">[Ee]l|(([Aa]l|[Nn]in)g)?[Uuú]n</exception><exception postag="R.*" + postag_regexp="yes"></exception></token> + + <token postag="N.{1}F.*" postag_regexp="yes"><exception negate_pos="yes" postag="N.{1}F.*" postag_regexp="yes" scope="current"></exception><exception + regexp="yes">\p{Lu}\p{L}*</exception></token> + </pattern> + + <message>Posible falta de concordancia de género entre «\1» y «\2».</message> + + <short>Concordancia de género dudosa masculino-femenino</short> + + <example type="incorrect">Me gusta <marker>ese silla</marker> que hay ahí.</example> + + <example type="correct">Me gusta esa silla que hay ahí.</example> + </rule> + + <rule id="EL_NOM_MASC" name="Concordancia masculino en Determinante + nombre"> + <!-- EL_NOM_MASC Concordancia (el pava) --> + + <pattern case_sensitive="yes"> + <token postag="DA0MS0" postag_regexp="yes"></token> + + <token postag="N.{1}F.*" postag_regexp="yes"><exception negate_pos="yes" postag="N.{1}F.*" postag_regexp="yes" scope="current"></exception><exception + regexp="yes">\p{Lu}\p{L}*|aura|ágata|ágora|águila|álgebra|áncora|ánfora|ánima|área|árnica|acta|afta|agua|aguasal|aguaviva|ala|alba|alga|algia|alma|alta|alza|ama</exception><exception + regexp="yes">anca|ancla|ansia|ara|arca|archa|aria|arma|arpa|arria|arte|asa|ascua|asma|aspa|asta|aula|ave|aya|haba|habla|hacha|hada|hambre|hampa|haya</exception></token> + </pattern> + + <message>Posible falta de concordancia de género entre «\1» y «\2».</message> + + <short>Concordancia de género dudosa masculino-femenino</short> + + <example type="incorrect">Me gusta <marker>el silla</marker> que hay ahí.</example> + + <example type="correct">Me gusta esa silla que hay ahí.</example> + </rule> + + <rule id="DEL_NOM_MASC" name="Concordancia masculino en Determinante + nombre"> + <!-- DEL_NOM_MASC Concordancia (del pava) +--> + + <pattern case_sensitive="yes"> + <token regexp="yes">[Dd]el|[Aa]l</token> + + <token postag="N.{1}F.*" postag_regexp="yes"><exception postag="AQ.*|N.{1}M.*|SP.*" postag_regexp="yes" scope="current"></exception><exception + regexp="yes">\p{Lu}\p{L}*|aura|ágata|ágora|águila|álgebra|áncora|ánfora|ánima|área|árnica|acta|afta|agua|aguasal|aguaviva|ala|alba|alga|algia|alma|alta|alza|ama</exception><exception + regexp="yes">anca|ancla|ansia|ara|arca|archa|aria|arma|arpa|arria|arte|asa|ascua|asma|aspa|asta|aula|ave|aya|haba|habla|hacha|hada|hambre|hampa|haya</exception></token> + </pattern> + + <message>Posible falta de concordancia de género entre «\1» y «\2».</message> + + <short>Concordancia de género dudosa masculino-femenino</short> + + <example type="incorrect"><marker>Del silla</marker></example> + + <example type="correct">Del paso</example> + </rule> + + <rule id="NOM_ADJ_FEM" name="Concordancia femenino Nombre + adjetivo"> + <!-- NOM_ADJ_FEM Concordancia (pava rojo) --> + + <pattern case_sensitive="yes" mark_from="1" mark_to="-1"> + <token postag=".*" postag_regexp="yes"></token> + + <token postag="N.{1}F.*|PD0F.*" postag_regexp="yes" skip="1"><exception postag="SP.*|C." postag_regexp="yes" scope="previous"></exception><!--Previously excluded C.*|SP.*|R.* without negated POS--><exception + negate_pos="yes" postag="N.{1}F.*|PD0F.*" postag_regexp="yes"></exception><exception inflected="yes" + regexp="yes">mayoría|minoría|mitad|parte|vez|era|eres|\w||\p{Lu}\p{L}+</exception><exception postag="[VRCD].*|SP.*|PR.*" postag_regexp="yes" + scope="next"></exception><exception regexp="yes" scope="next">\W*</exception><exception regexp="yes" scope="next">del|al</exception></token> + + <token postag="A.{2}M.*" postag_regexp="yes"><exception regexp="yes">\p{Lu}\p{L}+</exception></token> + + <token postag=".+" postag_regexp="yes"><exception postag="N.{1}M.*" postag_regexp="yes" scope="current"></exception></token> + </pattern> + + <message>Posible falta de concordancia de género entre «\2» y «\3».</message> + + <short>Concordancia de género dudosa nom.-adj. m.- f.</short> + + <example type="incorrect">La <marker>silla rojo</marker> está al fondo.</example> + + <example type="correct">La silla roja está al fondo</example> + </rule> + + <rule id="NOM_ADJ_MASC" name="Concordancia masculino Nombre + adjetivo"> + <!-- NOM_ADJ_MASC Concordancia (pavo roja) --> + + <pattern case_sensitive="yes" mark_to="-1"> + <token postag="N.{1}M.*|P.{2}M.*" postag_regexp="yes" skip="1"><exception negate_pos="yes" postag="N.{1}M.*|P.{2}M.*" + postag_regexp="yes"></exception><exception>dos</exception><exception regexp="yes" scope="next">[^\p{L}]+</exception><exception postag="[VCD].*|SP.*" + postag_regexp="yes" scope="next"></exception></token> + + <token postag="A.{2}F.*" postag_regexp="yes"><exception regexp="yes">\p{Lu}\p{L}+</exception><exception postag="N.*" postag_regexp="yes" + scope="next"></exception></token> + + <token postag=".+" postag_regexp="yes"><exception postag="N.{1}F.*" postag_regexp="yes" scope="current"></exception></token> + </pattern> + + <message>Posible falta de concordancia de género entre «\1» y «\2».</message> + + <short>Concordancia de género dudosa nom.-adj. f.-m.</short> + + <example type="incorrect">El <marker>sillón roja</marker> está al fondo.</example> + + <example type="correct">El sillón rojo está al fondo.</example> + </rule> + + <rule id="CADA_UNA_DE_LOS" name="Concordancia «Cada una de los»"> + <!-- CADA_UNA_DE_LOS Concordancia (Concordancia M/F) --> + + <pattern case_sensitive="no"> + <token postag="SENT_START" postag_regexp="yes"></token> + + <token>cada</token> + + <token>una</token> + + <token>de</token> + + <token>los</token> + </pattern> + + <message>Posible falta de concordancia de género entre «\3» y «\5».</message> + + <short>Concordancia de género dudosa en la forma distributiva cada... de...</short> + + <example type="incorrect"><marker>Cada una de los</marker> caballeros está ocupado.</example> + + <example type="correct">Cada uno de los caballeros está ocupado.</example> + </rule> + + <rule id="CADA_UNO_DE_LAS" name="Concordancia «Cada una de las»"> + <!-- CADA_UNO_DE_LAS Concordancia (Concordancia F/M) --> + + <pattern case_sensitive="no"> + <token postag="SENT_START" postag_regexp="yes"></token> + + <token>cada</token> + + <token>uno</token> + + <token>de</token> + + <token>las</token> + </pattern> + + <message>Posible falta de concordancia de género entre «\3» y «\5».</message> + + <short>Concordancia de género dudosa en la forma distributiva cada... de...</short> + + <example type="incorrect"><marker>Cada uno de las</marker> damas está ocupada.</example> + + <example type="correct">Cada una de las damas está ocupada.</example> + </rule> + </rulegroup> + + <!--Concordancias con verbos--> + + <rulegroup id="CONC_V_PERSONA" name="Concordancia de persona"> + <!--Concordancia de persona--> + + <!--Concordancica de persona (pronombre personal nominativo + verbo)--> + + <rule id="PP_V_1"> + <!-- PP_V_1 Concordancia (yo entregas)--> + + <pattern> + <token postag="PP1(.{2}N|CN0|MP0).*" postag_regexp="yes"><exception postag="SP.*" postag_regexp="yes" scope="previous"></exception><exception + postag="V.{3}1.*|C.*|SP.*" postag_regexp="yes"></exception></token> + + <token postag="V.{3}[23].*" postag_regexp="yes"><exception postag="V.{3}1.*|AQ.*" postag_regexp="yes"></exception></token> + </pattern> + + <message>Posible falta de concordancia de persona entre «\1» y «\2».</message> + + <short>Concordancia de 1ª persona dudosa</short> + + <example type="incorrect"><marker>Yo vienes</marker></example> + + <example type="correct">Yo vengo</example> + </rule> + + <rule id="PP_V_2"> + <!-- PP_V_2 Concordancia (tú entrego)--> + + <pattern case_sensitive="no"> + <token postag="PP2(.{2}N|CN0|MP0).*" postag_regexp="yes"><exception postag="SP*" postag_regexp="yes" scope="previous"></exception></token> + + <token postag="V.{3}[13].*" postag_regexp="yes"><exception postag="AQ.*|SP.*" postag_regexp="yes"></exception><!--TODO: generalizar.--><exception + regexp="yes">como|una|obra</exception></token> + </pattern> + + <message>Posible falta de concordancia de persona entre «\1» y «\2».</message> + + <short>Concordancia de 2ª persona dudosa</short> + + <example type="incorrect"><marker>Tú vengo</marker></example> + + <example type="correct">Tú vienes</example> + </rule> + + <rule id="PP_V_3"> + <!-- PP_V_3 Concordancia (él entrego)--> + + <pattern case_sensitive="no"> + <token postag="PP3(.*000|CN0|MP0).*" postag_regexp="yes"><exception postag="SP.*" postag_regexp="yes" scope="previous"></exception></token> + + <token postag="V.{3}[12].*" postag_regexp="yes"><exception postag="V.{3}3.*|C.*|SP.*" postag_regexp="yes" scope="next"></exception><exception + postag="V.{3}3.*|AQ.*|[NCR].*" postag_regexp="yes"></exception></token> + </pattern> + + <message>Posible falta de concordancia de persona entre «\1» y «\2».</message> + + <short>Concordancia de 3ª persona dudosa</short> + + <example type="incorrect"><marker>Él vengo</marker></example> + + <example type="correct">Él viene</example> + </rule> + + <rule id="PP_V_SINGULAR" name="Concordancia singular Nombre + verbo"> + <!-- PP_V_SINGULAR Concordancia (él vienen) + Eliminados sustantivos y otros pronombres por elevado número de falsos positivos. --> + + <pattern> + <token postag="PP.{2}S.*" postag_regexp="yes"><exception postag="SP.*|C.*|PT.*" postag_regexp="yes" scope="previous"></exception><exception + negate_pos="yes" postag="PP.{2}S.*" postag_regexp="yes"></exception><exception postag="PP.C.[0D]00" postag_regexp="yes"></exception></token> + + <token postag="V.{4}P.*" postag_regexp="yes"></token> + </pattern> + + <message>Posible falta de concordancia de número entre «\1» y «\2».</message> + + <short>Concordancia de número (plural) dudosa</short> + + <example type="incorrect"><marker>Yo venimos</marker></example> + + <example type="correct">Yo vengo</example> + </rule> + + <rule id="PP_V_PLURAL" name="Concordancia plural Nombre + verbo"> + <!-- PP_V_PLURAL Concordancia (ellos viene) + Eliminados los sustantivos y otros pronombres por exceso de falsos positivos. + --> + + <pattern> + <token postag="PP.{2}P.*" postag_regexp="yes"><exception postag="SP.*|CS.*|PT.*" postag_regexp="yes" scope="previous"></exception> <exception + postag="AQ.*|V.*|PP[12]C.000|PP3.{2}[AD]00" postag_regexp="yes"></exception></token> + + <token postag="V.{4}S.*" postag_regexp="yes"><exception negate_pos="yes" postag="V.*" postag_regexp="yes"></exception></token> + </pattern> + + <message>Posible falta de concordancia de número entre «\1» y «\2».</message> + + <short>Concordancia de número (singular) dudosa</short> + + <example type="incorrect">sólo <marker>ellos vuela</marker> por el cielo</example> + + <example type="correct">aviones vuelan</example> + </rule> + </rulegroup> + </category> + + <category default="off" name="Concordancia predicativa"> + <rule id="SUJ_PRED_ATRIB_SINGULAR" name="Concordancia de sujeto y predicado en singular en oraciones atributivas"> + <!-- SUJ_PRED_ATRIB_SINGULAR Concordancia (pavo es rojos) --> + + <pattern case_sensitive="yes"> + <token postag="N.{2}S.*|P.{3}S.*" postag_regexp="yes" skip="1"><exception scope="previous">del|al</exception><exception postag="SP.*|C.*" + postag_regexp="yes" scope="previous"></exception><exception postag="PP.C.[DO0]00|R.*|C.*|SP.*" postag_regexp="yes"></exception><exception + regexp="yes">mayoría|minoría|parte|número</exception><exception postag="[NC].*" postag_regexp="yes" scope="next"></exception></token> + + <token inflected="yes" regexp="yes" skip="1"><exception regexp="yes" scope="previous">[^\w].*|se</exception><exception postag="C.*|SP.*" + postag_regexp="yes" scope="previous"></exception><exception postag="C.*|SP.*" postag_regexp="yes" scope="next"></exception>ser|parecer</token> + + <token postag="N.{2}P.*|A.{3}P.*" postag_regexp="yes"><exception postag="V.*" scope="previous"></exception><exception postag="SP.*|[CDRV].*" + postag_regexp="yes"></exception></token> + </pattern> + + <message>Posible falta de concordancia de número entre «\1» y «\3».</message> + + <short>Concordancia de número dudosa</short> + + <example type="incorrect">Esa <marker>cortina parece suaves</marker></example> + + <example type="correct">Los aviones son azules</example> + </rule> + + <rule id="SUJ_PRED_ATRIB_PLURAL" name="Concordancia de sujeto y predicado en número en oraciones atributivas"> + <!-- SUJ_PRED_ATRIB_PLURAL Concordancia (pavos es rojo) --> + + <pattern> + <token postag="N.{2}P.*|P.{3}P" postag_regexp="yes" skip="1"><exception postag="SP.*" postag_regexp="yes" + scope="previous"></exception><exception>botones</exception><exception postag="PP.C.[DO0]00" postag_regexp="yes"></exception><exception postag="[NC].*" + postag_regexp="yes" scope="next"></exception></token> + + <token inflected="yes" regexp="yes" skip="1"><exception regexp="yes" scope="previous">[^\w].*|se</exception><exception postag="VM[NG]0000" + postag_regexp="yes" scope="next"></exception>ser|estar|parecer</token> + + <token postag="N.{2}S.*|A.{3}S.*" postag_regexp="yes"><exception postag="SP.*|[CD].*" postag_regexp="yes" scope="previous"></exception><exception + postag="SP.*|[CDRV].*" postag_regexp="yes"></exception></token> + </pattern> + + <message>Posible falta de concordancia de número entre «\1» y «\3».</message> + + <short>Concordancia de número dudosa</short> + + <example type="incorrect">Las <marker>cortinas parecen suave</marker></example> + + <example type="correct">Los aviones son azules</example> + </rule> + + <rule id="SUJ_PRED_ATRIB_FEM" name="Concordancia de sujeto y predicado en femenino en oraciones atributivas"> + <!-- SUJ_PRED_ATRIB_FEM Concordancia (pava es rojo) + *Quitados los pronombres: Eso es cal +--> + + <pattern> + <token postag="N.{1}F.*" postag_regexp="yes" skip="1"><exception postag="SP.*" postag_regexp="yes" scope="previous"></exception><exception + postag="[RC].*" postag_regexp="yes"></exception><exception postag="N.*|C.*" postag_regexp="yes" scope="next"></exception></token> + + <token inflected="yes" regexp="yes" skip="2"><exception regexp="yes" scope="previous">[^\w].*|se</exception>ser|parecer</token> + + <token postag="A.{2}M.*" postag_regexp="yes"><exception postag="SP.*|[CDRV].*" postag_regexp="yes"></exception><exception + regexp="yes">la|do</exception></token> + </pattern> + + <message>Posible falta de concordancia de género entre «\1» y «\3».</message> + + <short>Concordancia de género dudosa</short> + + <example type="incorrect">La <marker>cortina es amarillo</marker></example> + + <example type="correct">Los aviones son amarillos</example> + </rule> + + <rule id="SUJ_PRED_ATRIB_MASC" name="Concordancia de sujeto y predicado en masculino en oraciones atributivas"> + <!-- SUJ_PRED_ATRIB_MASC Concordancia (pavo es roja) --> + + <pattern> + <token postag="N.{1}M.*" postag_regexp="yes" skip="1"><exception postag="RN" postag_regexp="yes"></exception><exception + regexp="yes">botones|la|do</exception><exception postag="N.*|CS" postag_regexp="yes" scope="next"></exception></token> + + <token inflected="yes" regexp="yes" skip="2"><exception regexp="yes" scope="previous">[^\w].*|se</exception>ser|estar|parecer</token> + + <token postag="A.{2}F.*" postag_regexp="yes"><exception postag="SP.*|[CDRV].*" postag_regexp="yes"></exception></token> + </pattern> + + <message>Posible falta de concordancia de género entre «\1» y «\3».</message> + + <short>Concordancia de género dudosa</short> + + <example type="incorrect"><marker>Este es amarilla</marker></example> + + <example type="correct">La avioneta será costosa</example> + </rule> + </category> + + <category name="Estilo"> + <rule id="LOOR" name="Loor de multitudes"> + <pattern> + <token>loor</token> + + <token>de</token> + + <token>multitudes</token> + </pattern> + + <message>Se prefiere la expresion «<suggestion>olor de multitudes</suggestion>».</message> + + <example correction="olor de multitudes" type="incorrect">Entraron en <marker>loor de multitudes</marker></example> + + <example type="correct">Entraron en olor de multiitudes</example> + </rule> + </category> +</rules> |