Wikipedia:Bot/Ortografía

De Wikipedia, la enciclopedia libre

Seguramente habrás llegado aquí porque has visto un bot corrigiendo faltas de ortografía o porque este ha cometido un error. Antes de revertir los errores lee:

  • Todos los cambios son revisados, ya que es imposible que el bot no cometa errores, sobre todo con palabras homónimas en otros idiomas. Algunas revisiones son en el momento, otras son al día siguiente, el máximo tiempo será de 24-36 horas, aunque serán casos excepcionales.
  • Si reviertes un error: La mejor opción, para ahorrar tiempo, es que en vez de dirigirte a la página del usuario a contárselo dejes en el comentario, al grabar la página, una explicación de por qué estaba mal corregido. Como todos los cambios son revisados, al hacerlo se verá el comentario y se incluirá esa página para que se evite. La única excepción es si el error lleva varios días; en ese caso, al revisar se ha cometido otro error por parte de la persona que ha revisado los cambios.

Cómo funciona el bot[editar]

Los cambios los realiza de forma automática y se basan en una lista de palabras con errores comunes, la mayoría por falta de acentos o por unión de dos palabras (sobretodo, através), aunque no los únicos. Se ha intentado que el bot corrija solamente las palabras que les corresponde, pero aún así es posible que cometa errores. La mayoría de estos errores los comete con palabras homónimas entre distintos idiomas, aunque las más problemáticas se han eliminado (América, Canadá, León...). Las palabras en enlaces, fotografías, plantillas o categorías se evitan, así que no suelen traer problemas.

Cómo ayudar a construir el diccionario[editar]

Si quieres ayudar a constuir el diccionario puedes hacerlo de dos formas:

  • La primera: escribe la palabra que has encontrado mal escrita en la lista de palabras que encontrarás al final, del resto nos encargaremos los que pasamos el bot.
  • La segunda requiere algo más de conocimientos, aunque es fácil y con la práctica se hace muy rápido. Es la que preferimos ya que nos evita mucho trabajo ;).

Para esta segunda opción necesitas conocer un poquito de expresiones regulares en python que te explicamos a continuación. Vamos a ponerte el ejemplo más dificil y ya verás como no lo es tanto.

ur'\b([Ff]isiol)o(gic[ao])':						ur'\1ó\2',

Esta instrucción hace varios cambios, uno de ellos es "fisiologica" por "fisiológica", pero vayamos por partes:

  • Lo primero que encontramos es "ur'':", esa es una parte necesaria, la necesitan todas las palabras, simplemente hay que ponerla y ya está.
  • Lo segundo que encontramos es "\b", esta instrucción hace que la siguiente letra sea la primera de una palabra. Esto en el caso de que nos la encontremos al principio, si la instrucción esta al final "\b([Ff]isiol)o(gic[ao])\b" significa que ahí termina la palabra. En este caso no la hemos puesto al final, ya que nos interesa que además de "fisiologica" nos cambie "fisiologicas" y "fisiologicamente". Esto es algo que no se puede hacer en todas las palabras, ya que pueden estar incluidas dentro de otras y hacer correcciones erróneas. En el caso que tenemos como ejemplo no ocurre eso, ya que es muy larga, incluso la primera "\b" es innecesaria.
  • A continuación tenemos unos paréntesis. Cada vez que aparecen paréntesis, el bot trata lo que hay dentro de ellos como una variable. En este caso tendríamos dos variables: "([Ff]isiol)" y "(gic[ao])", que se llaman: \1 y \2, que como podrás comprobar es lo que aparece en la segunda parte de la expresión. Fíjate que la "o" no está dentro de ninguna de las dos variables.
  • Por último tenemos los corchetes. Con estos indicamos que busque varios caracteres distintos. El primero le indicaría que busque la palabra, tanto con la primera letra en mayúscula, como en minúscula. El segundo corchete le está indicando que queremos que nos busque las palabras que contienen tanto la a como la o. Dentro de los corchetes se pueden poner tantas letras como necesites: aunque lo habitual es poner dos, hay casos en los que se pueden usar tres: "ur'([Ll])iberandol([aeo])':"
  • La segunda parte de la expresión suponemos que ya la comprendes con las explicaciones que te hemos dado. El "ur''," al igual que en la primera parte hay que ponerlo. Con "\1" le decimos al bot que nos ponga lo que ha encontrado en los primeros paréntesis. Así, si encuentra una F mayúscula la mantendrá, lo mismo si la encuentra minúscula. Luego aparece la "ó" que es lo que queremos cambiar. Por último "\2", es la segunda variable, es decir lo que el bot ha encontrado en los segundos paréntesis, al igual que en los primeros, si encuentra una a dará una a, y si una o, dará una o.


Si todo esto te parece muy complejo, se puede simplificar, por ejemplo:

ur'\b([Dd])escripcion\b':						ur'\1escripción',

Como puedes ver aquí sólo se utiliza una variable, que es la que nos permite mantener las mayúsculas o minúsculas, el resto de la palabra está completa en las dos partes. Si te das cuenta, en este caso no falta la segunda "\b", si faltase, el bot cambiaría "descripciones" por "descripciónes" y esto es incorrecto.

Hay un caso en el que no podrás usar el corchete inicial en la primera letra para las mayúsculas, es cuando la primera letra está acentuada. En ese caso habrá que crear dos expresiones distintas:


ur'\bAngeles\b':						ur'Ángeles',
ur'\bangeles\b':						ur'ángeles',

Que también podría ser:

ur'\bA(ngeles)\b':						ur'Á\1',
ur'\ba(ngeles)\b':						ur'á\1',


Hay otras consideraciones a tener en cuenta:

  • No se pueden usar palabras que admitan distintas acentuaciones (termino, término, terminó). Aunque es cierto que hay palabras que se han probado con éxito: ultimo--->último, ya que ultimo y ultimó son poco usadas, tan poco que en Wikipedia no han aparecido.
  • Por eso hay una pequeña excepción a esta regla, el uso de la primera y segunda persona del presente es muy extraño que se utilice en el lenguaje enciclopédico (puede aparecer en algunas citas textuales), por eso hay introducidas algunas palabras: (páginas...) que al ser pasados los bots no han realizado ningún cambio incorrecto (es decir, no existe "tú paginas"...).

Introduce nuevas palabras[editar]

El mejor método para introducir nuevas palabras es basarse en las que no ha corregido el bot en una página por la que haya pasado hace poco. Aunque seguramente más adelante se introducirá una lista de todas las que están en el bot.

Abajo puedes ver una serie de expresiones vacías que te facilitarán la introducción de nuevas palabras. Hay dos formatos, utiliza el que más te guste o como mejor sepas. No te preocupes si ahora te parece un galimatías, al editar está mucho más ordenado.

Por último algo más de python, si quieres dejar un comentario, hazlo detrás de de una almohadilla (#). Es decir, pones la almohadilla, detras de la expresión y escribes lo que quieras.


Si no quieres usar regex introduce la palabra (mal escrita) en la siguiente lista, separa cada una con "|".

Lista de palabras sin regex

axfisia|asfixia támbien|también endorréico|endorreico endorréicos|endorreicos endorréica|endorreica endorréicas|endorreicas


Lista de palabras con regex

ejemplos:

ur'\bA(ngeles)\b':						ur'Á\1',
ur'\ba(ngeles)\b':						ur'á\1',
ur'\b([Ff]isiol)o(gic[ao])':						ur'\1ó\2',


ur'\b([Dd]etras)\b':						ur'\1etrás',
ur'\ba\b(de)\b([a-z]+)(ar|er|ir)\b':						ur'ha \1 \2\3', #Ha de comer y otros verbos va siempre con hache.
ur'\bha\b([a-z]+)(ar|er|ir)\b':						ur'a \1\2',#corrige "Ha comer" por a comer y otros verbos infinitivos. Si la parte terminada en ar,er,ir fuera nombre propio empezaría en mayúscula. Si fuese nombre común se diría "vete al bar" con artículo.
ur'\ba\b([a-z]+)(ido|ado)\b':						ur'ha \1\2',#corrige "a comido" por "ha comido" u otro participio. No estoy seguro de que corrija bien al 100%.
ur'\b([])\b':						ur'\1',
ur'\b([])\b':						ur'\1',
ur'\b([])\b':						ur'\1',
ur'\b([])\b':						ur'\1',
ur'\b([])\b':						ur'\1',
ur'\b([])\b':						ur'\1',
ur'\b([])\b':						ur'\1',
ur'\b([])\b':						ur'\1',
ur'\b([])\b':						ur'\1',
ur'\b([])\b':						ur'\1',
ur'\b([])\b':						ur'\1',
ur'\b([])\b':						ur'\1',
ur'\b([])\b':						ur'\1',
ur'\b([])\b':						ur'\1',
ur'\b([])()\b':						ur'\1\2',
ur'\b([])()\b':						ur'\1\2',
ur'\b([])()\b':						ur'\1\2',
ur'\b([])()\b':						ur'\1\2',
ur'\b([])()\b':						ur'\1\2',
ur'\b([])()\b':						ur'\1\2',
ur'\b([])()\b':						ur'\1\2',
ur'\b([])()\b':						ur'\1\2',
ur'\b([])()\b':						ur'\1\2',
ur'\b([])()\b':						ur'\1\2',
ur'\b([])()\b':						ur'\1\2',