1 usuario conectado

Similitud léxica. Ejercicio en Python

Comparte esto

 
Escribe una función en Python llamada similitud_lexica_basica que tome dos cadenas de texto como entrada y devuelva un valor entre 0 y 1 que represente la similitud léxica entre ellas. La similitud se calculará como la proporción de palabras únicas en ambas cadenas con respecto al total de palabras únicas en ambas.

.


Más ejercicios




Mostrar/Ocultar ejercicio resuelto


  Solución al Ejercicio: Similitud léxica

📋 Copiar código



def similitud_lexica_basica(texto1, texto2):
  """
  Calcula la similitud léxica básica entre dos cadenas de texto.

  Args:
    texto1: La primera cadena de texto.
    texto2: La segunda cadena de texto.

  Returns:
    Un valor entre 0 y 1 que representa la similitud léxica.
  """
  palabras1 = set(texto1.lower().split())
  palabras2 = set(texto2.lower().split())

  interseccion = palabras1.intersection(palabras2)
  union = palabras1.union(palabras2)

  if not union:
    return 0.0
  return len(interseccion) / len(union)

# Ejemplos de uso
texto_a = "Esta es una frase de ejemplo."
texto_b = "Esta es otra frase de ejemplo."
similitud1 = similitud_lexica_basica(texto_a, texto_b)
print(f"Similitud entre '{texto_a}' y '{texto_b}': {similitud1}")

texto_c = "El perro ladra."
texto_d = "El gato maulla."
similitud2 = similitud_lexica_basica(texto_c, texto_d)
print(f"Similitud entre '{texto_c}' y '{texto_d}': {similitud2}")

texto_e = "Texto idéntico."
texto_f = "Texto idéntico."
similitud3 = similitud_lexica_basica(texto_e, texto_f)
print(f"Similitud entre '{texto_e}' y '{texto_f}': {similitud3}")

texto_g = "Palabras únicas aquí."
texto_h = "Ninguna palabra en común."
similitud4 = similitud_lexica_basica(texto_g, texto_h)
print(f"Similitud entre '{texto_g}' y '{texto_h}': {similitud4}")

texto_i = ""
texto_j = "Algún texto."
similitud5 = similitud_lexica_basica(texto_i, texto_j)
print(f"Similitud entre '{texto_i}' y '{texto_j}': {similitud5}")

texto_k = ""
texto_l = ""
similitud6 = similitud_lexica_basica(texto_k, texto_l)
print(f"Similitud entre '{texto_k}' y '{texto_l}': {similitud6}")


Explicación del Código:

  1. def similitud_lexica_basica(texto1, texto2)::

    • Define una función llamada similitud_lexica_basica que toma dos cadenas de texto (texto1 y texto2) como entrada.
  2. palabras1 = set(texto1.lower().split()) y palabras2 = set(texto2.lower().split()):

    • Convierte ambos textos a minúsculas y los divide en listas de palabras usando split().
    • Luego, convierte estas listas en conjuntos (set). Los conjuntos almacenan solo elementos únicos, lo que nos da el vocabulario único de cada texto.
  3. interseccion = palabras1.intersection(palabras2):

    • Encuentra la intersección de los dos conjuntos de palabras, es decir, las palabras que están presentes en ambos textos.
  4. union = palabras1.union(palabras2):

    • Encuentra la unión de los dos conjuntos de palabras, es decir, todas las palabras únicas presentes en cualquiera de los dos textos.
  5. if not union::

    • Si la unión está vacía (ambos textos están vacíos), la similitud es 0.
  6. return len(interseccion) / len(union):

    • Calcula la similitud como la proporción del número de palabras comunes (en la intersección) con respecto al número total de palabras únicas (en la unión). El resultado será un valor entre 0 (ninguna palabra en común) y 1 (textos idénticos en términos de vocabulario).

Ejemplos de Uso:

Los ejemplos muestran cómo la función calcula la similitud léxica entre diferentes pares de cadenas de texto. Es una medida simple que se centra en la superposición del vocabulario.