Medición de Similitud Semántica con WordNet en Python
Clase 20 de 24 • Curso de Fundamentos de Procesamiento de Lenguaje Natural con Python y NLTK
Contenido del curso
Fundamentos con NLTK
- 4

Procesamiento de Lenguaje Natural con Python en Google Colab
11:08 min - 5

Expresiones Regulares en Python: Patrones de Búsqueda Avanzados
10:14 min - 6

Tokenización de Texto con Expresiones Regulares en Python
10:03 min - 7

Estadística para Procesamiento del Lenguaje: Riqueza Léxica y Métricas
13:03 min - 8

Cálculo de frecuencias con NLTK y diccionarios en Python
05:59 min - 9

Filtrado y Visualización de Frecuencias de Palabras con NLTK y NumPy
17:30 min - 10

Estadísticas de Ennegramas y Colocaciones en Textos
04:26 min - 11

Extracción de Ngramas y Bigramas con NLTK en Python
11:25 min - 12

Análisis de Colocaciones con NLTK y Pandas en Python
16:17 min - 13

Visualización de Colocaciones en Textos con Pandas y Plotly
09:19 min - 14

Identificación de Colocaciones en Textos con NLTK y PMI
09:09 min - 15

Recursos Léxicos: Uso y Aplicación en Procesamiento del Lenguaje
02:46 min - 16

Recursos Léxicos en Python: Vocabularios, Frecuencias y Stopwords
09:19 min - 17

Traducción de palabras con Swadesh en procesamiento de lenguaje natural
05:00 min - 18

Uso de WarNet para Procesamiento del Lenguaje Natural
04:50 min - 19

Análisis de Sinsets e Hipónimos con NLTK y WordNet en Google Colab
17:53 min - 20

Medición de Similitud Semántica con WordNet en Python
Viendo ahora - 21

Extracción y Procesamiento de Texto desde Páginas Web con NLTK
13:36 min - 22

Organización de Código en Google Colab con Funciones y Módulos
05:50 min - 23

Funciones y Buenas Prácticas en Google Colab y Python
12:57 min
Perspectivas de lo que viene
¿Cómo se mide la similitud semántica usando WordNet?
En el fascinante mundo del procesamiento del lenguaje natural, una tarea esencial es la medición de la similitud semántica entre palabras. WordNet, una base de datos léxica, se convierte en una herramienta invaluable para esta tarea al permitir calcular la distancia semántica basándose en sinónimos y conceptos asociados a las palabras. Vamos a explorar cómo podemos utilizar WordNet para este propósito, con un ejercicio sencillo y práctico utilizando Python.
¿Cómo definir una función para mostrar sinsets?
Para comenzar a trabajar con WordNet, primero necesitamos una función en Python que nos permita explorar los sinsets, o conjuntos de sinónimos, relacionados con una palabra. Aquí te mostramos cómo definir dicha función en un notebook de Google Colab.
import nltk
from nltk.corpus import wordnet as wn
# Función para mostrar sinsets
def show_synset(word, language='spa'):
# Crear lista de sinsets
ss = wn.synsets(word, lang=language)
for syn in ss:
print(f'{syn.name()} - {syn.definition()}')
for lemma in syn.lemmas():
print(f'* {lemma.name()}')
# Retorne el objeto SS
return ss
Esta función show_synset toma como argumento una palabra y busca sus sinsets en español, mostrando su nombre, definición y variantes de palabras.
¿Cómo calcular sinsets y medir similitud?
Uso de show_synset
Podemos usar la función creada show_synset para explorar sinsets de diferentes palabras de interés. Por ejemplo, si queremos calcular los sinsets de "perro":
sinsets_perro = show_synset("perro")
Lo interesante es que, aunque configuramos para buscar en español, los resultados se mapean en inglés debido al núcleo de WordNet.
Medición de similitud semántica
Para medir la similitud semántica entre palabras, primero necesitamos elegir sinsets específicos que representen el contexto deseado para cada palabra:
- Seleccionamos el sinset "dog" para "perro"
- Seleccionamos el sinset "cat" para "gato"
- Seleccionamos el sinset más adecuado para "animal" con el significado de organismo vivo.
Cálculo de la distancia
La similitud se calcula usando la función path_similarity, que mide los vértices que separan los sinsets en el grafo:
# Definición de sinsets específicos
perro = sinsets_perro[0] # suposición de que el primer elemento es el adecuado
gato = show_synset("gato")[0]
animal = show_synset("animal")[0]
# Cálculo de similitud de 'animal' con 'perro'
similaridad_animal_perro = animal.path_similarity(perro)
print(similaridad_animal_perro)
# Cálculo de similitud de 'animal' con 'gato'
similaridad_animal_gato = animal.path_similarity(gato)
print(similaridad_animal_gato)
Los valores de similitud están entre 0 y 1, donde 1 significa total similitud (idéntico sinset), mientras que valores menores indican menor similitud.
¿Por qué es útil esta métrica?
La capacidad de medir similitudes semánticas tiene múltiples aplicaciones:
- Análisis de textos: Útil para entender relaciones semánticas en documentos.
- Motores de recomendación: Para sugerir elementos relacionados semánticamente.
- Traducción automática: Mejora en la precisión mediante la comprensión contextual.
- Sistemas de búsqueda semántica: Mejora de resultados de búsqueda al entender la intención detrás de las palabras.
¡Explorar WordNet es solo el comienzo! Continúa profundizando en estas técnicas, y verás cómo revolucionan el acercamiento al lenguaje humano.