WordNet es una gran base de datos léxica del inglés. Los sustantivos, verbos, adjetivos y adverbios se agrupan en conjuntos de sinónimos cognitivos (synsets), cada uno de los cuales expresa un concepto distinto. Los synsets están interconectados por medio de relaciones conceptuales, semánticas y léxicas.
La estructura de WordNet lo convierte en una herramienta útil para la lingüística computacional y el procesamiento del lenguaje natural.
WordNet superficialmente se parece a un diccionario de sinónimos, ya que agrupa palabras según su significado. Sin embargo, hay algunas distinciones importantes.
- En primer lugar, WordNet interconecta no solo las formas de las palabras (strings de letras), sino también los sentidos específicos de las palabras. Como resultado, las palabras que se encuentran muy cerca unas de otras en la red se desambiguan semánticamente.
- En segundo lugar, WordNet etiqueta las relaciones semánticas entre palabras, mientras que las agrupaciones de palabras en un diccionario de sinónimos no siguen ningún patrón explícito que no sea la similitud de significado.
# First, you're going to need to import wordnet: from nltk.corpus import wordnet # Then, we're going to use the term "program" to find synsets like so: syns = wordnet.synsets("program") # An example of a synset: print(syns[0].name()) # Just the word: print(syns[0].lemmas()[0].name()) # Definition of that first synset: print(syns[0].definition()) # Examples of the word in use in sentences: print(syns[0].examples())
El resultado será el siguiente:
plan.n.01
planificar
una serie de pasos a realizar o metas a cumplir
[‘redactaron un plan de seis pasos’, ‘discutieron planes para una nueva emisión de bonos’]
A continuación, ¿cómo podemos discernir los sinónimos y los antónimos de una palabra? Los lemas serán sinónimos, y luego puede usar .antonyms para encontrar los antónimos de los lemas. Como tal, podemos llenar algunas listas como:
import nltk from nltk.corpus import wordnet synonyms = [] antonyms = [] for syn in wordnet.synsets("good"): for l in syn.lemmas(): synonyms.append(l.name()) if l.antonyms(): antonyms.append(l.antonyms()[0].name()) print(set(synonyms)) print(set(antonyms))
El resultado será dos conjuntos de sinónimos y antónimos
{‘beneficioso’, ‘justo’, ‘vertical’, ‘completamente’, ‘en_fuerza’, ‘bien’, ‘hábil’, ‘hábil’, ‘sonido’, ‘impecable’ , ‘experto’, ‘competente’, ‘en efecto’, ‘honorable’, ‘experto’, ‘seguro’, ‘mercancía’, ‘estimable’, ‘sólidamente’, ‘correcto’, ‘respetable’, ‘bueno’, ‘ serio’, ‘maduro’, ‘saludable’, ‘querido’, ‘practicado’, ‘bondad’, ‘seguro’, ‘efectivo’, ‘virgen’, ‘confiable’, ‘sin descomponer’, ‘honesto’, ‘completo’ , ‘cerca’, ‘comercio_bueno’} {‘mal’, ‘maldad’, ‘malo’, ‘maldad’, ‘enfermo’}
Ahora, comparemos el índice de similitud de dos palabras
import nltk from nltk.corpus import wordnet # Let's compare the noun of "ship" and "boat:" w1 = wordnet.synset('run.v.01') # v here denotes the tag verb w2 = wordnet.synset('sprint.v.01') print(w1.wup_similarity(w2))
Salida:
0.857142857143
w1 = wordnet.synset('ship.n.01') w2 = wordnet.synset('boat.n.01') # n denotes noun print(w1.wup_similarity(w2))
Salida:
0.9090909090909091
Este artículo es una contribución de Pratima Upadhyay . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA