Saltar para: Posts [1], Pesquisa [2]

Bits & Bots

Robôs e pedaços de bits do planeta wikimédia e arredores.

Bits & Bots

Robôs e pedaços de bits do planeta wikimédia e arredores.

"Por Jnvalves (Obra do próprio) [CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0)], undefined" href="https://commons.wikimedia.org/wiki/File%3AO_Fanal%2C_Ilha_da_Madeira%2C_Portugal.jpg">

O regresso do Aleph Bot

por Alchimista, em 09.06.17

Bot Sketch Eric Benacek

 

Após uma paragem que durou anos, o Aleph Bot, o bot anti-vandalismo que faz companhia ao Salebot regressa ao activo.

 

 

 O Aleph_Bot começou a operar em 2010, tendo como base o código do AVBOT, um robô desenvolvido por Emijrp, um editor da Wikipédia em Espanhol, e era precisamente por lá que operava. Tratava-se de um código extremamente interessante, onde, em comparação com o do Salebot, outro robô anti-vandalismo que opera na pt.wp, trazia inovações como a diferenciação do tipo de edição - edição de testes, vandalismo ou branqueio de página, avisos específicos para o tipo de edição, assim como o reportar de utilizadores que apesar dos avisos reincidem nas edições. 

 

 Apesar de no início a adaptação à wikipédia Lusófona ter corrido a bom ritmo, a verdade é as especificidades da wikipédia em língua espanhola estavam embutidas no código, não separadas em variáveis, e se é verdade que houve uma tentativa de reescrever essas especificidades em variáveis localizáveis, com o passar do tempo o código do Aleph foi divergindo da versão original cada vez mais, até ficar complicada a sua manutenção, e deu-se a inevitável depreciação.

 A ideia de criar um novo código surgiu ainda o Aleph estava ao serviço, aproveitando as ideias do AVBOT mas num código mais flexível, e onde as variáveis de configuração estivessem o mais longe possível do código, permitindo mais flexibilidade, e ao mesmo tempo, que o código pude-se ser usado noutros projectos. A primeira tentativa deu-se com o python 2.7, assentando no Twisted, e indo buscar as mudanças recentes ao irc. Foram bons tempos, mas ao mesmo tempo momentos frustrantes, com imensos UnicodeDecodeError a saltitar por tudo o que era canto. Aliado a isto, noticias de uma possível depreciação do servido de mudanças recentes no irc deixaram-me relutante em continuar por um caminho que poderia estar condenado, então a certo ponto decidi aguardar, e o Aleph caiu na penumbra.

 

Uns tempos mais tarde, decidi voltar à carga, desta vez começando do zero, e já com o python 3. E que diferença tremenda. Por muitas discussões em redor da questão py3/py2, a verdade é que especialmente para trabalhar com artigos da wikipédia, o py3 é uma enorme lufada de ar fresco, tirando, é claro, o caso particular das predefinições do wikitexto, onde chego a ter pérolas como esta:  "{{{{Subst:{0}{3}.css|{1}|{2}|{3}}}}}".format(msg, ptitle, oldid, aleph_warns, bv)

 

 Se o irc já tinha recuperado o seu estatuto de intocável, o RCStream apresentava-se como uma excelente alternativa, até porque fornecia mais informação do que o irc, e de uma forma mais estruturada, então o código que estava a nascer foi adaptado para usar este novo sistema. Infelizmente teve um tempo de vida curto, porque pouco depois de começar a usa-lo, foi depreciado em favor do EventStreams. Neste caso, a modificação não foi muito custosa.

 

 Como é óbvio, a parte mais custosa de todo o processo é determinar se uma edição deve ou não ser revertida, e como o bot tenta fazer a distinção entre edições de teste ou vandalismos óbvios, as complicações aumentam. Na implementação actual, que espero vir a descrever mais pormenorizadamente no futuro, há uma contabilização das expressões problemáticas que ocorrem nas linhas adicionadas e removidas, e após o saldo entre as duas, contabiliza-se a pontuação. No final, todas as expressões encontradas dão origem a uma pré-classificação do género {'T': -12, 'G': 2, 'V': 0}. Com esta classificação, o passo seguinte é determinar a classificação da edição e o seu valor, entrando então um sistema de análise de pontuação. De uma forma simples, se a pontuação de vandalismo ou teste é inferior a um valor definido, a edição é classificada como tal, se for superior ao limite definido, é classificada como boa, e se ficar entre um intervalo definido como limbo, tenta usar o ORES ( um sistema de inteligência artificial), para verificar se a edição deve ser revertida.

 

 No caso de reversão, ocorre ainda a verificação se o penúltimo editor não é o bot, ou o Salebot, a fim de evitar guerras de edições, a reversão e a posterior notificação. Ao enviar a notificação, o bot verifica se existem mais avisos, e futuramente será implementado um sistema de notificação na wiki quando se verifica que há um utilizador já com inúmeros avisos. Na verdade, a partir do momento em que o código estabiliza e os bugs com o core code do bot desaparecem, a ideia é implementar um sistema de notificações na wiki de situações que convém análise humana, nomeadamente os tais editores com muitos avisos, ou edições do bot revertidas. Na prática, o Aleph é eternamente um projecto em curso.

 

 Paralelamente ao desenvolvimento do código em si, há um painel de controlo em desenvolvimento em https://tools.wmflabs.org/aleph/. Recorrendo ao OAuth, é possível utilizadores da wikipédia autenticarem-se, e no caso de serem administradores, conseguem parar o Aleph. Há alguns dados sobre o estado do script no grid engine, que por agora apenas são despejados sem grande tratamento, mas o plano é que a partir desse painel se tenha acesso às análises do bot, assim como controlar alguns dos seus parâmetros.

Mais sobre mim

foto do autor

Arquivo

  1. 2017
  2. J
  3. F
  4. M
  5. A
  6. M
  7. J
  8. J
  9. A
  10. S
  11. O
  12. N
  13. D
  14. 2016
  15. J
  16. F
  17. M
  18. A
  19. M
  20. J
  21. J
  22. A
  23. S
  24. O
  25. N
  26. D
  27. 2015
  28. J
  29. F
  30. M
  31. A
  32. M
  33. J
  34. J
  35. A
  36. S
  37. O
  38. N
  39. D
  40. 2014
  41. J
  42. F
  43. M
  44. A
  45. M
  46. J
  47. J
  48. A
  49. S
  50. O
  51. N
  52. D
  53. 2013
  54. J
  55. F
  56. M
  57. A
  58. M
  59. J
  60. J
  61. A
  62. S
  63. O
  64. N
  65. D
  66. 2012
  67. J
  68. F
  69. M
  70. A
  71. M
  72. J
  73. J
  74. A
  75. S
  76. O
  77. N
  78. D
  79. 2011
  80. J
  81. F
  82. M
  83. A
  84. M
  85. J
  86. J
  87. A
  88. S
  89. O
  90. N
  91. D