1 usuario conectado

Detectar idioma. Ejercicio en Python

Comparte esto

 
Escribe una función en Python llamada detectar_idioma_simple que tome una cadena de texto como entrada y devuelva el idioma detectado ("español" o "inglés") basándose en la presencia de algunas palabras clave comunes en cada idioma. Si no se encuentran suficientes palabras clave para determinar el idioma, la función debería devolver "indeterminado".

Python


Más ejercicios




Mostrar/Ocultar ejercicio resuelto


  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:

  1. import re:

    • Importa el módulo re para trabajar con expresiones regulares.
  2. def detectar_idioma_simple(texto)::

    • Define una función llamada detectar_idioma_simple que toma una cadena de texto (texto) como entrada.
  3. texto_lower = texto.lower():

    • Convierte el texto a minúsculas para realizar una búsqueda sin distinción de capitalización.
  4. palabras_clave_espanol = [...] y palabras_clave_ingles = [...]:

    • Define listas de palabras clave comunes para español e inglés.
  5. contador_espanol = 0 y contador_ingles = 0:

    • Inicializa contadores para el número de palabras clave encontradas en cada idioma.
  6. 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.
  7. for palabra in palabras_clave_ingles::

    • Realiza el mismo proceso para las palabras clave en inglés, incrementando contador_ingles.
  8. 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.