Discussioni utente:Qualc1: differenze tra le versioni

Contenuti della pagina non supportati in altre lingue.
Da Wikisource.
Contenuto cancellato Contenuto aggiunto
Qualc1 (discussione | contributi)
Riga 228: Riga 228:
Spero di aver dato un'idea di quello che un bot debba riconoscere per effettuare una sostituzione di massa. Che dici?
Spero di aver dato un'idea di quello che un bot debba riconoscere per effettuare una sostituzione di massa. Che dici?
- '''[[Utente:OrbiliusMagister|<span style="color:orange;">&epsilon;</span><span style="color:blue;">&Delta;</span>]][[Discussioni utente:OrbiliusMagister|<span style="color:brown;">&omega;</span>]]''' 19:24, 28 gen 2009 (CET)
- '''[[Utente:OrbiliusMagister|<span style="color:orange;">&epsilon;</span><span style="color:blue;">&Delta;</span>]][[Discussioni utente:OrbiliusMagister|<span style="color:brown;">&omega;</span>]]''' 19:24, 28 gen 2009 (CET)

:Provo ad "approfondire" e a mettere in pratica il suggerimento... La richiesta capita al momento giusto per poter sperimentare il database xml citato un paio di messaggi fa :) --[[User:Qualc1|qualc1]] ([[User talk:Qualc1|disc.]]) 18:03, 29 gen 2009 (CET)

Versione delle 18:03, 29 gen 2009

Archivi di questa pagina discussione


Lasciate qui sotto i vostri messaggi

Bot

Grande Qualc1, ottimo lavoro. Che tu ti ricordi, abbiamo lasciato indietro qualche pagina di discussione (Il Cortigiano lhai fatto tu ieri)? Non so se quella ricerca sul dump la possa fare solo tu, magari se mi insegni divento indipendente ;-) Gran lavoro davvero! --Aubrey McFato 10:28, 30 ago 2008 (CEST)[rispondi]

Cervello informatico cercasi

Se hai tempo, qui si parla di te: http://it.wikisource.org/wiki/Discussioni_utente:Alex_brollo#Sfrucugliamenti. Aubrey McFato 09:01, 1 set 2008 (CEST)[rispondi]

Altra listona per il progetto template.

caro Qualc1,

nella mia ignoranza provo a chiederti qualcosa di grosso per il progetto template. Uno degli obiettivi da raggiungere è la scrittura di tutte le documentazioni dei template. nulla impedisce di usare Speciale:Allpages manualmente, ma prima volevo sapere se è possibile generare una lista di template prive della sottopagina {{{nometemplate}}}/doc, questa lidsta permetterebbe di organizzare il lavoro più razionalmente. Intanto grazie per l'attenzione e come al solito se non ti comodasse o non ti fosse possibile rispondermi non me la prendo, in quanto sono io a disturbare te. - εΔω 15:09, 23 ott 2008 (CEST)[rispondi]

Il risultato della ricerca dei template che non hanno la sottopagina doc è qui.
Ho tolto dalla lista anche i template che iniziavano con "Template:Utente"; tolgo anche quelli il cui titolo si trova anche nel namespace "Autore"? --qualc1 (disc.) 16:04, 16 dic 2008 (CET)[rispondi]
Dato che i template con il nome degli autori sono creati e gestiti in automatico dai bot non vedo la necessità di dotarli di documentazione maggiore di quella che già hanno, dunque direi di sì. - εΔω 16:14, 16 dic 2008 (CET)[rispondi]

Scriptino per bot

Caro Qualc1,

ho avuto una intuizione interessante che però non risco a concretizzare: prova a vedere la pagina Indice:Poesie inedite di Silvio Pellico. Volevo richiedere l'OCR delle trecento e passa pagine ancora da creare. È una richiesta che può esser fatta solo in fase di creazione, chiamata dal pulsante in basso a sinistra della finestra di editing. Premendo quel pulsante un javascript

  • Inserisce il testo {{OCR}} della pagina,
  • gli assegna un SAL 25%, e
  • nel campo oggetto scrive [[{{PAGENAME}}#OCR|OCR]]

Uno script potrebbe effettuare tale richiesta per tutti i link rossi presenti nelle pagine indice di quel testo (o di tutti i testi che ci interessino, a me in questo momento premeva buttare avanti Pellico), in modo da non intasare le Ultime Modifiche con un lavoro fatto a mano, e sollvando gli utenti "umani" da lavori ripetitivi tipicamente "botteschi". Alla fin fine dovrebbe esseruna variante dell'infotesto.py, ma quello che per me e Aubrey è piuttosto esoterico, contutta probabilità per te è questione di due minuti.

Se dalla sfacchinata della tua tesi potessi ricavare questi due minuti saresti veramente benemerito! - 79.10.248.5 16:27, 2 dic 2008 (CET)[rispondi]

Ok, domani lo faccio.(così inizio a scaldare il bot... visto tesi è praticamente finita...)
--qualc1 (disc.) 16:40, 3 dic 2008 (CET)[rispondi]
Caro Qualc1, come apprendista stregone sto lavorando con Alebot e ho scoperto che creando una pagina Pagina:, scrivendo solo ed esclusivamente {{OCR}}, il software parte bene...richiama l'OCR, crea i codici header e footer, assegna il SAL 25%; mentre invece se si scrive lo stesso template su una pagina già creata non succede un bel niente. Il problema è che ho creato le pagine dalla 100 alla 300 di Indice:Poesie inedite di Silvio Pellico con un altro contenuto, poi mi sono pentito e ho inserito il template {{OCR}}... niente da fare. Come si rimedia? Occorre cancellare/far cancellare le pagine e crearle di nuovo con il solo template? Grazie!
PS: scusami se mi sono sovrapposto a una cosa che tu avresti fatto a regola d'arte... probabilmente Edo ha sottovalutato la mia velocità nel pasticciare con Python ;-) --Alex brollo (disc.) 22:29, 8 dic 2008 (CET)[rispondi]
Per la creazione del header e del footer dovrebbe bastare che modifichi il testo da inserire da: {{OCR}} a:


<noinclude>{{PageQuality|1|Un1c0s_bot}}<div class="pagetext">
</noinclude>


{{OCR}}
<noinclude>
<references/></div></noinclude>


Per "richiama l'OCR" intendi che quando crei la pagina col bot, ti inserisce già il testo "generato" dall'immagine? Se sì, non so come si possa richiamare questa funzionalità...
Ho visto che ThomasV sa farlo ([1]), ma cercando velocemente non ho trovato come: puoi informati tu e poi farmi sapere...
Ps. Non preoccuparti per l' "intromissione" :D
--qualc1 (disc.) 10:46, 9 dic 2008 (CET)[rispondi]
Grazie. Ho interpellato lo stesso ThomasV sul suo account di en.source; appena mi risponde vi so dire. Poi magari tiriamo le fila della questione in Progetto:Scansioni, dove vorrei anche scambiare qualche esperienza su Tesseract. --Alex brollo (disc.) 16:04, 9 dic 2008 (CET)[rispondi]

Pagine 1.0

Ciao Qualc1, volevo chiederti se c'era modo di sapere dal dump quali pagine mancassero del SAL 2.0: in molte opere c'è segnalata solo la pagina principale, ma non le sottopagine. Se potessi dirmelo mi faresti un favore, dato che ho rispolverato il bottolo. Sappimi dire, a presto. --Aubrey McFato 20:58, 20 dic 2008 (CET)[rispondi]

Nei prossimi giorni cerco di generarti la lista... ciao. --qualc1 (disc.) 13:48, 21 dic 2008 (CET)[rispondi]
Ho creato la lista: eccola.
Forse sono riuscito a trovare un modo abbastanza semplice e comodo per estrarre informazioni dal dump xml (tramite il database Sedna e il progetto WikiXMLDB). Faccio ancora un po' di prove e poi ti dico... Comunque quella lista l'ho generata tramite questa query:
declare default element namespace "http://www.mediawiki.org/xml/export-0.3/";

let $ns := ('Media', 'Speciale', 'Discussione', 'Utente', 'Discussioni utente', 'Wikisource', 'Discussioni Wikisource', 'File', 'Discussioni file', 'MediaWiki', 'Discussioni MediaWiki', 'Template', 'Discussioni template', 'Aiuto', 'Discussioni aiuto', 'Categoria', 'Discussioni categoria', 'Autore', 'Discussioni autore', 'Progetto', 'Discussioni progetto', 'Portale', 'Discussioni portale', 'Pagina', 'Discussioni pagina', 'Indice', 'Discussioni indice')

for $page in doc("wiki")/mediawiki/page
    where not ( $page/revision/text/template[@head='Qualità'])
        and not ($page/revision/text/redirect)
        and empty(index-of($ns, substring-before($page/title, ':')))
            return $page/title
--qualc1 (disc.) 23:03, 18 gen 2009 (CET)[rispondi]

Tre scriptini python

Caro Qualc1, ti propogo tre scriptini che ho scritto e che, nella loro semplicità, uso e riuso continuamente come strumento fai-da-te per parsare html e xml e mille altre cose. Non dubito che script molto più sofisticati siano incorporati in ogni modulo che si occupa di queste cose, e che analogo risultato si possa ottenere molto più elegantemente con le RE, ma come sai ogni scarafone ecc. e non si sa mai che tu li trovi utili. Con questi due scriptini ho scritto in un tempo veramente breve un programmino python che estrae dai file ...djvu.xml di Internet Archive il testo pronto a essere post.elaborato e ficcato nelle pagine Pagina (v. Indice:Lettere autografe Colombo.djvu. da te vorrei sapere se sono totalmente inutili, e se sì, con quale funzione python, altrettanto facile da capire, posso rimpiazzarli.

## General string management routines for RE ignorants :-(

# finds the first substring into a string beginning with idi and ending with idf; returns it
# with (dc=1) or without (default dc=0) idi and idf; used for xml managing too
            
def find_stringa(stringa,idi,idf,dc=0):
    idip=stringa.find(idi)
    idfp=stringa.find(idf,idip)+len(idf)
    if idip>-1 and idfp>0:
        if dc==0:
            vvalore=stringa[idip+len(idi):idfp-len(idf)]
        else:
            vvalore=stringa[idip:idfp]
    else:
        vvalore=""
    return vvalore

# returns a tuple of the first substring (beginning with idi and ending with idf)
# of a string and of original string with the substring erased (defalut) or replaced with a new string.
def el_st(stringa,idi,idf,new=""):
    idip=stringa.find(idi)
    idfp=stringa.find(idf,idip)+len(idf)
    if idip>-1 and idfp>0:
        vvalore=stringa[idip:idfp]
        valore=stringa.replace(vvalore,new,1)
    else:
        vvalore=""
        valore=stringa
    return valore, vvalore

# returns a list of all substrings (beginning with idi and ending with idf)
# of a string; ; used for xml data managing too. The original string is unchanged. 

def produci_lista(testo,idi,idf,dc=0):
    t=testo[:]
    lista=[]
    while not find_stringa(t,idi,idf)=="":
        el=find_stringa(t,idi,idf,1)
        t=t.replace(el,"")
        #print el
        if dc==0:
            el=find_stringa(el,idi,idf,0)
        lista.append(el)
    return lista

--Alex brollo (disc.) 23:45, 12 gen 2009 (CET)[rispondi]

Di sicuro non sono inutili :)
Non ci sono funzioni standard del python che si possono usare per sostituire direttamente queste. Come hai detto anche tu sarebbe possibile scriverle anche usando le espressioni regolari, ma anche in questo caso sarebbero complicate e richederebbero comunque più di una espressione regolare...
Un altro modo per leggere le informazioni da file xml è usare delle librerie apposite per la gestione dell'xml. Io avevo provato ad usare lxml (sito ufficiale, il loro tutorial), ma avevo problemi a caricare file delle dimensioni del dump di wikisource.
Proprio questa mattina ho scoperto questo progetto: WikiXMLDB.
Utilizzando Sedna, un database basato su xml, dovrebbe permette di eseguire velocemente operazioni di ricerca sul dump. Sul loro sito mostrano esempi che utilizzano en.wikipedia, provo a vedere se riesco a utilizzarlo per wikisource ed ad utilizzarlo tramite python. Poi ti faccio sapere...
--qualc1 (disc.) 12:01, 18 gen 2009 (CET)[rispondi]

Indicizzazione python dei dump xml di wiki

caro Qualc1, non si sa mai che trovi qualcosa di buono in questo breve script python, che legge sequenzialmente il dump xml di una wiki e indicizza le singole pagine nel fle, producendo una lista elementi, uno per pagna, che sono a loro volta liste di tre elementi:

  1. l'offset della pagina, da usare con il metodo seek() dei file;
  2. la lunghezza della pagina in byte, da usare con il parametro opzionale nel metodo read() dei file;
  3. il titolo della pagina.

Con questi elementi, il contenuto di qualsiasi pagina scritto nel file xml viene recuperato istantaneamente; immaginando che ci sia in memoria la lista indice l e che in f sia aperto in lettura il file itwikisource.xml, i comando che restituiscono la pagina completa i sono semplicemente:

f.seek(l[i][0])
pagina=f.read(l[i][1])

Ecco il listato:

def index (filei="itwikisource.xml"):
    fi=open(filei)
    pos=0
    l=[]
    for i in fi:
        if "<page>" in i:
            posi=pos
        if "</page>" in i:
            lenf=pos-posi+len(i)
            l.append([posi,lenf])
        pos=pos+len(i)
    fi.close()
    print "eseguito parsing"
    for i in range(len(l)):
        f.seek(l[i][0])
        pagina=f.read(l[i][1])
        tipo=find_stringa(pagina,"<title>","</title>")
        l[i].append(tipo)
    print "eseguito caricamento titoli pagina"
    return l

find_stringa è una routine per RE-ignorants che mi sembra ti ho già passato, altrimenti la trovi sotto Utente:Alebot/Scripts. Non lo pubblico altrove, per ora, perchè è impresentabile per assenza di doc e perchè non saprei se può interessare a qualcuno! Ciao! --Alex brollo (disc.) 11:20, 15 gen 2009 (CET)[rispondi]

Lo trovo molto buono: bella idea!
Se non ti dispiace lo espanderei un po' per farlo diventare più facile da riutilizzare; cioè creerei una classe Indice utilizzabile in questo modo:
ind = Indice("itwikisource.xml") # questo richiamerebbe la tua funzione
testoDiAltraPagina = ind.textByNumber(10) # come il tuo esempio lseek
testoDiUnaPagina = ind.textByTitle("Asolani/Libro primo/XII")
for page in ind:
    print "titolo: ", page.title
    print "testo: ", page.text
--qualc1 (disc.) 13:53, 18 gen 2009 (CET)[rispondi]
Grazie! So cosa sono le classi, ma aimè: il mio cervello non pensa per classi... pensa per funzioni. Oltre che essere RE-ignorant, sono pure Class-ignorant. Ed è stato un passo terribilmente difficile, passare da pensare per procedure a pensare per funzioni. :-( Effetto dell'età.
Rifletterò sul tuo codice (se mi ci metto dovrei capirlo), al primo sguardo non lo colgo. Nel frattempo ho scoperto buzhug, un semplice database in python nativo... adesso devo padroneggiarlo, e poi, per classi o per funzioni, lo metto all'opera e gli carico tutti i dati dei template e tutti i dati degli infotesto e tutti i dati delle intestazioni, e poi vediamo cosa succede. :-) --Alex brollo (disc.) 17:45, 18 gen 2009 (CET)[rispondi]

Bot interattivo in funzione

Caro Qualc1 (per inciso: il tuo nick mi ricorda "Kual Kuno Pokanzi", un utente fantasma di forum a cui attribuivamo le citazioni di eventuali sciocchezze per non quotarle con il vero nick per delicatezza: Kual Kuno Pokanzi ha detto...."), gira e funziona Alebot in forma interattiva, ossia: ogni 10 minuti (se il mio PC è acceso come adesso, a casa) legge la sua pagina di discussione Discussioni utente:Alebot, legge eventuali richieste, le esegue, e eseguite le spunta. Al momento l'unica richiesta che esegue è quella di aggiornare il databox autori (ossia, di creare/aggiornare la pagina [[Template:NomeAutore/Dati]]), "capendo" una richiesta del tipo:

* Richiesta: verifica databox autore: [[Autore:NomeAutore]] --~~~~

a cui aggiunge un Fatto! appena finito.

Ovvio che man mano che aggiungerò nuove procedure attivabili, aggiungerò altre sintassi di richiesta; non ci sono limiti alle cose fattibili, compresa l'interrogazione di un database python buzhug che ho appena integrato nel software del bot. Consideralo un test, un "Hello world"; se la cosa piacerà potrà essere resa più "professionale" ma ci vuole qualcuno come te che non sia un apprendista stregone come me... Ciao! --Alex brollo (disc.) 10:50, 22 gen 2009 (CET)[rispondi]

Bene, bene... ci farà sicuramente risparmiare tempo. Visto che si potrebbe usare anche per altri bot, hai usato qualche script "apposito" tra quelli di pywikipedia o hai fatto tutto direttamente tu? --qualc1 (disc.) 11:48, 28 gen 2009 (CET)[rispondi]

Cosa è wikisource ?

potrei sapere quale è il compito di wikisouce ? io per il momento collaboravo solo alla wikipedia e wikizionario !--217.201.161.88 21:51, 25 gen 2009 (CET)--Puxanto (disc.) 21:54, 25 gen 2009 (CET)[rispondi]

Le informazioni principali su cos'è wikisource e quali sono gli obiettivi li puoi trovare nelle pagine: Wikisource:Wikisource e Wikisource:Cos'è_Wikisource?.
Per qualsiasi precisazione puoi chiede a me o ad altri utenti (o amministratori) che vedi attivi. --qualc1 (disc.) 10:04, 28 gen 2009 (CET)[rispondi]

Prova tecnica di sostituzione massiccia

Caro Qualc1,

provo a metterti una pulce nella ventola :)

Il nome "Archimede" è invariabile, non ha cognomi o strane appendici e finalmente è divenuto un autore presente anche qui Perché non cercare di circondare tutte le ricorrenze di tale nome con il template {{AutoreCitato}}?

L'esercizio di analisi che porti ala soluzione di questo problemino potrebbe rendersi assai utile anche per altri autori dal nome semplice. Per quel che ne ho capito abbiamo le seguenti tipologie

  • Il semplice nome (seguito da spazio o da altri separatori). Il caso ideale --> aggiunta del codice del template.
  • Il nome circondato da doppie quadre (cioè [[Autore:Archimede|Archimede]])--> semplice sostituzione di caratteri
  • Il nome già circondato dal template AutoreCitato (cioè {{AutoreCitato|Archimede}} o {{AutoreCitato|Archimede|Archimede}})--> vanno ignorati
  • Il nome all'interno di altri template (intestazioni o capitoli)--> vanno ignorati

Spero di aver dato un'idea di quello che un bot debba riconoscere per effettuare una sostituzione di massa. Che dici? - εΔω 19:24, 28 gen 2009 (CET)[rispondi]

Provo ad "approfondire" e a mettere in pratica il suggerimento... La richiesta capita al momento giusto per poter sperimentare il database xml citato un paio di messaggi fa :) --qualc1 (disc.) 18:03, 29 gen 2009 (CET)[rispondi]