2011-05-23 17 views
5

estoy en las primeras etapas del diseño de una serie de simples juegos de palabras que espero que me ayude a aprender nuevas palabras. Una parte crucial de las ideas que tengo es un diccionario totalmente analizable; Quiero poder usar expresiones regulares para buscar palabras dadas en el diccionario y extraer otros bits de información (por ejemplo, definición, tipo (sustantivo/verbo ...), sinónimos, antónimos, citas que demuestran la palabra en uso, etc.) . Actualmente tengo Wordbook (aplicación Mac) que me parece bien, pero no he descubierto si puedo analizarlo usando un script de Python. Asumo que no puedo, y me preguntaba si alguien sabe de un diccionario razonable que permita esto. Idealmente, haría todo esto independientemente de internet.diccionario totalmente apta para su procesamiento/tesauro

Gracias

Respuesta

7

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 
... 
+0

Gracias por las sugerencias y código. Parece el tipo de cosa que estoy buscando, así que investigaré más a fondo. –

2

que yo sepa, dictionary.com ofrece una API gratuita para uso no comercial here. Es posible que pueda extraer algunos de los datos de Internet.

Cuestiones relacionadas