Полностью разборный словарь / тезаурус - PullRequest
5 голосов
/ 24 мая 2011

Я нахожусь на ранней стадии разработки серии простых словесных игр, которые, я надеюсь, помогут мне выучить новые слова. Важнейшая часть идей, которые у меня есть, - это полностью разборный словарь; Я хочу иметь возможность использовать регулярные выражения для поиска в словаре по заданным словам и извлечения некоторых других битов информации (например, определение, тип (существительное / глагол ...), синонимы, антонимы, цитаты, демонстрирующие используемое слово и т. Д.) , В настоящее время у меня есть Wordbook (приложение для Mac), которое я нахожу в порядке, но я так и не понял, смогу ли я разобрать его с помощью скрипта Python. Я предполагаю, что не могу, и мне было интересно, если кто-нибудь знает разумный словарь, который позволит это. В идеале я бы делал все это независимо от интернета.

Спасибо

Ответы [ 3 ]

7 голосов
/ 24 мая 2011

nltk wordnet corpus предоставляет программный интерфейс для «большой лексической базы данных английских слов».Вы можете перемещаться по графу слов на основе различных отношений.Он соответствует требованиям для отображения «определения, части речи, синонимов, антонимов, цитат» и «из словаря, который идеально подходит для загрузки».

Другой вариант - загрузить последниеснимок данных Викисловаря и анализируйте их в формате, который вы можете использовать, но это может быть немного сложным (, если приличный парсер Викисловаря Python уже не существует ).пример распечатки некоторых атрибутов с использованием 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')

Вывод:

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
...
4 голосов
/ 24 мая 2011

Wordnik имеет Python API

2 голосов
/ 24 мая 2011

Насколько мне известно, dictionary.com предлагает бесплатный API для некоммерческого использования здесь .Возможно, вы сможете извлечь некоторые данные из Интернета.

...