2012-03-19 3 views
2

나는 최근에 단어를 제공하는 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 초 만에 목록을 되 돌렸던 것에 따라) 내가 필요로했던 정확하게 것 같았다. 유일한 문제는 페이지 하단의 작은 글씨로 '동의어 API 서비스는 하루에 최대 1,000 개의 쿼리에 무료로 사용할 수 있습니다.'라는 것입니다. 그들이 제품을 사면, 지금 말하면서, 그것이 우회됩니다. 문제는 물건을 사는 데 돈이 필요하다는 것과, 동의어를주는 프로그램에 대해 한 달에 10 달러를 지불하고 싶지 않다는 것입니다.

나는 또한 http://thesaurus.com을 들여다 보았다. 코드가 유연하기 때문에이를 사용하기 위해 신속하게 수정했습니다. 반응하는 데 10 초 밖에 걸리지 않는 것이 더 낫습니다. 그러나 여전히 적합하지 않습니다. Thesaurus.com에는 웹 사이트에 대한 빠른 검색이 입증 된 한 사용할 API가 없습니다. 이제는 작동하도록 보장 될 최종 솔루션은 내 동의어 목록을 만든 다음 구문 분석 프로그램을 작성하는 것입니다. 그러나이 옵션은 지저분하고별로 좋지 않습니다. 누구든지 다른 대안을 가지고 있습니까? 적어도 10 초 이상 빨라 졌습니까?

미리 감사드립니다. 이 문제를 해결하기 위해 보이기 때문에

+0

첫 번째 조언 : [HTML을 정규식으로 구문 분석하지 마십시오.] (http://stackoverflow.com/a/1732454/960195). 파이썬 HTML 구문 분석 라이브러리가 많이 있습니다. –

+2

분명히 동의어는 의미있는 방식으로 매우 빠르게 변하지 않을 것입니다. 그렇다면이 정보가 포함 된 텍스트 문서를 구입하고 해당 텍스트 파일에 대한 모든 쿼리를 수행하십시오. 또한 많은 단어에 대한 동의어 쿼리를 수행 할 수 있도록 확장해야하는 경우 [MRJob] (https://github.com/Yelp/mrjob)을 사용하여 작성하는 것이 좋습니다. – ely

+0

그래서 웹 사이트가 귀하의 응용 프로그램에 서비스를 제공하기를 원합니다. 귀하는 아무 것도 청구하지 않고 사이트 소유자의 수익을 창출하지 못합니까? 나는 단어의 동의어를 찾는 것이 중요한 과제라고 말하지는 않는다. (실제로는 그렇지 않다.) 아무 것도 자유롭지는 않다. 온라인 서비스 대신 오프라인 사전을 사용해보아야합니다. – Borealid

답변

0

는 인터넷 트래픽의 속도를해야 사용하고 또한 모바일 버전을 사용하여, m.dictionary.com/t에서

thesaurus.com는 또한 m-버전이, 내 댓글을 재개시는 구문 분석한다 HTML 훨씬 쉽게.