Skip to main content
 首页 » 编程设计

python之用同义词替换单词

2025年05月04日7fff_TT

我最近一直在尝试创建一个 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 秒快?

提前致谢!

请您参考如下方法:

重新发布我的评论,因为它似乎可以解决问题,

thesaurus.com 在 m.dictionary.com/t 也有一个 m 版本,使用它应该可以加快互联网流量,使用移动版本也可以使 HTML 的解析更加容易。