Newsgroup: it.comp.software.newsreader
Titolo: filtri usenet x agent

Salve a tutti,
mi stavo scervellando per fare un filtro x agent,quando mi sono
"illuminato"....
Perche' ,se ovviamente interessa;non mettiamo su' un bello scambietto
di filtri USEFUL per i vari newsgroup,ovviamente compatibili con
Agent,e possibilmente per gruppi binari,potrebbe venire fuori una
cosina interessante.
Sono bene accetti links,consigli e quant'altro......
Resto in attesa di un cenno!!
Byez

 cosina interessante.
Il fatto č che i filtri Usenet di tipo watch sono in genere strettamente
personali, mentre quelli di tipo kill sull'autore, che sono forse in
qualche caso condivisibili, finirebbero per somigliare ad una gogna
pubblica. I filtri sullo spam Usenet sarebbero senz'altro condivisibili,
ma non credo siano molto diffusi: chi č che usa newsserver in cui lo
spam non č filtrato a monte?
In ogni caso, qui s'č sempre parlato di filtri, se uno ha problemi a
compilarne, o ritiene di averne escogitato uno tecnicamente
interessante, č assai benvenuto. 
Io, per esempio, non trovo piů la regexp mi pare dello Smilzo, per
filtrare gli OT, che era un capolavoro. 
-- 
Luca - e-mail: p.stevens at 
libero.it

filtrare gli OT, che era un capolavoro. 
Scusa il ritardo. 
Ho avuto un po' di problemi a ritrovarla, ma eccola:
 subject:%{^(\[?(OT|ot)[^a-zA-Z]+)|([A-Z]*([^a-zA-Z0-9]?[A-Z]*)*OT[^a-zA-Z]+)}
come da Message-ID: <5ianba...@AP.com>
-- 
Antonio | Un buon punto di partenza per Debian?
        | 
http://www.debian.org/doc/manuals/quick-reference/quick-reference.it.html
Tip  of | -------------------------------------------------------------------------
the day | Tutto (ma proprio *tutto*) su Debian, e non solo?
0025    | 
http://www.debian.org/doc/manuals/debian-reference/reference.it.html

 subject:%{^(\[?(OT|ot)[^a-zA-Z]+)|([A-Z]*([^a-zA-Z0-9]?[A-Z]*)*OT[^a-zA-Z]+)}
Mi spieghi brevemente a che serve?
-- 
Ryoma
Il difficile non è essere intelligenti, ma sembrarlo
ICQ UIN #41121680

 Mi spieghi brevemente a che serve?
A beccare, oltre a [OT], anche roba tipo OT [un po' OT] [quasiOT] etc.
(La meccanica precisa ovviamente è un po' più complessa e lunghetta.)
-- 
Farewell!  |~|  ICQ# 16553733 ~ 40tude Dialog: 
http://snurl.com/dialog
G          |~|  PbEM basato su FATE ~ scrivi a hitman<at>
despammed.com
Now on air: Dennis Edwards - Don't look any further

 Mi spieghi brevemente a che serve?
Traduco questa ammirevole espressione per proseguire l'opera di Antonio.
Di seguito i miei dubbi e commenti. 
010 %
    Case sensitive
020 {
    Agent regular expression
030 ^
    Il subject comincia con:
040     (
050        \[?
 
           Zero o una parentesi quadra.
060        (
070           OT|ot
 
              seguita da una qualsiasi delle stringhe OT, ot
 
080        )
090        [^a-zA-Z]+
           seguita da una o più cifre o da uno o più caratteri di 
           punteggiatura 
100     )
110 |
    Oppure il subject contiene:
120     (
 
130         [A-Z]*
            zero o più lettere maiuscole
140         (
150             [^a-zA-Z0-9]?
                seguita da zero o un carattere di punteggiatura
160             [A-Z]*
 
                seguita da zero o più lettere maiuscole.
 
170         )
180         *
 
190         Questo asterisco mi sembra un errore, Agent lo rifiuta.
200      OT
         seguito dalla stringa OT
210      [^a-zA-Z]+
         seguita da una o più cifre, o da uno o più caratteri di 
         punteggiatura
220 )
230 }
Spero di non aver fatto errori, mi capita spesso con le regexp.
Una cosa che noto subito è che il fatto di rendere l'espressione case
sensitive complica di molto le cose, e mi pare che così com'è scritta,
l'espressione perda tutti i tag Ot. Questi bisognerebbe aggiungerli,
penso, specificando sempre (OT|ot|Ot) alla riga 70 e 200. Per vedere se
questo comporta conseguenze per i falsi positivi bisogna capire bene
tutta l'espressione.
In particolare la seconda parte dell'espressione (da 110 in avanti) mi
pare difettosa: se non sbaglio perde i subject che finiscono per OT non
seguito da punteggiatura ("stupidaggini - molto OT"), mentre dà come
falsi positivi subject come "Non comprate i BOT!". Inoltre le righe da
130 a 160 mi sembrano inutili, perché non vedo quale limitazione
impongano.
===
Per offrire un'alternativa tento un diverso approccio. Mi baso
sull'isolamento del tag ot (case insensitive), e distinguo i tre casi:
tag all'inizio del subject, all'interno e alla fine. Per delimitare il
tag prendo in considerazione tutti i caratteri non alfanumerici (spazio
incluso): 
subject:{([^a-z0-9]+ot[^a-z0-9]+)|(^[^a-z0-9]*ot[^a-z0-9]+)|([^a-z0-9]+ot[^a-z0-9]*$)}
Questa espressione dà risultato positivo nei seguenti casi:
- Stringa ot all'inizio del subject, preceduta da zero o più caratteri
non alfanumerici e seguita da almeno un carattere non alfanumerico.
- Stringa ot all'interno del subject, preceduta e seguita da almeno un
carattere non alfanumerico.
- Stringa ot alla fine del subject, preceduta da almeno un carattere non
alfanumerico e seguita da zero o più caratteri non alfanumerici.
Antonio, quest'espressione, fatta girare sul mio database di iacine ha
matchato (come si dice in italiano?) 7651 messaggi, mi sembra senza dare
falsi positivi, contro i 7125 della tua. 
Difetti? Miglioramenti? Fategli le pulci, pliz.
Sarebbe da vedere se si possano semplificare ulteriormente le cose,
allargando il controllo ai caratteri non alfabetici, per delimitare il
tag, ossia prendendo in considerazione punteggiatura, spazi ma anche
cifre (ebbene si: c'è pure qualcuno che numera gli OT, oppure che molla
il tasto shift e poi non rilegge quel che ha scritto, così che invece di
"(OT)" scrive "8OT9"). Per questo basterebbe la semplice modifica:
  subject:{([^a-z]+ot[^a-z]+)|(^[^a-z]*ot[^a-z]+)|([^a-z]+ot[^a-z]*$)}
Sono da valutare l'aumentata velocità ed efficacia dell'espressione così
semplificata, così come l'eventuale maggior rischio di falsi positivi
(ma non me ne viene in mpente nessuno).
Commenti benvenuti.


 lunghetta.) 
A cercare il pelo nell'uovo, a me matcha:
    Subject: File strano: CAMELOT.EXE
Ciao.
-- 
 /   _ _ | Xnews in italiano e Guida ai Menu
( (/( (/ | 
http://digilander.libero.it/xnews

     Subject: File strano: CAMELOT.EXE
Non sono sicurissimo che sia una PCRE, a essere sincero (mai usato
Agent... anzi, mai usata nemmeno quella regex in altri programmi :P)
-- 
Farewell!  |~|  ICQ# 16553733 ~ 40tude Dialog: 
http://snurl.com/dialog
G          |~|  PbEM basato su FATE ~ scrivi a hitman<at>
despammed.com
Now on air: R.D.S.

 Agent... anzi, mai usata nemmeno quella regex in altri programmi :P)
Oops, chiedo scusa e batto in ritirata... :o(


 Agent... 
Si, Agent ha un suo adattamento delle regexp.


 Commenti benvenuti.
Premetto che non ho nessuna intenzione di provocarti o cercare un flame
(un po' mi dovresti conoscere), tanto lo so che con te non la spunto,
ma ci provo lo stesso... :o)
Premetto anche che non sono particolarmente contrario al TAG né difendo
il suo uso, cerco di seguire il buon senso...
Personalmente trovo *inutile* mettere un filtro del genere nel proprio
client (ovviamente cosa utile invece in Hamster, che scarica tutto se
non lo si "educa").
# caso A: tipo curioso, frequentatore solito del NG.
Per il fatto di essere curioso legge tutto, commenta molto e quindi
anche i TAG [OT] gli interessano (anche solo per il fatto di inca**arsi
e dirgli di non usare il TAG).
# caso B: tipo professional, frequentatore solito del NG ma discontinuo.
Per il poco tempo che ha a disposizione e per il gran numero di msg che
si deve leggere, probabilmente avrà dei filtri *rovesciati*, ovvero
[ammazza tutto quello che non contiene la tal parola]. Quindi ammazza
automaticamente anche gli [OT].
# caso C: tipo di passaggio che chiede aiuto.
Non gliene può fregare di meno di leggere, lui posta e aspetta.
# caso D: tipo di passaggio che lurka per capire.
Se non ha il filtro *non sa*, quindi potrebbe usare il TAG; appena vede
uno che lo usa e viene ripreso capisce, e ovunque va sa di non doverlo
usare e propaga "la parola" (se è convinto).
Se ha il filtro è uno che sa e che se ne "sbatte"; cmq non si fa
un'idea chiara dei personaggi del NG.
# caso E: tipo che dà la caccia ai TAG [OT] o che è interessato
          all'argomento "uso e abuso del TAG [OT]".
Si spiega da sè (tieni presente che non leggerebbe neanche questo post).
# caso F: tipo che si inca**a moltissimo se vede un TAG [OT].
A questo farebbe sicuramente bene alla salute, anche se "non vedendo"
la propagazione di questa "moda" potrebbe ritrovarsi improvvisamente
in un mondo "ostile" senza esserne preparato (come un ammalato a cui
non si dice nulla della sua salute per non spaventarlo).
Cmq qui riconosco l'utilità del filtro.
# caso G: tipo che non gliene frega un ca**o.
Si spiega da sè.
Ti prego, prendi la cosa con la giusta ironia... -__^
Un'ultima cosa: nel testare la regex ho notato che alcuni post
interessanti sono scaturiti da TAG [OT], anche modificandone il
subject [tipo: La tal cosa (was: l'atra cosa OT)]. Questi si
perderebbero.
Ciao.
Ok, mi F/up da solo...


"(OT)" scrive "8OT9"). Per questo basterebbe la semplice modifica:
Io aggiungerei il solo caso 8OT9 in questo caso, però... boh. :-)
Ciao.
P.S. Dai, continuiamo 'st'analisi che mi sto a diverti' come un matto!
:-)
-- 
Antonio | Linux Quick and Easy?   
http://www.mrshark.it/qechowto/
Tip  of | Linux approfondito?     
http://a2.swlibero.org/
the day |
0024    |

   		[NDR: O Gandalf! Che mi combini???? ^___^ ]
Cerco di portare qui discussioni OT su altri gruppi ;) [in cui mi
hanno nominato consulente ufficiale all'uso di Dialog, pare ^___^]


 Commenti benvenuti.
Io per cercare i tag con newswatcher uso: [[({](tag1|tag2|tag3)[])}]
li trova ovunque e con qualunque tipo di parentesi
Con (^(Re: .?)?.?(tag1|tag2|tag3)[^a-z]+)|([[({](tag1|tag2|tag3)[])}])
becchi anche quelle senza parentesi se all'inizio del subject ma puo'
dare falsi positivi.
IMHO filtrare gli [OT] non e' una buona idea, ma non credo sia quello
che ti vuoi sentir dire.

 che ti vuoi sentir dire.
Visto che sto barattolo di server non onora il cancel rettifico a mano e 
chiedo scusa per il post partito a meta'. Il punto e' che IMHO per 
quanto ti sforzi a prenderli tutti non ci riesci, soprattutto non prendi 
gli OT ripetto al subject, che sono poi i peggiori. La cosa assurda e' 
che gli unici filtri affidabili presuppongono un certo ordine da parte 
di chi posta OT, ma gli utonti piu' molesti non sono affatto ordinati, e 
alla fine ti esponi solo al rischio inutile di falsi positivi.
-- 
Fact of life #15: Heads bleed, walls don't.

 perderebbero.
Per questo bisognerebbe incastonare un !{\(was\:.*} nelle condizioni che
precedono le stringhe ot dell'espressione. Non mi pare per niente facile
e non mi cimento.


 anche il subject di questo messaggio, 
Eh, lo so, ma quello è inevitabile: il tag è usato spesso così, "nudo".
Infatti stavo per scrivere offtopic per esteso, nel subject, poi ci ho
ripensato :)





 pare per niente facile e non mi cimento.
Esatto, un "was:" o un "era:". Non si riesce a fare con un "AND" ?
(in Xnews basta mettere le condizioni una sotto l'altra e usare solo un 
simbolo : dopo lo Score).
Ciao.


Alan Ford wrote:

Eh, però quale condizione? Mi pare che non puoi semplicemente dire 
"<tag> AND NOT (was ... <tag>)" 
perché a parte la ridondanza, perdi i subject "OT ... (was: ... OT)". 
A spanne, mi pare ci vorrebbero un paio di IF nidificati, come
condizione logica.
Bisogna quindi che la condizione "NOT was" sia inclusa nelle parti di
espressione che servono per delimitare il tag. L'espressione per
cogliere was, in Agent, sarebbe 
(!subject:{(\(was\:.*)}) 
ma non riesco ad inserirla all'interno dell'espressione totale. Non so
in Xnews, ma In Agent è facile sbagliare la posizione o l'estensione
dell'operatore !, e in tutti i modi in cui ho provato, o Agent rifiuta
l'espressione, oppure non funziona.
Riporto qui sotto la totale, per chi volesse cimentarsi conoscendo le
regexp di Agent meglio di me:
subject:({([^a-z]+ot[^a-z]+)|(^[^a-z]*ot[^a-z]+)|([^a-z]+ot[^a-z]*$)}|%{[a-z]+OT})
-- 


 (!subject:{(\(was\:.*)}) 
Ti ho seguito fino ad un certo punto, poi ho fuso! :O)
Siccome le regex nello scoring in Xnews funzionano su più righe, mi è 
più facile tradurre la cosa, ma non saprei proprio aiutarti per Agent
:o(
Riporto le righe se possono interessare a qualcuno (salvo errori od 
omissioni):
    Score: =-9999
    Subject: ([^a-z]+ot[^a-z]+)|(^[^a-z]*ot[^a-z]+)|([^a-z]+ot[^a-z]*$)
    ~Subject= [a-z]+OT
    ~Subject: .*(\(was|\(era)\:.*\bot\b


 più facile tradurre la cosa, ma non saprei proprio aiutarti per Agent
Si può semplicemente sfruttare il sistema di scoring in generale:
- si tolgono tot punti ai subject che corrispondono alla regex delle
cose non volute;
- si aggiungono tot punti ai subject che corrispondono alla regex per
riconoscere i was/era;
- alla fine si filtra solo se lo score è negativo...
-- 
Farewell!   ~~~   ICQ#16553733  ~  40tude Dialog 
http://snurl.com/dialog
G           ~~~   PbEM basato su FATE ~ scrivi a hitman<at>
despammed.com
Now on air: White Snake - Is this love

     ~Subject: .*(\(was|\(era)\:.*\bot\b
STOP! ALT ESC Annulla Quit Ctrl+Alt+Canc Ctrl+Alt+Canc Reset PowerDown 
OFF
Non va bene (e dire che l'avevo testata su parecchi msg), devo dividere 
le regole case sensitive da quelle no e poi salva anche i msg:
Subject: qualcosa ot (was: altra cosa ot)
Stasera mi ricimento...


 Subject: qualcosa ot (was: altra cosa ot)
E' quel che dicevo io :-) Non so se sbaglio, ma mi pare a occhio che
anche il suggerimento di Gandalf, utilizzare lo score, porti allo stesso
risultato.
Dovrebbe essere invece (non badate alla sintassi):
10 IF non c'č "was: ... <tag>" GOTO 30
20 IF non c'č <tag> go to 40
30 IF c'č <tag> filtra
40 END
Dove il <tag> č delimitato in base alle solite condizioni. 
Mi sembra quindi concettualmente piů semplice riconoscere ed escludere
"(was: " in fase di delimitazione del tag, ma oramai ho fuso io.


 risultato.
Giusto... però con regex fatte ad hoc si potrebbe distinguere tra il tag
OT prima del was e un eventuale tag OT dopo, togliendo quindi punti ad
entrambi, in modo da annullare l'effetto dei punti aggiunti per il was.
-- 
Farewell!   ~~~   ICQ#16553733  ~  40tude Dialog 
http://snurl.com/dialog
G           ~~~   PbEM basato su FATE ~ scrivi a hitman<at>
despammed.com
Now on air: Trio - Da da da

 Dove il <tag> è delimitato in base alle solite condizioni. 
Sì, ma così è difficile, ho pensato di farlo a rate:
(lo faccio passare alle prime e lo ammazzo dopo)
10 IF c'è <tag> e non c'è <(was:|era:>, filtra
20 IF c'è abc<TAG> e non c'è <(was:|era:>, filtra
30 IF c'è <tag> e dopo c'è <(was:|era:>, filtra
40 IF c'è abc<TAG> e dopo c'è <(was:|era:>, filtra
Il 10 e 20 (come il 30 e 40) sono separati perché in Xnews non riesco
su una stessa riga ad accendere e spegnere il case-sensitive.
che tradotto per Xnews diventa:
(la 30 e la 40 sono entrambe nell'ultima)
    Score: =-9999
    Subject: ([^a-z]+ot[^a-z]+)|(^[^a-z]*ot[^a-z]+)|([^a-z]+ot[^a-z]*$)
    ~Subject: .*(\(was|\(era)\:
    Score: =-9999
    Subject= [a-z]+OT
    ~Subject: .*(\(was|\(era)\:
    Score:: =-9999
    Subject: [^a-z]*ot[^a-z]+.*(\(was|\(era)\:
    Subject= [a-z]+OT.*(\([Ww][Aa][Ss]|\([Ee][Rr][Aa])\:
Posso ritenermi soddisfatto, non sarà elegante ma funziona (fino a
prova contraria ovviamente... ^__^)


 prova contraria ovviamente... ^__^)
Una prova contraria (sbagliato a ricopiare)...
    Subject: [^a-z]+ot[^a-z]+.*(\(was|\(era)\:
[1] Ci va un + al posto del *


 40 IF c'è abc<TAG> e dopo c'è <(was:|era:>, filtra
Bingo, direi stavolta.
Quindi per Agent sarebbe:
subject:({([^a-z]+ot[^a-z]+)|(^[^a-z]*ot[^a-z]+)|([^a-z]+ot[^a-z]*$)}|%{[a-z]+OT})&!subject:{(\(was\:)|(\(era\:)}
subject:({(([^a-z]+ot[^a-z]+)|(^[^a-z]*ot[^a-z]+)|([^a-z]+ot[^a-z]*$)).*((\(was\:)|(\(era\:))})
subject:%{([a-z]+OT).*((\((w|W)(a|A)(s|S)\:)|(\((e|E)(r|R)(a|A)\:))}
Che può anche essere messo tutto insieme (sempre in Agent) con or:
(subject:({([^a-z]+ot[^a-z]+)|(^[^a-z]*ot[^a-z]+)|([^a-z]+ot[^a-z]*$)}|%{[a-z]+OT})&!subject:{(\(was\:)|(\(era\:)})|(subject:({(([^a-z]+ot[^a-z]+)|(^[^a-z]*ot[^a-z]+)|([^a-z]+ot[^a-z]*$)).*((\(was\:)|(\(era\:))}))|(subject:%{([a-z]+OT).*((\((w|W)(a|A)(s|S)\:)|(\((e|E)(r|R)(a|A)\:))})
"Pare" che funziona. Qui ci vorrebbe un bug test :-)
Non so se sia più pratica/veloce l'espressione unica o le tre separate.
===
Per concludere questo bell'esercizietto accademico ci sarebbe da
discutere se dare o meno credito ai "non OT" e "forse OT", escludendoli
dal filtro. In questo gruppo, ad esempio, c'è un "(forseOT) Richiesta
info: AgentFind" che avevo addirittura keeppato. 
Chi risponde affermativamente si assume la responsabilità delle
conseguenze :-)
