El nltk wordnet corpus proporciona una interfaz de programación a un "gran base de datos léxica de las palabras en inglés". Puede navegar por el gráfico de palabras en función de una variedad de relaciones. Cumple con los requisitos para mostrar "definición, parte de la oración, sinónimos, antónimos, citas" y "de un diccionario que es ideal para descargar".
Otra opción sería la de descargar un recent snapshot of Wiktionary data y analizar en un formato que puede utilizar, pero esto puede ser un poco involucrados (unless a decent Python Wiktionary parser already exists).
Aquí es un ejemplo de impresión de algunos atributos utilizando Wordnet:
import textwrap
from nltk.corpus import wordnet as wn
POS = {
'v': 'verb', 'a': 'adjective', 's': 'satellite adjective',
'n': 'noun', 'r': 'adverb'}
def info(word, pos=None):
for i, syn in enumerate(wn.synsets(word, pos)):
syns = [n.replace('_', ' ') for n in syn.lemma_names]
ants = [a for m in syn.lemmas for a in m.antonyms()]
ind = ' '*12
defn= textwrap.wrap(syn.definition, 64)
print 'sense %d (%s)' % (i + 1, POS[syn.pos])
print 'definition: ' + ('\n' + ind).join(defn)
print ' synonyms:', ', '.join(syns)
if ants:
print ' antonyms:', ', '.join(a.name for a in ants)
if syn.examples:
print ' examples: ' + ('\n' + ind).join(syn.examples)
print
info('near')
Salida:
sense 1 (verb)
definition: move towards
synonyms: approach, near, come on, go up, draw near, draw close, come near
examples: We were approaching our destination
They are drawing near
The enemy army came nearer and nearer
sense 2 (adjective)
definition: not far distant in time or space or degree or circumstances
synonyms: near, close, nigh
antonyms: far
examples: near neighbors
in the near future
they are near equals
...
Gracias por las sugerencias y código. Parece el tipo de cosa que estoy buscando, así que investigaré más a fondo. –