Create stopwords.py
Browse files
modules/text_analysis/stopwords.py
ADDED
@@ -0,0 +1,104 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# modules/text_analysis/stopwords.py
|
2 |
+
import spacy
|
3 |
+
from typing import Set, List
|
4 |
+
|
5 |
+
def get_custom_stopwords(lang_code: str) -> Set[str]:
|
6 |
+
"""
|
7 |
+
Retorna un conjunto de stopwords personalizadas según el idioma.
|
8 |
+
"""
|
9 |
+
# Stopwords base en español
|
10 |
+
# Símbolos, números y caracteres especiales
|
11 |
+
|
12 |
+
SYMBOLS_AND_NUMBERS = {
|
13 |
+
# Números
|
14 |
+
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
|
15 |
+
|
16 |
+
# Signos de puntuación básicos
|
17 |
+
'.', ',', ';', ':', '!', '¡', '?', '¿', '"', "'",
|
18 |
+
|
19 |
+
# Símbolos matemáticos
|
20 |
+
'+', '-', '*', '/', '=', '<', '>', '%',
|
21 |
+
|
22 |
+
# Paréntesis y otros delimitadores
|
23 |
+
'(', ')', '[', ']', '{', '}',
|
24 |
+
|
25 |
+
# Otros símbolos comunes
|
26 |
+
'@', '#', '$', '€', '£', '¥', '&', '_', '|', '\\', '/',
|
27 |
+
|
28 |
+
# Caracteres especiales
|
29 |
+
'•', '·', '…', '—', '–', '°', '´', '`', '^', '¨',
|
30 |
+
|
31 |
+
# Símbolos de ordenamiento
|
32 |
+
'§', '†', '‡', '¶',
|
33 |
+
|
34 |
+
# Símbolos de copyright y marcas registradas
|
35 |
+
'©', '®', '™',
|
36 |
+
|
37 |
+
# Fracciones comunes
|
38 |
+
'½', '¼', '¾', '⅓', '⅔',
|
39 |
+
|
40 |
+
# Otros caracteres especiales
|
41 |
+
'±', '×', '÷', '∞', '≠', '≤', '≥', '≈', '∑', '∏', '√',
|
42 |
+
|
43 |
+
# Espacios y caracteres de control
|
44 |
+
' ', '\t', '\n', '\r', '\f', '\v'
|
45 |
+
}
|
46 |
+
spanish_stopwords = {
|
47 |
+
'el', 'la', 'los', 'las', 'un', 'una', 'unos', 'unas', 'y', 'o', 'pero', 'si',
|
48 |
+
'de', 'del', 'al', 'a', 'ante', 'bajo', 'cabe', 'con', 'contra', 'de', 'desde',
|
49 |
+
'en', 'entre', 'hacia', 'hasta', 'para', 'por', 'según', 'sin', 'sobre', 'tras',
|
50 |
+
'que', 'más', 'este', 'esta', 'estos', 'estas', 'ese', 'esa', 'esos', 'esas',
|
51 |
+
'muy', 'mucho', 'muchos', 'muchas', 'ser', 'estar', 'tener', 'hacer', 'como',
|
52 |
+
'cuando', 'donde', 'quien', 'cual', 'mientras', 'sino', 'pues', 'porque',
|
53 |
+
'cada', 'cual', 'cuales', 'cuanta', 'cuantas', 'cuanto', 'cuantos', 'uno', 'dos', 'tres', 'cuatro', 'cinco', 'seis', 'siete', 'ocho', 'nueve', 'diez',
|
54 |
+
'once', 'doce', 'trece', 'catorce', 'quince', 'dieciséis', 'diecisiete', 'dieciocho', 'diecinueve', 'veinte',
|
55 |
+
'treinta', 'cuarenta', 'cincuenta', 'sesenta', 'setenta', 'ochenta', 'noventa', 'cien', 'mil', 'millón',
|
56 |
+
'primero', 'segundo', 'tercero', 'cuarto', 'quinto', 'sexto', 'séptimo', 'octavo', 'noveno', 'décimo'
|
57 |
+
}
|
58 |
+
|
59 |
+
# Stopwords base en inglés
|
60 |
+
english_stopwords = {
|
61 |
+
'the', 'be', 'to', 'of', 'and', 'a', 'in', 'that', 'have', 'i', 'it', 'for',
|
62 |
+
'not', 'on', 'with', 'he', 'as', 'you', 'do', 'at', 'this', 'but', 'his',
|
63 |
+
'by', 'from', 'they', 'we', 'say', 'her', 'she', 'or', 'an', 'will', 'my',
|
64 |
+
'one', 'all', 'would', 'there', 'their', 'what', 'so', 'up', 'out', 'if',
|
65 |
+
'about', 'who', 'get', 'which', 'go', 'me', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten',
|
66 |
+
'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen', 'twenty',
|
67 |
+
'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety', 'hundred', 'thousand', 'million',
|
68 |
+
'first', 'second', 'third', 'fourth', 'fifth', 'sixth', 'seventh', 'eighth', 'ninth', 'tenth'
|
69 |
+
}
|
70 |
+
|
71 |
+
french_stopwords = {
|
72 |
+
'le', 'la', 'les', 'un', 'une', 'des', 'du', 'de', 'et', 'ou', 'mais', 'si',
|
73 |
+
'à', 'dans', 'sur', 'pour', 'en', 'vers', 'par', 'avec', 'sans', 'sous', 'sur',
|
74 |
+
'que', 'qui', 'quoi', 'dont', 'où', 'quand', 'comment', 'pourquoi',
|
75 |
+
'ce', 'cet', 'cette', 'ces', 'mon', 'ton', 'son', 'ma', 'ta', 'sa',
|
76 |
+
'mes', 'tes', 'ses', 'notre', 'votre', 'leur', 'nos', 'vos', 'leurs',
|
77 |
+
'je', 'tu', 'il', 'elle', 'nous', 'vous', 'ils', 'elles',
|
78 |
+
'me', 'te', 'se', 'lui', 'leur', 'y', 'en', 'plus', 'moins',
|
79 |
+
'très', 'trop', 'peu', 'beaucoup', 'assez', 'tout', 'toute', 'tous', 'toutes',
|
80 |
+
'autre', 'autres', 'même', 'mêmes', 'tel', 'telle', 'tels', 'telles',
|
81 |
+
'quel', 'quelle', 'quels', 'quelles', 'quelque', 'quelques',
|
82 |
+
'aucun', 'aucune', 'aucuns', 'aucunes', 'plusieurs', 'chaque',
|
83 |
+
'être', 'avoir', 'faire', 'dire', 'aller', 'venir', 'voir', 'savoir',
|
84 |
+
'pouvoir', 'vouloir', 'falloir', 'devoir', 'croire', 'sembler',
|
85 |
+
'alors', 'ainsi', 'car', 'donc', 'or', 'ni', 'ne', 'pas', 'plus',
|
86 |
+
'jamais', 'toujours', 'parfois', 'souvent', 'maintenant', 'après',
|
87 |
+
'avant', 'pendant', 'depuis', 'déjà', 'encore', 'ici', 'là',
|
88 |
+
'oui', 'non', 'peut-être', 'bien', 'mal', 'aussi', 'surtout',
|
89 |
+
'c\'est', 'j\'ai', 'n\'est', 'd\'un', 'd\'une', 'qu\'il', 'qu\'elle',
|
90 |
+
'un', 'deux', 'trois', 'quatre', 'cinq', 'six', 'sept', 'huit', 'neuf', 'dix',
|
91 |
+
'onze', 'douze', 'treize', 'quatorze', 'quinze', 'seize', 'dix-sept', 'dix-huit', 'dix-neuf', 'vingt',
|
92 |
+
'trente', 'quarante', 'cinquante', 'soixante', 'soixante-dix', 'quatre-vingts', 'quatre-vingt-dix', 'cent', 'mille', 'million',
|
93 |
+
'premier', 'deuxième', 'troisième', 'quatrième', 'cinquième', 'sixième', 'septième', 'huitième', 'neuvième', 'dixième'
|
94 |
+
}
|
95 |
+
|
96 |
+
stopwords_dict = {
|
97 |
+
'es': spanish_stopwords,
|
98 |
+
'en': english_stopwords,
|
99 |
+
'fr': french_stopwords
|
100 |
+
}
|
101 |
+
|
102 |
+
# Obtener stopwords del idioma especificado o devolver conjunto vacío si no existe
|
103 |
+
return stopwords_dict.get(lang_code, set())
|
104 |
+
|