1010STEMMER = SnowballStemmer ("spanish" )
1111STOPWORDS = set (stopwords .words ("spanish" ))
1212BAD_REGEXES = [
13- 'ano' ,
13+ 'ano' , 'amaona' , 'autofellation' , 'aweonao' ,
1414 'bastardo' , 'bollo' , 'boludo' , 'bugarr[óo]n' ,
15- 'ca(gar(ro)?|ca)' , 'cabr[óo]n' , 'cacas' , 'capullo' , 'carajo' ,
16- 'chingar' , 'chino' , 'choch[oa]' , 'cholo' , 'chucha' , 'chupar' ,
17- 'chupapollas' , 'chupamedias' , 'cipote' , 'clamidia' , 'coger' ,
18- 'cojones' , 'concha' , 'conejo' , 'consolador' , 'coño' , 'cuca' ,
19- 'culear' , 'culo' , 'cundango' ,
15+ 'ca(gar(ro)?|ca)' , 'cabr[óo]n(es)?' , 'caca' , 'caga(d[ao]|r)?' , 'capullo' ,
16+ 'cagaro?' , 'carajo' ,
17+ 'chinga(r|da)?' , 'chingu?en' , 'chino' , 'choch[oa]' , 'cholo' , 'chucha' ,
18+ 'chupa(r|me|mel[ao]|ban?)?' , 'chup[ea][nr]' , 'chupen(la|me)' , 'chupo' ,
19+ 'chupapollas' , 'chupamedias' , 'cipote' , 'clamidia' , 'co[gj]er' , 'cojio' ,
20+ 'cojones' , 'comeme' , 'comian' , 'conch(a|etumare)' , 'conejo' ,
21+ 'consolador' , 'co[ñn]o' , 'cuca' ,
22+ 'cule(ar|ros)' , 'culito' , 'cul(o|iaos?)' , 'cundango' ,
2023 'drogata' ,
21- 'facha' , 'follar' , 'fornicar' , 'fulana' , 'furcia' ,
22- 'gabacho' , 'gay' , 'gilipollas' , 'gitano' , 'gonorrea' , 'gordo' ,
23- 'gringo' , 'guiri' ,
24- 'herpes' , 'homosexual' , 'huevos' , '(huev|we)[óo]n' ,
25- 'imb[ée]cil' ,
26- 'japo' , 'joder' , 'joto' , 'jud[íi]o' ,
24+ 'facha' , 'folla(r|ba)' , 'follo' , 'fornicar' , 'fulana' , 'furcia' ,
25+ 'gabacho' , 'g[ae]ys?' , 'gilipollas' , 'gitano' , 'gonorrea' , 'gordo' ,
26+ 'gringo' , 'gue(vo|y)' , 'guiri' ,
27+ 'herpes' , 'homosexual' , 'huevos' , '(huev|we)[óo]n' , 'hijueputas?' ,
28+ 'holocuento' ,
29+ 'idiotas?' , 'imb[ée]cil' ,
30+ 'japo' , 'joder' , 'jotos?' , 'jud[íi]o' ,
2731 'lesbiana' ,
28- 'mach(orra|etorra)' , 'maldito' , 'mamada' , 'manola' ,
29- 'maric(a|[óo]n)' , 'marimach[ao]' , 'maripos[óo]n' ,
30- 'mea(r|da)' , 'mam[óo]n' , 'mierda' , 'minga' , 'moro' ,
31- 'nazi' , 'negrata' ,
32+ 'mach(orra|etorra)' , 'maldito' , 'malparido' , 'mama(da|guevo)' , 'mamon' ,
33+ 'manola' , 'maric(a|[óo]n)' , 'marimach[ao]' , 'maripos[óo]n' ,
34+ 'mea(r|da+)s?' , 'mam[óo]+n' , 'mierda' , 'minga' , 'mocos' , 'mojon' ,
35+ 'monda' , 'moro' ,
36+ 'nacio' , 'nazi' , 'negrata' ,
3237 'ojete' ,
33- 'paja' , 'paki' , 'pedo' , 'pelao' , 'pelotas' , 'pendejo' , 'pene' , 'picha' ,
34- 'pinche' , 'pito' , 'polla' , 'polvo' , 'poto' , 'prostituta' , 'put[ao]' ,
38+ 'pajas?' , 'pajero' , 'pario' , 'paki' , 'pedo' , 'pelao' , 'pelotas' ,
39+ 'pendej(o|a|ada)s?' ,
40+ 'pene' , 'peos?' , 'pich(a|ula)' , 'pijas?' , 'piko' ,
41+ 'pinches?' , 'pinga' , 'pipi' , 'pirobos' , 'pito' , 'pollas?' , 'poronga' ,
42+ 'polvo' , 'poto' , 'prostituta' , 'put[ao]+(s|n)?' ,
3543 'puñal' ,
3644 'rabo' , 'ramera' ,
37- 'sida' , 'skin(head)?' , 'subnormal' , 'sudaca' , 's[íi]filis' ,
38- 'tonto' , 'torta' , 'tortillera' , 'tranca' , 'tranny' ,
39- 'travesti' , 'travolo' , 'trolo' ,
40- 'verga' , 'vibrador' , 'vulva' ,
45+ 'sida' , 'skin(head)?' , 'sorete' , 'subnormal' , 'sudaca' , 's[íi]filis' ,
46+ 'tetas?' , 'tonto' , 'torta' , 'tortillera' , 'tranca' , 'tranny' ,
47+ 'travesti' , 'travolo' , 'trol(o|a)' ,
48+ 'vergas?' , 'vibrador' , 'violo' , 'vulva' ,
49+ 'wea' , 'weon(es)?' , 'wey' ,
4150 'zapatona' , 'zorra'
4251]
52+ INFORMAL_REGEXES = [
53+ 'agan' , 'agregenme' , 'aguante' , 'aki' , 'amo' , 'amoo' , 'amooo' , 'amoooo' ,
54+ 'apesta' , 'asco' , 'att' , 'atte' ,
55+ 'bieber' , 'bla' , 'bobada' , 'bobos' ,
56+ 'cafemontevideo' , 'chido' , 'comia' , 'comio' , 'contributions' , 'copien' ,
57+ 'cursiva' ,
58+ 'descubrio' , 'direction' ,
59+ 'estupida' , 'estupides' , 'estupido' , 'estupidos' ,
60+ 'fea' , 'feas' , 'feo' , 'feos' ,
61+ 'grasias' , 'guapo' ,
62+ 'haha' , 'hahaha' , 'hola+' , 'holis?' , 'hotmail' ,
63+ 'ijos' , 'inserta' ,
64+ '(ja)+' , '(je)+' , '(ji)+' ,
65+ 'kie(n|ro)' , 'komo' ,
66+ 'lean' , 'lees' , 'loko' , 'lol' ,
67+ 'malparida' , 'mcfinnigan' , 'mensos' , 'metio' , 'metroflog' , 'minecraft' ,
68+ 'muxo' , 'negrita' ,
69+ 'ojala' , 'osea' ,
70+ 'pene' , 'penes' , 'pollid' , 'popo' , 'porfavor' , 'porke' , 'porq' , 'porqe' ,
71+ 'porqueria' , 'profe' , 'pupu' ,
72+ 'qiero' ,
73+ 'redtube' ,
74+ 'saludos' , 'satanists' , 'sierto' , 'soi' , 'sophonpanich' , 'subnormal' ,
75+ 'tambn' , 'tanga' , 'tonta' , 'tonto' , 'tontos' ,
76+ 'umaxnet' ,
77+ 'vallanse' , 'vayanse' ,
78+ 'wena' , 'weno' ,
79+ 'xd+' , 'xfarm' ,
80+ 'yolo' ,
81+ 'zorpia'
82+ ]
4383BAD_REGEX = re .compile ("|" .join (BAD_REGEXES ))
84+ INFORMAL_REGEX = re .compile ("|" .join (INFORMAL_REGEXES ))
4485DICTIONARY = enchant .Dict ("es" )
4586
4687def stem_word_process ():
@@ -55,6 +96,13 @@ def is_badword(word):
5596 return is_badword
5697is_badword = LanguageUtility ("is_badword" , is_badword_process )
5798
99+ def is_informal_word_process ():
100+ def is_informal_word (word ):
101+ return bool (INFORMAL_REGEX .match (word .lower ()))
102+ return is_informal_word
103+ is_informal_word = LanguageUtility ("is_informal_word" ,
104+ is_informal_word_process , depends_on = [])
105+
58106def is_misspelled_process ():
59107 def is_misspelled (word ):
60108 return not DICTIONARY .check (word )
0 commit comments