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

Commit 8199ef1

Browse files
Merge pull request #128 from wiki-ai/extend_spanish
Extends spanish badwords and adds informal words
2 parents 275ca68 + 7585400 commit 8199ef1

File tree

2 files changed

+78
-23
lines changed

2 files changed

+78
-23
lines changed

revscoring/languages/spanish.py

Lines changed: 70 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -10,37 +10,78 @@
1010
STEMMER = SnowballStemmer("spanish")
1111
STOPWORDS = set(stopwords.words("spanish"))
1212
BAD_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+
]
4383
BAD_REGEX = re.compile("|".join(BAD_REGEXES))
84+
INFORMAL_REGEX = re.compile("|".join(INFORMAL_REGEXES))
4485
DICTIONARY = enchant.Dict("es")
4586

4687
def stem_word_process():
@@ -55,6 +96,13 @@ def is_badword(word):
5596
return is_badword
5697
is_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+
58106
def is_misspelled_process():
59107
def is_misspelled(word):
60108
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)