我最近一直在尝试创建一个 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: (.*?)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 的解析更加容易。
关于python - 用同义词替换单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9779559/