Подставляя слова для синонимов - PullRequest
2 голосов
/ 20 марта 2012

Недавно я пытался создать программу на Python, которой вы даете слово, и она перечисляет все ее синонимы.Вот код, который я использую:

from urllib import quote_plus
import urllib2
import re

def get_search_result(key):
    page = urllib2.urlopen('http://www.synonyms.net/synonym/%s'%quote_plus(key)).read()
    words_ = []
    words = []
    for i in [re.sub('<.*?>', '', i) for i in re.findall('Synonyms:&nbsp;(.*?)Antonyms', page)]:
        words_.extend(i.split(', '))
    for i in words_:
        if i not in words:
            words.append(i)
    return words

if __name__ == '__main__':
    res = get_search_result('sack')
    print res, len(res)

Дело в том, что пока он работает, он невероятно медленный.Мне потребовалась минута, чтобы ответить за меня.Мой вопрос: есть ли лучший способ сделать это?Прямо сейчас он использует synonyms.net и проверяет HTML страницы.Проблема в том, что synonyms.net сам по себе работает медленно.

Я изучил synonym.net API .Казалось, что это именно то, что мне нужно, так как это было очень быстро (вернул список за 0,23 секунды).Единственная проблема заключается в том, что внизу страницы мелким шрифтом написано: «Служба Synonyms API бесплатна для выполнения до 1000 запросов в день».Теперь это обходится, как говорится, если вы покупаете продукт.Проблема в том, что покупка чего-то требует денег, и я действительно не хочу платить 10 долларов в месяц за программу, которая дает мне синонимы.

Я также изучил http://thesaurus.com. Поскольку кодгибкий, я быстро изменил его, чтобы использовать это.Это было лучше, всего 10 секунд, чтобы ответить.Однако это все еще не подходит.Thesaurus.com не имеет API для использования, поскольку быстрый поиск на сайте доказал.Теперь окончательное решение, которое гарантированно сработает, - создать мой собственный список синонимов, а затем создать программу для его анализа.Однако этот вариант кажется грязным и не очень выгодным.У кого-нибудь есть альтернативы, которые будут хотя бы быстрее 10 секунд?

Заранее спасибо!

1 Ответ

0 голосов
/ 20 марта 2012

Повторно публикуя мой комментарий, поскольку он, похоже, решает проблему,

thesaurus.com также имеет m-версию на m.dictionary.com / t , использование которой должно ускоритьИнтернет-трафик и использование мобильных версий также значительно упрощают анализ HTML.

...