Conversa Wikipedia:Revisor ortográfico

Último comentario: Elisardojm hai 10 anos no fío "Funcionamiento del revisor"

Cambio de nome

editar

Propoño cambiarlle o nome a esta ferramenta porque paréceme que non o define correctamente. Realmente esta ferramenta non é un corrector xa que non realiza ningunha acción directa sobre os artigos nin as edicións, o único que fai é revisar o artigo e resaltar os termos que poden ser incorrectos. Logo o usuario debe decidir, xa que a ferramenta non ten intelixencia só compara as palabras nunha lista, se os termos resaltados deben ser correxidos ou non. Por iso propoño cambiarlle o nome a Revisor ortográfico, deste xeito tamén se evitará malentendidos sobre o seu funcionamento nos usuarios que non a coñezan. Saúdos, --Elisardojm (conversa) 09:31, 3 de febreiro de 2012 (UTC)

Paréceme moi aguda a concreción. Non vexo problema. --Toliño Fala aquí comigo 11:53, 4 de febreiro de 2012 (UTC)
  Feito! Cómpre activar de novo a ferramenta nas preferencias para facer o cambio efectivo. Saúdos! --Toliño Fala aquí comigo 12:26, 10 de febreiro de 2012 (UTC)
Seguro?. Pois entón haberá que poñer un aviso na taberna para que a xente se decate, ou avisamos nas conversas ós que teñan a caixa de usuario?. Ou as dúas cousas porque tanto poden non ler a taberna coma non ter a caixa de usuario do corrector... Saúdos, --Elisardojm (conversa) 14:17, 10 de febreiro de 2012 (UTC)

Toolserver

editar

Hello everybody. As you might know, the Toolserver will soon die. I moved the spellcheck scripts to Tool Labs. So please change the script: the new URL to checkArticle.php is: http://tools.wmflabs.org/spellcheck/gl/checkArticle.php . Thank you. --APPER (conversa) 31 de outubro de 2013 ás 23:36 (UTC)Responder

Funcionamiento del revisor

editar

Copio mi respuesta aquí y en es.wiki porque resultará igualmente útil en ambos proyectos. Confío en que no moleste que la escriba en español, y en todo caso doy las gracias anticipadas a cualquier gallegohablante que quiera añadir una traducción.

(En respuesta a este mensaje de Elisardojm en es.wikipedia):

Para poder aclarar tus dudas he tenido que investigar el código del corrector en Labs, e incluso hacer unas pruebas más específicas con modificaciones de su código en mi propia cuenta de Labs; afortunadamente el corrector está programado en PHP, mi lenguaje habitual, y por eso he podido profundizar en ello. Realmente ha sido interesante e instructivo averiguar o deducir las soluciones que ha buscado otro programador (en algunos casos creo que mejorables, pero yo tampoco me libraría de críticas si se revisara mi trabajo).

Antes de nada hay que explicar cómo funciona el corrector; trataré de hacerlo sin meterme en demasiados detalles técnicos.

Cuando el corrector lee el texto de la página a corregir, y antes de contrastarlo con la lista de palabras «erróneas», primero hace un filtrado de todos los caracteres que no sean letras, dejando espacios en su lugar (llamo a esta operación R0), y a continuación intenta eliminar tanto las palabras de una (sea R1) como de dos letras (sea R2). Es decir, de entrada, y aunque no parece estar documentado oficialmente, la intención del programador es claramente no considerar las palabras ni de una ni de dos letras, por lo que no serviría de nada que estén en el listado. Ahora bien; dije «intenta eliminar» y no «elimina» porque, en el código, la expresión regular usada para ejecutar R1 y R2 puede «traducirse» así: «sustituir los bloques de texto que consten de un espacio (en adelante, E1), un carácter (R1)/dos caracteres (R2) cual(es)quiera (ya solo pueden ser letras, pues R0 se hace antes) y otro espacio (en adelante, E2), por un espacio».

El problema es que esos bloques se delimitan una sola vez al principio y sin solapamiento entre ellos; por lo tanto, cuando dos palabras de una letra aparecen consecutivamente, por ejemplo en «y a veces...», se detecta la «y» y se toma su E2, pero al quedar dentro de ese bloque, ese espacio ya no puede funcionar como E1 para «a»; el resultado es que «a» no es afectada por R1, ni eliminada. Siguiendo el razonamiento, si hubiera una tercera palabra de una letra consecutiva, sí se detectaría, pero una cuarta no, etc. Exactamente lo mismo pasa con las series de palabras consecutivas de dos letras en R2. La alternancia entre palabras de una y dos letras no causa problema y todas son eliminadas, porque primero se completa R1 y solo con el texto resultante se hace R2, formándose nuevos bloques. Otra consecuencia interesante de esto es que si hay una palabra de una o dos letras exactamente al comienzo o al final del wikitexto, tampoco es eliminada, porque le faltaría su E1 o su E2, respectivamente (lo segundo es casi imposible que suceda, porque al final debería haber categorías, e incluso si hay una frase, esta debería terminar en punto, que por R0 quedaría convertido en espacio, y ya tendríamos el E2).

Sigamos. Una vez depurado el texto de entrada con esos reemplazos y otros menores que ya no vienen al caso aquí, se divide el texto final palabra por palabra dividiendo por los espacios, y, atención, se eliminan los duplicados de la lista de palabras resultante, lo cual implica que cada palabra solo aparecerá una vez (lo llamo A1), pero las variantes que solo cambian en el uso de mayúsculas o minúsculas sí estarán por separado (A2), ya que por defecto PHP trabaja con distinción de casos. Ahora, con esa lista final, vamos contrastando para cada palabra si, pasada a minúsculas, está en la lista de errores «normal», o si, tal cual, está en la lista de errores «cs» (con distinción de mayúsculas). Si hay coincidencia, se devuelve la indicación para que esa palabra sea marcada con la corrección sugerida asociada, y, como es una indicación referida simplemente a la palabra, sin especificar posiciones ni contextos, será válida para cualquier aparición de esa palabra en el wikitexto (esto explica A1); además, habrá indicaciones propias para las posibles variantes con distinción de caso (por A2), necesarias para que se marquen correctamente. Esas indicaciones son las que llegan al navegador a través del código Javascript del accesorio y hacen que aparezcan las marcas en fondo rojo.

Una vez explicado todo esto, estamos en condiciones de analizar los casos «extraños» en el texto actual de tu prueba (añado enlace permanente para dejar el contexto adecuado en consultas futuras):

  • «la» (en minúsculas): En «en la Junta», el «la» no se elimina en R2 por ir detrás de otra palabra de dos letras, con lo que pasa a la comparación con el listado; como sí tenemos «la||a» en él, se genera una indicación para todos los «la» del texto, con lo cual se marcan los otros dos «la», independientemente de su contexto (pero no los «La», por A2). El segundo «la», que también va detras de «en», también habría causado por sí solo que todos los «la» quedaran marcados, pero el tercero no, conforme a todo lo expuesto.
  • «La» (en mayúsculas): En «no en La Isla», el «La» sí se elimina en R2 por ser la tercera palabra consecutiva de dos letras, conforme se ha explicado. Las demás «La» del texto también se eliminan normalmente, al no tener palabras de dos letras delante. Por ello, no pasa a la comparación y no se genera la indicación.

Y por eso los «la» se marcan y los «La» no se marcan. Puedes probar a hacer cambios y verás que todos los resultados podrán explicarse con lo que he dicho.

En cuanto a las palabras añadidas recientemente, la explicación es más sencilla y obvia: los ficheros con las listas de palabras a corregir en cada idioma se actualizaron por última vez el 30 de abril a las 4 h UTC, cuando en teoría se actualizan a diario. En es.wiki no lo hemos notado porque no ha habido cambios desde entonces. Imagino que se deberá a algún problema en el crontab (gestor de tareas programadas de Linux), pero eso solo puede aclararlo el programador.

Y anticipándome a la siguiente pregunta: ¿soluciones? Personalmente yo eliminaría al menos el R2 y tal vez el R1, ya que realmente no veo sus beneficios, y sí las complicaciones para hacer que funcionen siempre, sin los «agujeros» que he explicado. Así se podrían admitir y gestionar sin problemas las palabras de dos ¿y una? letras, en cualquier posición. Y ya puestos, se podrían analizar otras posibles mejoras y optimizaciones (me resulta particularmente sorprendente en lo negativo la duplicación total del código entre idiomas, que complica cualquier mantenimiento futuro). Todo esto podría conseguirse: preferiblemente, por intervención directa del programador, previa explicación a él de los problemas de los reemplazos y del crontab; alternativamente, proponiéndole que me añadiera a mí como gestor de la herramienta spellcheck en Labs, de forma que yo mismo podría acceder y modificar su código y el crontab; y en última y muy poco deseable instancia, si el programador no pudiera o no quisiera hacer nada, por copiado y modificación y ejecución por mí mismo de la herramienta y el crontab en mi cuenta/herramienta de Labs (o creándome una nueva herramienta), y cambiando los enlaces en nuestras Wikipedias. En cualquier caso, el primer paso sería contactar con el programador. Ya me comentarás, seguiré atento al asunto. -jem- (conversa) 19 de maio de 2014 ás 12:28 (UTC)Responder

Grazas ó traballo do usuario -jem-, da wiki en castelán, e a APPER, o autor do script do revisor, acaban de realizarse uns pequenos cambios no programa que melloran a detección de erros en gl e es wiki (agora detéctanse palabras de só unha e dúas letras, erros que si temos que detectar na Galipedia). A maiores tamén se fixo un cambio para que os últimos termos que se engadiron na lista de erros se detectaran correctamente e que siga funcionando para os seguintes que se vaian engadindo. Hai outro detalle que atopei no funcionamento do revisor, acabo de comentarllo a -jem- e veremos se pode solucionarse tamén para mellorar un pouco máis o funcionamento desta ferramenta.
Se alguén atopa algún funcionamento estrano ou algunha cousa que se poida mellorar este é o sitio para comentalo. Saúdos, --Elisardojm (conversa) 2 de xuño de 2014 ás 12:45 (UTC)Responder
Volver á páxina do proxecto "Revisor ortográfico".