Skip to content
This repository was archived by the owner on Aug 9, 2024. It is now read-only.

Commit 7585400

Browse files
committed
Completes the spanish badwords and informal words.
1 parent dddfecd commit 7585400

File tree

2 files changed

+74
-161
lines changed

2 files changed

+74
-161
lines changed

revscoring/languages/spanish.py

Lines changed: 66 additions & 160 deletions
Original file line numberDiff line numberDiff line change
@@ -10,179 +10,78 @@
1010
STEMMER = SnowballStemmer("spanish")
1111
STOPWORDS = set(stopwords.words("spanish"))
1212
BAD_REGEXES = [
13-
1413
'ano', 'amaona', 'autofellation', 'aweonao',
1514
'bastardo', 'bollo', 'boludo', 'bugarr[óo]n',
1615
'ca(gar(ro)?|ca)', 'cabr[óo]n(es)?', 'caca', 'caga(d[ao]|r)?', 'capullo',
1716
'cagaro?', 'carajo',
1817
'chinga(r|da)?', 'chingu?en', 'chino', 'choch[oa]', 'cholo', 'chucha',
19-
'chupa(r|me|mel[ao])', 'chup[ea][nr]', 'chupen(la|me)',
20-
'chupapollas', 'chupamedias', 'cipote', 'clamidia', 'coger',
21-
'cojones', 'concha', 'conejo', 'consolador', 'coño', 'cuca',
22-
'culear', 'culo', 'cundango',
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',
2323
'drogata',
24-
'facha', 'follar', 'fornicar', 'fulana', 'furcia',
25-
'gabacho', 'gay', 'gilipollas', 'gitano', 'gonorrea', 'gordo',
26-
'gringo', 'guiri',
27-
'herpes', 'homosexual', 'huevos', '(huev|we)[óo]n',
28-
'imb[ée]cil',
29-
'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',
3031
'lesbiana',
31-
'mach(orra|etorra)', 'maldito', 'mamada', 'manola',
32-
'maric(a|[óo]n)', 'marimach[ao]', 'maripos[óo]n',
33-
'mea(r|da)', 'mam[óo]n', 'mierda', 'minga', 'moro',
34-
'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',
3537
'ojete',
36-
'paja', 'paki', 'pedo', 'pelao', 'pelotas', 'pendejo', 'pene', 'picha',
37-
'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)?',
3843
'puñal',
3944
'rabo', 'ramera',
40-
'sida', 'skin(head)?', 'subnormal', 'sudaca', 's[íi]filis',
41-
'tonto', 'torta', 'tortillera', 'tranca', 'tranny',
42-
'travesti', 'travolo', 'trolo',
43-
'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',
4450
'zapatona', 'zorra'
4551
]
46-
#TODO: more badwords
47-
"""
48-
chinga chingada chingen chinguen chocha chucha chupa chupaba chupaban
49-
chupame chupamela chupan chupar chupen chupenla chupenme chupo cojer cojio
50-
cojones comeme comian conchetumare coño culeros culiao culiaos culito
51-
follaba follar follo
52-
gays gey gilipollas guevo guey
53-
hijueputa hijueputas holocuento
54-
idiota idiotas imbecil
55-
jilipollas joder joto jotos
56-
malparido malparidos mamada mamadas mamaguevo mamon marica maricas marico
57-
maricon maricones merda metia meto mierda mierdaa mierdas mocos mojon monda
58-
nacio
59-
ojete pajas pajero
60-
pario pattaya pedo
61-
pedos pelan pelotudo pelotudos pendeja pendejada pendejadas pendejo pendejos peo
62-
peos perra perras petardas petes picha pichula pija pijas piko pinche
63-
pinches pinga pipi pirobos pito polla pollas poronga poto puta putaa putas
64-
puto puton putos sorete
65-
teta tetas trola trolo
66-
verga vergas violo
67-
wea weon weones wey
68-
zorra"""
69-
70-
#TODO: informal words
71-
"""
72-
agan
73-
agregenme
74-
aguante
75-
aki
76-
amo
77-
amoo
78-
amooo
79-
amoooo
80-
apesta
81-
asco
82-
att
83-
atte
84-
bieber
85-
bla
86-
bobada
87-
bobos
88-
cafemontevideo
89-
chido
90-
comia
91-
comio
92-
contributions
93-
copien
94-
cursiva
95-
descubrio
96-
direction
97-
estupida
98-
estupides
99-
estupido
100-
estupidos
101-
fea
102-
feas
103-
feo
104-
feos
105-
grasias
106-
guapo
107-
haha
108-
hahaha
109-
hola
110-
holaa
111-
holaaa
112-
holaaaa
113-
holaaaaa
114-
holi
115-
holis
116-
hotmail
117-
ijos
118-
inserta
119-
jaja
120-
jajaj
121-
jajaja
122-
jajajaj
123-
jajajaja
124-
jajajajaj
125-
jajajajaja
126-
jajajajajaja
127-
jajajajajajaja
128-
jajajajajajajaja
129-
jeje
130-
jejeje
131-
jiji
132-
kien
133-
kiero
134-
komo
135-
lean
136-
lees
137-
loko
138-
lol
139-
malparida
140-
mcfinnigan
141-
mensos
142-
metio
143-
metroflog
144-
minecraft
145-
muxo
146-
negrita
147-
ojala
148-
osea
149-
pene
150-
penes
151-
pollid
152-
popo
153-
porfavor
154-
porke
155-
porq
156-
porqe
157-
porqueria
158-
profe
159-
pupu
160-
qiero
161-
redtube
162-
saludos
163-
satanists
164-
sierto
165-
soi
166-
sophonpanich
167-
subnormal
168-
tambn
169-
tanga
170-
tonta
171-
tonto
172-
tontos
173-
umaxnet
174-
vallanse
175-
vayanse
176-
wena
177-
weno
178-
xdd
179-
xddd
180-
xdddd
181-
xfarm
182-
yolo
183-
zorpia
184-
"""
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+
]
18583
BAD_REGEX = re.compile("|".join(BAD_REGEXES))
84+
INFORMAL_REGEX = re.compile("|".join(INFORMAL_REGEXES))
18685
DICTIONARY = enchant.Dict("es")
18786

18887
def stem_word_process():
@@ -197,6 +96,13 @@ def is_badword(word):
19796
return is_badword
19897
is_badword = LanguageUtility("is_badword", is_badword_process)
19998

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+
200106
def is_misspelled_process():
201107
def is_misspelled(word):
202108
return not DICTIONARY.check(word)

revscoring/languages/tests/test_spanish.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
from nose.tools import eq_
22

33
from .. import language
4-
from ..spanish import is_badword, is_misspelled, is_stopword, stem_word
4+
from ..spanish import (is_badword, is_informal_word, is_misspelled,
5+
is_stopword, stem_word)
56

67

78
def test_language():
@@ -16,6 +17,12 @@ def test_language():
1617
assert not is_badword()("hat")
1718
eq_(hash(is_badword), hash(language.is_badword))
1819

20+
assert is_informal_word()("jaja")
21+
assert is_informal_word()("jejejejeje")
22+
assert is_informal_word()("Chido")
23+
assert not is_informal_word()("Mamón")
24+
eq_(hash(is_informal_word), hash(language.is_informal_word))
25+
1926
assert is_misspelled()("wjwkjb")
2027
assert not is_misspelled()("que")
2128
assert not is_misspelled()("Que")

0 commit comments

Comments
 (0)