Solución al Ejercicio: Detectar idioma
📋 Copiar código
import re
def detectar_idioma_simple(texto):
"""
Intenta detectar el idioma de un texto basándose en palabras clave.
(Este es un método muy simplificado).
Args:
texto: La cadena de texto de entrada.
Returns:
El idioma detectado ("español", "inglés" o "indeterminado").
"""
texto_lower = texto.lower()
palabras_clave_espanol = ["hola", "mundo", "gracias", "por favor", "adiós", "sí", "no"]
palabras_clave_ingles = ["hello", "world", "thank you", "please", "goodbye", "yes", "no"]
contador_espanol = 0
for palabra in palabras_clave_espanol:
if re.search(r'\b' + re.escape(palabra) + r'\b', texto_lower):
contador_espanol += 1
contador_ingles = 0
for palabra in palabras_clave_ingles:
if re.search(r'\b' + re.escape(palabra) + r'\b', texto_lower):
contador_ingles += 1
if contador_espanol > contador_ingles:
return "español"
elif contador_ingles > contador_espanol:
return "inglés"
else:
return "indeterminado"
# Ejemplos de uso
texto1 = "Hola mundo, gracias por tu ayuda."
resultado1 = detectar_idioma_simple(texto1)
print(f"Idioma de '{texto1}': {resultado1}")
texto2 = "Hello world, thank you very much."
resultado2 = detectar_idioma_simple(texto2)
print(f"Idioma de '{texto2}': {resultado2}")
texto3 = "Sí, please."
resultado3 = detectar_idioma_simple(texto3)
print(f"Idioma de '{texto3}': {resultado3}")
texto4 = "No sé qué idioma es este."
resultado4 = detectar_idioma_simple(texto4)
print(f"Idioma de '{texto4}': {resultado4}")
texto5 = ""
resultado5 = detectar_idioma_simple(texto5)
print(f"Idioma de '': {resultado5}")
texto6 = "Goodbye mundo."
resultado6 = detectar_idioma_simple(texto6)
print(f"Idioma de '{texto6}': {resultado6}")
Explicación del Código:
-
import re
:
- Importa el módulo
re
para
trabajar con expresiones regulares.
-
def
detectar_idioma_simple(texto):
:
- Define una función llamada
detectar_idioma_simple
que toma una cadena de texto (texto
)
como entrada.
-
texto_lower = texto.lower()
:
- Convierte el texto a minúsculas para
realizar una búsqueda sin distinción de capitalización.
-
palabras_clave_espanol = [...]
y palabras_clave_ingles = [...]
:
- Define listas de palabras clave comunes
para español e inglés.
-
contador_espanol = 0
y contador_ingles = 0
:
- Inicializa contadores para el número de
palabras clave encontradas en cada idioma.
-
for palabra in
palabras_clave_espanol:
:
- Itera a través de las palabras clave en
español.
re.search(r'\b' +
re.escape(palabra) + r'\b', texto_lower)
: Busca la palabra clave
como una palabra completa (usando \b
para límites de
palabra) en el texto en minúsculas. re.escape()
se usa para
manejar cualquier carácter especial en la palabra clave.
- Si se encuentra la palabra clave, se
incrementa
contador_espanol
.
-
for palabra in
palabras_clave_ingles:
:
- Realiza el mismo proceso para las
palabras clave en inglés, incrementando
contador_ingles
.
-
if contador_espanol >
contador_ingles:
, elif contador_ingles >
contador_espanol:
, else:
:
- Compara los contadores. Si el contador
de español es mayor, se devuelve "español". Si el contador de inglés es
mayor, se devuelve "inglés". Si los contadores son iguales o ambos son
cero, se devuelve "indeterminado".
Ejemplos de Uso:
Los ejemplos muestran cómo la función intenta
detectar el idioma basándose en la presencia de las palabras clave definidas. Es
importante recordar que este es un método muy básico y puede dar resultados
incorrectos si el texto es corto, contiene palabras clave de ambos idiomas o no
contiene ninguna de las palabras clave definidas.
Para una detección de idioma real y precisa,
se utilizan bibliotecas especializadas como langdetect
.