Semántica humana vs SEO vs GEO: Por qué las stopwords no importan
🎓 Especialista en SEO & GEO técnico y estrategia digital.
• Semántica humana: Cada palabra cuenta. «El perro» y «un perro» son diferentes.
• Semántica SEO: Las stopwords (el, la, un, de, y) tienen peso casi nulo.
• Semántica GEO (IA): Las palabras se convierten en vectores numéricos. Las stopwords apenas modifican el vector.
📌 Conclusión: Si quieres que Google te entienda, usa keywords. Si quieres que ChatGPT te cite, usa conceptos densos.
Cuando escribes para un humano, cada palabra importa. «El gato» no es lo mismo que «un gato». Pero cuando escribes para un motor de búsqueda o para una IA generativa, las reglas cambian drásticamente.
En Ogro Verde SEO creemos que entender cómo tokenizan y vectorizan las frases los motores es la clave para posicionar en 2026. Por eso, en esta guía te explicamos, con código Python real, por qué los artículos, preposiciones y conjunciones se diluyen en SEO y GEO.
1. Semántica humana
2. Semántica SEO: stopwords y tokenización
3. Código Python: eliminar stopwords
4. Semántica GEO: vectores y embeddings
5. Código Python: vectores con spaCy
6. Tabla de pesos por tipo de palabra
7. Estrategia SEO vs GEO
8. Preguntas frecuentes
1. ¿Qué es la semántica humana?
La semántica humana es rica, contextual y subjetiva. Un humano entiende matices, ironías, énfasis y ambigüedades.
Ejemplo:
- «El perro persiguió al gato» → El sujeto es UN perro específico.
- «Un perro persiguió al gato» → Cualquier perro, no uno en concreto.
Para un humano, la diferencia entre «el» y «un» es fundamental. Cambia el significado de la frase.
Pero para un motor de búsqueda o una IA… esa diferencia casi no existe. Veamos por qué.
2. Semántica SEO: stopwords y tokenización
Los motores de búsqueda tradicionales (Google, Bing) tokenizan las frases. Es decir, las dividen en palabras individuales. Luego, asignan pesos a cada token.
Las stopwords (artículos, preposiciones, conjunciones) reciben un peso casi nulo porque no aportan significado temático.
Ejemplo: La frase «El mejor contenido de SEO para tu web» se tokeniza como:
['El', 'mejor', 'contenido', 'de', 'SEO', 'para', 'tu', 'web']
Los tokens «El», «de», «para», «tu» tienen peso muy bajo. Los tokens importantes son «mejor», «contenido», «SEO», «web».
3. Código Python: eliminando stopwords (SEO)
Aquí tienes un ejemplo real con Python y la librería NLTK para eliminar stopwords del español. Este es el tipo de análisis que aplicamos en Ogro Verde SEO para optimizar contenidos:
import nltk from nltk.corpus import stopwords from nltk.tokenize import word_tokenize # Descargar recursos (solo la primera vez) nltk.download('stopwords') nltk.download('punkt') nltk.download('punkt_tab') # Frase de ejemplo frase = "El mejor contenido de SEO para tu web" # Tokenizar tokens = word_tokenize(frase, language='spanish') # Cargar stopwords en español stop_words = set(stopwords.words('spanish')) # Eliminar stopwords tokens_limpios = [token for token in tokens if token.lower() not in stop_words and token.isalpha()] print("Tokens originales:", tokens) print("Tokens sin stopwords:", tokens_limpios)
Resultado:
Tokens originales: ['El', 'mejor', 'contenido', 'de', 'SEO', 'para', 'tu', 'web'] Tokens sin stopwords: ['mejor', 'contenido', 'SEO', 'web']
Interpretación: «El», «de», «para», «tu» han desaparecido. El SEO solo ve las palabras con contenido semántico.
4. Semántica GEO: vectores y embeddings
Los motores generativos (ChatGPT, Gemini, Claude) no trabajan con palabras sueltas. Trabajan con vectores numéricos (embeddings). Cada palabra o frase se convierte en un vector de cientos de dimensiones.
La clave: Las stopwords apenas modifican el vector. Dos frases que solo difieren en «el» vs «un» tendrán vectores casi idénticos para la IA.
Ejemplo visual (simplificado):
Frase A: "El posicionamiento SEO es clave" → Vector: [0.12, 0.45, 0.78, 0.23, ...] Frase B: "Un posicionamiento SEO es clave" → Vector: [0.13, 0.44, 0.77, 0.24, ...] Diferencia: MUY PEQUEÑA (casi imperceptible para la IA)
5. Código Python: comparando vectores con spaCy
Con la librería spaCy podemos ver cómo la IA convierte frases en vectores y calcula su similitud:
import spacy # Cargar modelo en español # Instalar: python -m spacy download es_core_news_md nlp = spacy.load("es_core_news_md") # Frases para comparar frase1 = "El perro persiguió al gato" frase2 = "Un perro persiguió a un gato" frase3 = "El canino cazó al felino" # Misma idea, palabras diferentes # Convertir a vectores doc1 = nlp(frase1) doc2 = nlp(frase2) doc3 = nlp(frase3) print("Similitud frase1 vs frase2 (cambia 'el' por 'un'):", doc1.similarity(doc2)) print("Similitud frase1 vs frase3 (misma idea, otras palabras):", doc1.similarity(doc3))
Resultado esperado:
Similitud frase1 vs frase2 (cambia 'el' por 'un'): 0.95 Similitud frase1 vs frase3 (misma idea, otras palabras): 0.89
Interpretación: La IA considera que «el perro» y «un perro» son 95% iguales. Las stopwords casi no afectan. En cambio, «perro→canino» y «persiguió→cazó» son más diferentes (89%), pero la IA sigue entendiendo que es la misma idea.
6. Tabla: qué palabras importan y cuáles se diluyen
| Tipo de palabra | Ejemplos | Peso SEO | Peso GEO (IA) |
|---|---|---|---|
| Artículos | el, la, los, un, una | ❌ Muy bajo | ❌ Casi nulo |
| Preposiciones | de, en, a, por, para | ❌ Muy bajo | ❌ Casi nulo |
| Conjunciones | y, o, pero, sino | ⚠️ Bajo | ⚠️ Bajo |
| Pronombres | él, ella, eso, aquello | ⚠️ Bajo | ⚠️ Bajo |
| Verbos comunes | ser, estar, haber, tener | ✅ Medio | ✅ Medio |
| Verbos específicos | posicionar, optimizar, rankear | ✅ Alto | ✅ Alto |
| Sustantivos | SEO, tráfico, visibilidad | ✅ Alto | ✅ Alto |
| Adjetivos calificativos | rápido, eficiente, orgánico | ✅ Medio-alto | ✅ Alto |
7. Estrategia práctica: SEO vs GEO
🎯 Para SEO (Google)
- ✅ Usa keywords exactas en títulos y H2
- ✅ Elimina stopwords de URLs
- ✅ Densidad controlada de términos clave
- ❌ No fuerces artículos o preposiciones
🤖 Para GEO (IA: ChatGPT, Gemini)
- ✅ Usa sinónimos y variaciones del mismo concepto
- ✅ Escribe con vectores semánticos densos
- ✅ La IA lee por temas, no por palabras sueltas
- ❌ No repites la misma keyword exacta una y otra vez
⚠️ El error que mata tu visibilidad en IA
Mala optimización (pensando solo en keywords):
"El mejor SEO para tu web es el SEO técnico. El SEO de contenido también es importante para el SEO."
Problema: Repite «el», «la», «tu», «para». La IA ignora esas palabras y ve repetición vacía de «SEO».
Buena optimización (pensando en vectores semánticos):
"Para mejorar el posicionamiento orgánico, combina una arquitectura web optimizada con contenido relevante. La visibilidad en buscadores aumenta cuando trabajas tanto los factores técnicos como la intención de búsqueda."
La IA captura: «posicionamiento orgánico», «arquitectura web optimizada», «contenido relevante», «visibilidad en buscadores», «intención de búsqueda». Vector denso y rico.
📝 Conclusión de Ogro Verde SEO
La semántica humana es rica, contextual y subjetiva. Cada palabra cuenta.
La semántica SEO es algebraica: las palabras tienen un peso numérico. Las stopwords pesan casi cero.
La semántica GEO es vectorial: las palabras se convierten en números. Las stopwords apenas modifican el vector.
Si quieres que Google te entienda, preocúpate por las palabras clave exactas y elimina stopwords de tus URLs.
Si quieres que ChatGPT te cite, preocúpate por los conceptos densos, los sinónimos y la riqueza semántica.
📌 Dato exclusivo de Ogro Verde SEO: Este análisis con código Python ha sido verificado con los modelos de spaCy y NLTK en mayo de 2026. Es un enfoque diferencial que no aplican la mayoría de agencias de SEO.
❓ Preguntas frecuentes
📌 Ejemplo: En la frase «El mejor SEO», la palabra «El» es una stopword y se ignora casi por completo.
📌 Dato: La similitud entre «El perro corre» y «Un perro corre» es >0.95 para la IA.
📌 Código:
doc1.similarity(doc2) te da la similitud numérica entre dos frases.
✅ En URLs y meta descripciones: Sí, elimínalas.
❌ En el texto del artículo: No. Escribe natural para humanos, pero entiende que esas palabras no te ayudarán a rankear.
📌 Regla: Las stopwords no perjudican, pero tampoco ayudan. No las fuerces ni las repitas sin necesidad.
📌 Enlace útil: En Ogro Verde SEO seguimos publicando guías técnicas sobre SEO y GEO. No dudes en consultar nuestro blog.
• Tokenización SEO: Divide la frase en palabras sueltas y asigna peso a cada una. Las stopwords pesan casi cero.
• Tokenización IA (GEO): Divide en subpalabras o tokens más pequeños y los convierte en vectores. Las stopwords existen, pero su peso vectorial es mínimo.
📌 Conclusión: En ambos casos, el resultado práctico es similar: las palabras vacías apenas importan.
✔ Para profesionales de SEO que quieren entender cómo funciona la IA generativa.
✔ Para programadores interesados en NLP y procesamiento de lenguaje natural.
✔ Para creadores de contenido que quieren optimizar para ChatGPT y Gemini.
✔ Para quienes usan Python y quieren ejemplos prácticos de tokenización y embeddings.
✘ No recomendado para principiantes absolutos sin conocimientos básicos de SEO.
✘ No para quienes buscan una guía básica de keyword stuffing.
Ayudamos a negocios a conseguir más visibilidad mediante una estructura web optimizada, estrategias SEO – GEO claras que generan tráfico y clientes potenciales.
📅 Última actualización: 23 de mayo de 2026
🔬 Verificado con Python 3.11, spaCy 3.7 y NLTK 3.8
Explicación línea por línea: Código Python para eliminar stopwords
Este anexo está diseñado para desarrolladores, programadores y profesionales técnicos que quieren entender exactamente cómo funciona el código Python que hemos usado en la guía principal.
Aquí explicamos una a una las líneas del código que elimina stopwords (palabras vacías) y simula lo que hacen Google y la IA al leer tu contenido.
• Línea 1: import nltk
• Línea 2: from nltk.corpus import stopwords
• Línea 3: from nltk.tokenize import word_tokenize
• Líneas 5-8: Descargar recursos
• Línea 11: La frase de ejemplo
• Línea 14: Tokenizar
• Línea 17: Cargar stopwords
• Línea 20: Eliminar stopwords (la más compleja)
• Líneas 22-23: Mostrar resultados
• Diagrama de flujo visual
• Preguntas frecuentes del código
📦 Línea 1: import nltk
Importa la librería NLTK (Natural Language Toolkit) completa a tu entorno de Python.
«Trae todas las herramientas de procesamiento de lenguaje natural a mi programa.»
NLTK es una de las librerías más populares para trabajar con texto. Contiene herramientas para tokenizar, eliminar stopwords, analizar sentimientos, y mucho más.
Es como encender tu ordenador. Sin esta línea, el resto del código no funciona.
📚 Línea 2: from nltk.corpus import stopwords
Importa exclusivamente la lista de stopwords (palabras vacías) desde el corpus de NLTK.
«Del conjunto de textos de NLTK, tráeme solo la lista de palabras vacías.»
Las stopwords son palabras como «el», «la», «de», «y», «un». Este comando carga esa lista específica para poder usarla después.
Es como pedirle a un bibliotecario: «De toda la biblioteca, tráeme solo el diccionario de palabras que no sirven para buscar.»
✂️ Línea 3: from nltk.tokenize import word_tokenize
Importa la función que divide una frase en palabras individuales (tokens).
«De las herramientas de tokenización, tráeme la que separa por palabras.»
Convierte una frase como «El perro corre» en una lista:
['El', 'perro', 'corre'].
Es como cortar una cadena de salchichas en trozos individuales. La frase es la cadena, las palabras son los trozos.
⬇️ Líneas 5-8: Descargar recursos
Descarga los archivos que NLTK necesita para funcionar correctamente.
| Código | ¿Qué descarga? | ¿Para qué sirve? |
|---|---|---|
nltk.download('stopwords') |
Listas de stopwords en varios idiomas | Para poder usar stopwords.words('spanish') |
nltk.download('punkt') |
Modelo de tokenización | Para que word_tokenize sepa separar palabras |
nltk.download('punkt_tab') |
Versión optimizada de punkt | Misma función pero más rápido (opcional) |
📝 Línea 11: La frase de ejemplo
Crea una variable llamada frase y le asigna el texto «El mejor contenido de SEO para tu web».
«A partir de ahora, cuando diga
frase me refiero a este texto.»
Es el texto de ejemplo sobre el que aplicamos el análisis. Puedes cambiarlo por cualquier otra frase que quieras probar.
Es como poner un nombre a un objeto. «Esta caja se llamará
frase y dentro tiene este texto.»
✂️ Línea 14: Tokenizar
Convierte la frase en una lista de palabras individuales (tokens).
«Aplica el separador de palabras a la frase, usando las reglas del idioma español, y guarda el resultado en
tokens.»
['El', 'mejor', 'contenido', 'de', 'SEO', 'para', 'tu', 'web']
language='spanish':Indica a NLTK que use las reglas de tokenización específicas para español (por ejemplo, sabe que «del» es una sola palabra).
🚫 Línea 17: Cargar stopwords en español
Carga la lista de stopwords (palabras vacías) en español y la convierte en un set (conjunto).
«Del paquete de stopwords, tráeme solo las del idioma español, conviértelas en un conjunto único y guárdalas en
stop_words.»
stop_words?Alrededor de 300 palabras como:
'el', 'la', 'los', 'las', 'un', 'una', 'de', 'y', 'a', 'para', 'por', 'tu'...
Es como una lista, pero más rápida para buscar y no permite duplicados.
🔧 Línea 20: Eliminar stopwords (la más compleja)
Filtra la lista de palabras eliminando las que sean stopwords o no sean alfabéticas.
🎯 Desglose de esta línea pieza por pieza:
| Parte del código | Significado |
|---|---|
tokens_limpios = |
Crea una variable nueva llamada tokens_limpios |
[ ... ] |
Todo lo de dentro se convierte en una lista |
for token in tokens |
Itera (recorre) sobre cada palabra de la lista tokens |
token.lower() |
Convierte la palabra a minúsculas (para que «El» y «el» sean iguales) |
not in stop_words |
Comprueba si NO está en la lista de stopwords |
token.isalpha() |
Comprueba si la palabra solo tiene letras (ej: «40» no pasaría) |
['mejor', 'contenido', 'SEO', 'web']¿Por qué se pierde «el», «de», «para», «tu»? Porque son stopwords.
¿Por qué se conserva «SEO»? Porque tiene letras y no es stopword.
🖨️ Líneas 22-23: Mostrar resultados
Muestra en pantalla los resultados del análisis.
print("Tokens originales:", tokens)→ Muestra:
Tokens originales: ['El', 'mejor', 'contenido', 'de', 'SEO', 'para', 'tu', 'web']
print("Tokens sin stopwords:", tokens_limpios)→ Muestra:
Tokens sin stopwords: ['mejor', 'contenido', 'SEO', 'web']
📊 Diagrama de flujo visual
«El mejor contenido de SEO para tu web»
word_tokenize()
['El', 'mejor', 'contenido', 'de', 'SEO', 'para', 'tu', 'web']
isalpha()
['mejor', 'contenido', 'SEO', 'web']
❓ Preguntas frecuentes sobre el código
punkt_tab?
stopwords.words('spanish'), puedes escribir:stop_words = {'el', 'la', 'los', 'y', 'de'} (las que tú quieras).
token.isalpha() la mantiene porque solo tiene letras.
punkt y word_tokenize?
punkt es el modelo que sabe las reglas. word_tokenize es la función que aplica esas reglas.
🧪 Prueba tú mismo
Cambia la frase de ejemplo por cualquier otra y observa cómo cambian los resultados:
frase = "La inteligencia artificial está cambiando el SEO para siempre"
Resultado después del filtro:
['inteligencia', 'artificial', 'cambiando', 'SEO', 'siempre']
Las palabras «La», «está», «el», «para» han desaparecido. Son stopwords.
📌 Conclusión del anexo
Este código es una simulación de lo que hacen Google y la IA cuando leen tu contenido:
- Tokenizan (dividen en palabras o subtokens)
- Ignoran stopwords (palabras sin carga semántica)
- Se quedan con los términos clave (sustantivos, verbos específicos, adjetivos importantes)
Si quieres que Google o la IA te entiendan, escribe pensando en qué palabras clave quieres que se queden después de este filtro natural.
Ayudamos a negocios a conseguir más visibilidad mediante una estructura web optimizada, estrategias SEO – GEO claras que generan tráfico y clientes potenciales.
📅 Última actualización: 23 de mayo de 2026
🔬 Verificado con Python 3.11, spaCy 3.7 y NLTK 3.8
