WordNet con NLTK: encontrar sinónimos de palabras en Python

Tabla de contenido

¿Qué es Wordnet?

Wordnet es un lector de corpus NLTK, una base de datos léxica para inglés. Se puede utilizar para encontrar el significado de palabras, sinónimos o antónimos. Se puede definir como un diccionario de inglés de orientación semántica. Se importa con el siguiente comando:

from nltk.corpus import wordnet as guru

Las estadísticas revelan que hay 155287 palabras y 117659 conjuntos de sinónimos incluidos en WordNet en inglés.

Se pueden encontrar diferentes métodos disponibles con WordNet escribiendo dir (guru)

['_LazyCorpusLoader__args', '_LazyCorpusLoader__kwargs', '_LazyCorpusLoader__load', '_LazyCorpusLoader__name', '_LazyCorpusLoader__reader_cls', '__class__', '__delattr__', '__t__d__' __ge__ ',' __getattr__ ',' __getattribute__ ',' __gt__ ',' __hash__ ',' __init__ ',' __le__ ',' __lt__ ',' __module__ ',' __name__ ',' __ne__ ',' __new__ ',' __ne__ ',' __new__ ',' __ , '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__unicode__', '__weakref__', '_unload', 'subdir', 'unicode_repr']

Entendamos algunas de las funciones disponibles con wordnet:

Synset : También se denomina conjunto de sinónimos o colección de palabras sinónimo. Veamos un ejemplo

from nltk.corpus import wordnetsyns = wordnet.synsets("dog")print(syns)

Producción:

[Synset('dog.n.01'), Synset('frump.n.01'), Synset('dog.n.03'), Synset('cad.n.01'), Synset('frank.n.02'), Synset('pawl.n.01'), Synset('andiron.n.01'), Synset('chase.v.01')]

Relaciones léxicas : son relaciones semánticas que son recíprocas. Si existe una relación entre {x1, x2,… xn} y {y1, y2,… yn}, entonces también existe una relación entre {y1, y2,… yn} y {x1, x2,… xn}. Por ejemplo, Sinónimo es lo opuesto a antónimo o hiperónimos y el hipónimo es un tipo de concepto léxico.

Escribamos un programa usando Python para encontrar el sinónimo y antónimo de la palabra "activo" usando Wordnet.

from nltk.corpus import wordnetsynonyms = []antonyms = []for syn in wordnet.synsets("active"):for l in syn.lemmas():synonyms.append(l.name())if l.antonyms():antonyms.append(l.antonyms()[0].name())print(set(synonyms))print(set(antonyms))

La salida del código:

{'dinámico', 'luchando', 'listo para el combate', 'voz_activa', 'agente_activo', 'participante', 'vivo', 'activo'} - Sinónimo

{'estativo', 'pasivo', 'tranquilo', 'voz_pasiva', 'extinto', 'inactivo', 'inactivo'} - Antónimo

Explicación del código

  1. Wordnet es un corpus, por lo que se importa desde ntlk.corpus
  2. La lista de sinónimos y antónimos se toma como vacía y se utilizará para agregar
  3. Los sinónimos de la palabra activa se buscan en los sintetizadores del módulo y se agregan a la lista de sinónimos. El mismo proceso se repite para el segundo.
  4. La salida se imprime

Conclusión:

WordNet es una base de datos léxica que ha sido utilizada por un motor de búsqueda importante. Desde WordNet, se puede calcular información sobre una palabra o frase determinada, como

  • sinónimo (palabras que tienen el mismo significado)
  • hiperónimos (el término genérico utilizado para designar una clase de detalles (es decir, la comida es un desayuno), hipónimos (el arroz es una comida)
  • holónimos (proteínas, carbohidratos son parte de la comida)
  • merónimos (la comida es parte de la ingesta diaria de alimentos)

WordNet también proporciona información sobre términos coordinados, derivados, sentidos y más. Se utiliza para encontrar las similitudes entre dos palabras. También contiene información sobre los resultados de la palabra relacionada. En pocas palabras, uno puede tratarlo como diccionario o tesauro. Profundizando en wordnet, se divide en cuatro subredes totales, como

  1. Sustantivo
  2. Verbo
  3. Adjetivo
  4. Adverbio

Se puede utilizar en el área de la inteligencia artificial para el análisis de textos. Con la ayuda de Wordnet, puede crear su corpus para revisión ortográfica, traducción de idiomas, detección de spam y muchos más.

De la misma manera, puede usar este corpus y moldearlo para que funcione con alguna funcionalidad dinámica. Esto es como un corpus listo para hacer para usted. Puedes usarlo a tu manera.

Articulos interesantes...