.
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:
-
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.
-
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.
-
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.
-
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.
-
if not union:
:
- Si la unión está vacía (ambos textos
están vacíos), la similitud es 0.
-
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.