NLTK WordNet: busque sinónimos de NLTK WordNet en Python
¿Qué es WordNet?
Wordnet es un lector de corpus NLTK, una base de datos léxica para inglés. Puede utilizarse para buscar el significado de palabras, sinónimos o antónimos. Se puede definir como un diccionario de inglés orientado semánticamente. Se importa con el siguiente comando:
from nltk.corpus import wordnet as guru
Encuentre sinónimos de NLTK WordNet en Python
Las estadísticas revelan que hay 155287 palabras y 117659 sinónimos conjuntos incluidos con English WordNet.
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__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', ' __ge__', '__getattr__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__reduce__' , '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__unicode__', '__weakref__', '_unload', 'subdir', 'unicode_repr']
Entendamos algunas de las funciones disponibles con Wordnet:
Sinset: También se le llama conjunto de sinónimos o colección de palabras sinónimas. Veamos un ejemplo
from nltk.corpus import wordnet syns = wordnet.synsets("dog") print(syns)
Salida:
[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 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 hipónimo es un tipo de concepto léxico.
Escribamos un programa usando pitón para encontrar sinónimos y antónimos de la palabra "activo" usando Wordnet.
from nltk.corpus import wordnet synonyms = [] 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', 'participando', 'vivo', 'activo'} - Sinónimo
{'estativo', 'pasivo', 'tranquilo', 'voz_pasiva', 'extinto', 'inactivo', 'inactivo'} - Antónimo
Explicación del código
- Wordnet es un corpus, por lo que se importa desde ntlk.corpus
- La lista de sinónimos y antónimos se considera vacía y se utilizará para agregar
- Los sinónimos de la palabra activo se buscan en el módulo synsets y se añaden a la lista de sinónimos. Se repite el mismo proceso para el segundo.
- La salida se imprime
Conclusión
WordNet es una base de datos léxica que ha sido utilizada por una importante motor de búsqueda. Desde WordNet, se puede calcular información sobre una palabra o frase determinada, como por ejemplo
- 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)
- holoónimos (las proteínas y los 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 de coordenadas, derivados, sentidos y más. Se utiliza para encontrar similitudes entre dos palabras cualesquiera. También contiene información sobre los resultados de la palabra relacionada. En pocas palabras, se puede tratar como un diccionario o un tesauro. Profundizando en Wordnet, se divide en cuatro subredes en total, como
- Sustantivo
- Verb
- Adjetivo
- Adverbio
Puede utilizarse 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 mucho más.
De la misma manera, puedes usar este corpus y moldearlo para que funcione con alguna funcionalidad dinámica. Esto es como un corpus listo para crear para usted. Puedes usarlo a tu manera.