python - 用同义词替换单词

标签 python regex api text-processing substitution

我最近一直在尝试创建一个 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 的解析更加容易。

关于python - 用同义词替换单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9779559/

相关文章:

javascript - JavaScript 中的动态与内联 RegExp 性能

api - 多线程 UI api 会是什么样子,它会提供什么优势?

facebook - 使用 facebook 2.0 获取好友列表

python - 有没有一种方法可以在不抓取的情况下从 PyPI 访问搜索结果?

python - 从 Python 中的公钥派生 SSH 指纹

javascript - 正则表达式匹配模式以 ':' 结尾但不包含它

javascript - 用于匹配 $tagname$ 形式的不完整标签的正则表达式

c# - 用于获取特定元素类型可用的元素类型列表和字段的自动化 API

python - Spyder 缺少对象检查器

python - 如何将转义字符串传递给 Python 中的 shell 脚本