Utente:Paulatz bot/Counter
Da Wikipedia, l'enciclopedia libera.
In seguito a richiesta popolare questo è il funzionamento del bot dei conteggi.
Indice |
[modifica] Cosa il bot fa
- Cerca di individuare tutte le votazioni e contare i voti espressi
- Aggiorna le tabelle nelle pagine Wikipedia:Pagine_da_cancellare/Conta/AAAA_mese_GG
- Tiene aggiornata la pagina che racclude tutte le cancellazioni in corso.
- Una volta al giorno aggiunge un include {{Wikipedia:Pagine_da_cancellare/Conta/AAAA_mese_oggi}} alla fine della pagina Wikipedia:Pagine_da_cancellare/Conta. Il bot fa un rudimentale controllo per verificare che qualcun'altro non abbia già aggiornato la pagina. Il bot non rimuove le pagine delle votazioni ormai scadute, questa operazione deve essere svolat a mano per evitare l'accumularsi di lavoro arretrato.
- In questo caso cerca di creare anche la nuova pagina del log giornaliero, se non esiste già
- Sposta le votazioni aperte alla data di apertura della votazione, in questo caso il parametro della data (il secondo) deve essere specificato nella forma "GG mese AAAA" (ad esempio "13 aprile 2007", senza virgolette)
- per non appesantire più del necessario i server di wikipedia questa operazione viene fatta in due passaggi, di conseguenza possono volerci fino ad un'ora da quando la votazione viene aperta a quando viene spostata nella pagina giusta.
[modifica] Cosa non fa
- Non controlla il diritto di voto dei votanti
- Non fa miracoli: se la sottopagina di cancellazione non viene linkata nel log quotidiano il bot non la trova
- Non parla l'italiano (neanche l'inglese, ma questo su it.wiki è più comune)
[modifica] Quando lo fa
In teoria una volta ogni mezzora. Per generare le tabelle impiega tra i 2 e i 7 minuti e altrettanti per caricarle. Quindi ci si può aspettare che le tabelle aggiornate appaiano circa 10 minuti circa alle x:10 e alle x:40 e che contengano le proposte presentate prima della mezz'ora in questione.
[modifica] Ma io non posso aspettare!
Se hai una gran fretta che la tua proposta appaia in tabella, soprattutto se ti accorgi che il bot non è attivo (sempre di meno, ma ogni tanto capita ancora), puoi anche aggiungerla manualmente:
- Apri e modifica la pagina Wikipedia:Pagine_da_cancellare/Conta/2007 aprile 13
- Aggiungi subito sotto il penultimo </td></tr> il testo della casella qui sotto. Sostituisci NOMEPAGINA con il nome della pagina proposta per la cancellazione (appare tre volte).
<tr><td style="width:3em;">''+''</td> <td colspan=3 style="width:9em;">''manuale''</td> <td style="width:3em;">{{Termometro|—}}</td> <td>'''[[NOMEPAGINA]]''' ([[Wikipedia:Pagine_da_cancellare/Log/2007 aprile 13#NOMEPAGINA|guarda i voti]], [http://it.wikipedia.org/w/index.php?title=Wikipedia:Pagine_da_cancellare/NOMEPAGINA&action=edit vota]) <small>(''aggiunto a mano ~~~~'')</small> </td></tr>
La quarta riga è molto lunga, ma se viene spezzata produce un risultato esteticamente fastidioso, quindi cerca di tenerla intera!
Oppure questa versione ridotta, è meno bella e non riporta i link alle sezioni, ma più facile da inserire (sempre nello stesso posto):
<tr><td>+</td> <td colspan=4>''manuale''</td> <td>'''[[NOMEPAGINA]]''' <small>(''aggiunto a mano ~~~~'')</small> </td></tr>
[modifica] Significato delle barrette colorate
Le barrette colorate sono generate dal template Termometro e dovrebbero dare un'indicazione di quanto è accesa la discussione della voce. Dopo avere cambiato l'algoritmo più volte ora è abbastanza stabile, si basa esclusivamente sul numero di voti espressi e sulla grandezza in byte della pagina.
- Cancellazioni ordinarie
Nel grafico qui a destra, generato con le pagine di votazione di un centinaio di giorni, ogni "+" rappresenta una proposta di cancellazione in un piano cartesiano byte/voti.
La retta verde è la retta di regressione (una specie di media) e ha questa equazione: f(x) = ax + b con:
- a = 0.00169687 +/- 0.0001116 (6.576%)
- b = 10.3936 +/- 0.6538 (6.291%)
La retta blu è la retta di regressione pesata su un'ipotesi di errore poisoniano, mentre la retta violetta è parallela alla retta di regressione ma traslata. La retta di regressione pesata ha equazione f'(x) = cx + d, mentre la traslata f''(x) = cx − d con:
- c = 0.00258347 +/- 7.703e-05 (2.982%)
- d = 1.47668 +/- 0.225 (15.24%)
Per calcolare la "temperatura" della discussione viene usata questa formula:
.
In cui:
- B è il numero di bytes della pagina
- nV è il numero di voti
Poiché T deve essere compreso tra 0 e 100 viene bloccato tra questi due estremi.
La traslazione verso il basso della funzione f'' rispetto alla retta di regressione è assolutamente arbitraria e serve a "penalizzare" le votazioni appena iniziate, con pochi voti, smorzandone le oscillazioni.
- Cancellazioni semplificate
Per le cancellazioni semplificate la temperatura T è definita più semplicemente come:
.
Alcuni utenti sono dell'idea che quest'ultima formula sia troppo lineare e non renda bene la reale temperatura di discussione: in effetti una scala logaritmica sarebbe meglio ma non considero l'implementazione una priorità.
[modifica] Log e codice
Per i log delle operazioni e il codice del bot vedere la mia pagina sul toolserver.
[modifica] Come conta i voti (tecnico!)
Nota: questo paragrafo non è aggiornato; a causa dell'introduzione di alcuni template ora il meccanismo è leggermente diverso. Il codice dovrebbe essere abbastazna commentato (in inglese) e ordinato da essere comprensibile, ma richiede un minimo di conoscenze tecniche.
Per installare e utilizzare il bot copiate il file python nella vostra directory di pywikipedia ed eseguitelo:
- python cancellazioni.py
- I nomi delle pagine dei log quotidiani vengono generati con il programma date:
- date -d "$iD days ago" +"%G_%B_%-d", $iD va da 6 a 0.
- Dai log quotidiani vengono estratti i nomi delle sottopagine usando un'espressione regolare:
- ^{{[Ww]ikipedia:[Pp]agine[ _]da[ _]cancellare/(.*)}}[^{]*
- Dalla sottopagina vengono estratti i voti, lo so che sono un casino, ma molte persone amano votare in maniere fantasiose e colorite:
- Un voto "sì" viene intercettato con questa regexp: ^\**[' ]*(\+1|\{\{\+1\}\}|\{\{[[Pp]iù\}\}|<([Ff+ont|[Ss]pan|[Dd]iv)[^>]+>\+1</[^>]+>|\[\[Image:Symbol support vote) (la regexp è per egrep, quindi gli escape "\" sulle parentesi tonde e graffe sono diversi rispetto a sed)
- Un voto "no": ^\**[' ]*(-1|\{\{-1\}\}|\{\{[Mm]eno\}\}|<([Ff]ont|[Ss]pan|[Dd]iv)[^>]+>-1</[^>]+>|\[\[Image:Symbol oppose vote)
- Un voto "astenuto": ^\**[' ]*(=*0|\{\{[Zz]ero\}\}|\{\{=*0\}\}|<([Ff]ont|[Ss]pan|[Dd]iv)[^>]+>0</[^>]+>|\{\{[Bb]ho\}\}|<[^>]+>bho.</[^>]+>|\{\{[Uu]guale\}\}|\[\[Image:Symbol neutral vote)
- Una votazione viene considerata interrotta se il titolo sta nel template appare il parametro annullata.
- Il link della pagina da cancellare viene estratto dal primo parametro del template, poi viene manipolato in varie maniere, ad esempio per inserire i ":" davanti alla categoria e togliere i "/2" per le votazioni ripetute.