Está en la página 1de 11

JSPAM

Trabajo Prctico
Teora de la comunicacin
Versin 1.0
30 de Noviembre de 2008
ndice
!uien esta diri"ido este documento................................................................................3
Prerre!uisitos......................................................................................................................3
#ntroduccin.......................................................................................................................$
Teorema de %a&es..............................................................................................................'
Naive %a&es.......................................................................................................................'
(ise)o de la a*licacin......................................................................................................+
#m*lementacin..................................................................................................................8
,et de *ruebas....................................................................................................................-
.onclusiones....................................................................................................................10
/anual de usuario............................................................................................................11
utor........................................................................................................................................12
A quien esta dirigido este documento
0ste documento esta diri"ido a toda *ersona !ue !uiera in1ormarse sobre como esta
construido j,*am. (esde as*ectos de l"ica de al"oritmos 2asta detalles de im*lementacin.
Prerrequisitos
,e deben tener conocimientos bsicos de *ro"ramacin orientada a objetos.
Introduccin
,e conoce como spam a a!uellos mensajes !ue son enviados en "randes cantidades a
destinatarios !ue nunca los solicitaron. 3eneralmente son de ndole *ublicitario4 &a sea de un
*roducto "enuino o de al"una 1arsa *ara el consumidor.
5a va ms com6n *ara recibir este ti*o de mensajes es el correo electrnico. 5a em*resa
/essa"e5abs re*orto !ue *ara 7ctubre de 200'4 los correos de ti*o s*am eran el +88 del
tr1ico total.
,e 2an desarrollado a lo lar"o de los a)os4 distintos m9todos de clasi1icacin !ue son
utili:ados4 entre otras cosas4 *ara detectar a!uellos mails !ue son s*am de a!uellos !ue no lo
son. 7tro uso *or ejem*lo4 es *ara ordenarlos en car*etas. l"unos de estos m9todos son;
<andom =orest4 ,u**ort Vector /ac2ines4 Naive %a&es & (ecisin Trees.
j,*am es una a*licacin !ue intenta detectar4 dado un listado de mails4 a!uellos !ue son
s*am. Para esto utili:a el al"oritmo de clasi1icacin Naive %a&es. 0ste se basa en el teorema
de *robabilidad de %a&es.
Teorema de Bayes
,u*on"amos un suceso & otro suceso cual!uiera %.
,u*on"amos !ue sabemos como se com*orta % si se dio & !ueremos saber como se
com*ortara si se diera *rimero %.
Por ejem*lo sabemos !ue la *robabilidad de !ue llueva >? & lue"o 2a&a accidentes de
transito >%? es 048. Nos interesara saber cual es la *robabilidad de !ue 2a&a accidentes de
transito >%? & lue"o llueva >?.
,i nos interesa saber cual es la *robabilidad de !ue suceda sabiendo !ue *aso %4 utili:amos
el teorema;
P(A/B) = P(B/A) P(A) / P(B)
0sto se lee como; @5a *robabilidad de !ue suceda sabiendo !ue *aso % es i"ual a la
*robabilidad de !ue suceda % sabiendo !ue *aso 4 *or la *robabilidad de !ue *ase 4
dividido la *robabilidad de !ue *ase %A.
Naive Bayes
0n nuestro caso el clasi1icador utili:a el teorema de %a&es *ara determinar la *robabilidad de
!ue un cierto mail sea s*am;
P(spam/palabras) = P(palabras/spam) P(spam) / P(palabras)
0sto se lee como; @5a *robabilidad de !ue un mail sea s*am dado !ue tiene ciertas *alabras
es i"ual a la *robabilidad de !ue esas *alabras est9n en un mail s*am4 *or la *robabilidad de
!ue cual!uier mail sea s*am4 divido la *robabilidad de !ue esas *alabras a*are:can en
cual!uier mail.
0ste m9todo re!uiere de entrenamiento4 es decir4 indicarle un set de mails &a *reclasi1icados.
(e esta 1orma va a contar con la *robabilidad de las *alabras en un mail s*am. 5ue"o al
clasi1icar un mail4 cada *alabra ira sumando una *robabilidad !ue si lle"a a un cierto
*orcentaje va a determinar la clasi1icacin del mismo.
B Ventajas
,e ada*ta al usuario4 &a !ue las *robabilidades son 6nicas *ara cada uno.
0vita 1alsos *ositivos4 en donde se 1iltra como s*am al"o !ue no lo es.
B (esventajas
,usce*tible al @envenenamiento ba&esianoA4 en donde los s*ammers inclu&en *alabras !ue no
suelen a*arecer en un s*am4 a1ectando de esta 1orma las *robabilidades & *or lo tanto al
al"oritmo.
Diseo de la aplicacin
5a a*licacin tiene un dise)o de *ro"ramacin orientada a objetos. ,i bien se trato de
sim*li1icar el mismo tiene una divisin en ca*as *ara *ermitir eCtenderlo4 cambiar la
*resentacin &Do acceso a datos en un 1uturo.
(ia"rama de clases;
class SystemParaImpresion
SpamFilterBo
+ aprender(Col l ecti on<Mail PreClasi fi cado>) : voi d
+ i sEntrenado() : bool ean
+ cl asi ficar(Col l ecti on<Mail >) : Col l ection<Mai l Clasifi cado>
Mail
- asunto: tring
- !ody: tri ng
- arc"i vo: tri ng
+ getNontop#ords$% : tri ng&'
MailPreClasificado
- spam: !ool ean
NaiveBayesBoImpl
+ aprender$(ol l ecti on)*ail Pre(lasi +i cado,% : voi d
+ i s-ntrenado$% : !ool ean
+ cl asi +icar$(ol l ecti on)*ail ,% : (ol l ection)*ai l (l asi+i cado,
Estadistica
- total *ai lspam: i nt
- total *ai lsNopam: i nt
+ +i nd$% : -stadi stica
+ save$% : voi d
+ del eteAl l$% : void
Word
- T.P/#.0D: tri ng&'
- i d: tri ng
- pro!a!i l i dadpam: Dou!le
- pro!a!i l i dadNopam: Dou!le
+ +ind$tring% : #ord
+ saveAl l $(ol l ecti on)#ord,% : voi d
+ del eteAl l $% : voi d
1i nter+ace2
SpamFilterDao
+ findWord(Stri ng) : Word
+ saveAl l(Col l ecti on<Word>, Word) : voi d
+ findEstadisti ca() : Estadi sti ca
+ save(Estadi stica) : voi d
+ del eteAl l Words() : voi d
+ del eteAl l Estadi sti cas() : voi d
Main
- PA0A*-T0./AP0-ND-0: tring
- PA0A*-T0./(3AI4I(A0/DI0: tri ng
+ aprender$tri ng% : voi d
+ cl asi+i car$tri ng% : voi d
+ o!tener.peraci on$tri ng&'% : .peraci on
usuario
SpamFilterDaoJdbcImpl
+ +ind#ord$tri ng% : #ord
+ save#ord$#ord% : voi d
+ +ind-stadi sti ca$% : -stadi sti ca
+ save$-stadi sti ca% : voi d
1i nter+ace2
DirectorioBo
+ buscarMail sPreCl asi fi cados(Stri ng) : Col l ecti on<Mai l PreClasifi cado>
+ buscarMail s(Stri ng) : Col l ecti on<Mai l >
DirectorioBoImpl
+ !uscar*ai l sPre(l asi +icados$tring% : (ol lection)*ai l Pre(l asi +i cado,
+ !uscar*ai l s$tri ng% : (ol lecti on)*ai l,
Stream
+ +rom5ml $tri ng% : .!6 ect
MailClasificado
- pro!a!i l i dadpam: Bi gDeci mal
- pro!a!i l i dadNopam: Bi gDeci mal
1real i 7e2
1call 2
aprender8
cl asi+i car
1use2 1use2
1use2
1e9tends2
1real i 7e2
1i nstanti ate2
1cal l 2
1use2
1use2
1real i7e2
1e9tends2
Implementacin
0l desarrollo esta 2ec2o en Eava versin 1.'.C.
.omo motor de base de datos se utili:o m&,!l & Edbc *ara conectarse desde Eava.
et de prue!as
,e reali:aron un conjunto de *ruebas *ara determinar !ue tan bien clasi1ica este m9todo los
mails en s*am & no s*am.
Para sim*li1icar los resultados4 se va modi1icando el set de a*rendi:aje *ero los mails a
clasi1icar son siem*re dos. Fno debera clasi1icarlo como s*am & al otro no.
B .aractersticas; ,et G"randeH de a*rendi:aje con todos los mails en in"les de1inidos
como s*am & mails en castellano como no s*am.
PreBclasi1icados s*am; 1$
PreBclasi1icados no s*am; -
/ail a clasi1icar s*am; *alabras en in"les
/ail a clasi1icar no s*am; *alabras en castellano
Probabilidades del mail s*am; 0.+08 D 0.0
Probabilidades del mail no s*am; 0.010 D 0.38$
B .aractersticas; ,et Gc2icoH de a*rendi:aje con todos los mails en in"les de1inidos
como s*am & mails en castellano como no s*am.
PreBclasi1icados s*am; 1
PreBclasi1icados no s*am; 1
/ail a clasi1icar s*am; *alabras en in"les
/ail a clasi1icar no s*am; *alabras en castellano
Probabilidades del mail s*am; 0.' D 0.0
Probabilidades del mail no s*am; 0.12' D 0.3I'
B .aractersticas; ,et G"randeH de a*rendi:aje con todos mails de o1ertas laborales
de1inidos como s*am & mails de otra cosa como no s*am.
PreBclasi1icados s*am; 10
PreBclasi1icados no s*am; 10
/ail a clasi1icar s*am; *alabras de b6s!uedas laborales
/ail a clasi1icar no s*am; *alabras !ue no mencionen b6s!uedas laborales
Probabilidades del mail s*am; 0.3++ D 0.133
Probabilidades del mail no s*am; 0.30I D 0.1-2
B .aractersticas; ,et Gc2icoH de a*rendi:aje con todos mails de o1ertas laborales
de1inidos como s*am & mails de otra cosa como no s*am.
PreBclasi1icados s*am; 1
PreBclasi1icados no s*am; 1
/ail a clasi1icar s*am; *alabras de b6s!uedas laborales
/ail a clasi1icar no s*am; *alabras !ue no mencionen b6s!uedas laborales
Probabilidades del mail s*am; 0.2+- D 0.230
Probabilidades del mail no s*am; 0.2 D 0.3
(onclusiones
0n el caso 1 & 24 se nota la mejora !ue tiene el al"oritmo al tener un set de datos mas "rande4
*ero este debe estar bien di1erenciado4 sino ocurre el escenario del caso 3 en donde 2a& un
1also *ositivo4 *articularidad !ue suele evitar este al"oritmo.
5os casos en los !ue a*rende con un solo mail demuestra !ue al estar bien di1erenciado el set
de datos tiene un buen *orcentaje de deteccin.
0stos resultados encuadran dentro de lo es*erado4 &a !ue se tendra !ue contar con un set de
a*rendi:aje de mas de 100 mails como mnimo4 *ara ajustar las *robabilidades de cada
*alabra & !ue el al"oritmo 1uncione mejor.
*anual de usuario
5a a*licacin se corre desde consola con cual!uier versin de java 1.'.C o ma&or. Tiene
bsicamente 2 comandos;
i. *render; Gjava -jar jspam.jar ad directorio_mails_preclasifcados
5os mails *reBclasi1icados son arc2ivos Cml con el si"uiente 1ormato;
!"#ml versio$=%&.'% e$codi$(=%)S*-++,--&% ".
!mail.
!as/$to.!/as/$to.
!bod0.!/bod0.
<spam>true/false</spam>
!/mail.
ii. .lasi1icar1 2java -jar jspam.jar cd directorio_mails_a_clasifcar
5os mails a clasi1icar son arc2ivos Cml con el si"uiente 1ormato;
!"#ml versio$=%&.'% e$codi$(=%)S*-++,--&% ".
!mail.
!as/$to.!/as/$to.
!bod0.!/bod0.
!/mail.
0ste comando mueve los mails clasi1icados4 a una subcar*eta llamada Gs*amH & a otra Gno
s*amH se"6n corres*onda. dicionalmente le a"re"a al mail las *robabilidades con las cuales
1ue 1iltrado.
Autor
Demian Berjman. Padrn 82040.

También podría gustarte