【问题标题】:Get date when a word officially entered the English dictionary [closed]获取单词正式进入英语词典的日期[关闭]
【发布时间】:2014-04-28 11:31:54
【问题描述】:

我正在尝试跟踪不同单词进入英语词典(Oxford、Merriam-Webster 等)的日期

理想情况下,我希望找到一个 API,这样如果我发送“自拍”,我会在回复中返回“2013”​​,但我认为这些数据不是很常见,甚至不太容易访问.

我看过:

但似乎两者都没有提供对这些数据的访问权限。

我正在使用python,并且还查看了pypi.python.org,但找不到任何可以解决此问题的模块。

看起来我可能只需要手动收集我正在寻找的数据,但在此之前我想看看是否有人知道更好的方法来解决这个问题。

【问题讨论】:

  • 这是一个非常具体的任务,与编程没有太大关系。您只需要找到一些可以共享它的 API。例如,柯林斯词典确实有此信息:collinsdictionary.com/dictionary/english/tank(词源部分),但未指定此信息是否通过 API 返回。您可以尝试联系他们。
  • 谢谢安德烈,这很有帮助。你是对的,这是我认为可以接受的 SO 问题的边界。你认为在别的地方问会更好吗?我环顾四周,但没有看到更适合的 SE 站点。就是说,如果有人认为应该无论如何都应该移动它。
  • 正如我所指出的,两个字典(它们的网络版本)都包含这些数据。所以第一个问题是他们是否通过 API 返回它。我在他们的文档中找不到任何参考。我认为你最好在一些语言学论坛上提问。
  • 好的,会试试的。如果我发现了什么,我会返回并发布答案。

标签: python linguistics


【解决方案1】:

这是一个检索单词的基本脚本。如果一个词有多个定义,它只选择一个。

import re
import urllib2

# Import Custom libraries
from BeautifulSoup import BeautifulSoup

def render_oxford_uri(term):
    '''
    Render the appropriate Oxford request uri
    '''
    base_url = "http://www.oxforddictionaries.com/definition/english/"
    url = base_url + ("%s?q=%s" % (re.sub("\s+", "-", term), re.sub("\s+", "+", term)))
    return url

def get_words(*args):
    '''
    Oxford dictionary word scraper
    '''
    ret_list = []
    for term in args:
        request_uri = render_oxford_uri(term)
        request = urllib2.Request(request_uri, None, {})

        try:
            response = urllib2.urlopen(request)
            the_page = response.read()
        except Exception:
            the_page = ""

        if the_page:
            pool   = BeautifulSoup(the_page)
            result = pool.find("div", attrs={"class" : "entryPageContent"})

            if result:
                term        = result.find("h2"  , attrs={"class" : "pageTitle"})
                speech_part = result.find("span", attrs={"class" : "partOfSpeech"})
                definition  = result.find("span", attrs={"class" : "definition"})
                date        = result.find("span", attrs={"class" : "date"})

                cur_dict = \
                {
                    "Term"           : term.text,
                    "Part of Speech" : speech_part.text,
                    "Definition"     : definition.text,
                    "Date"           : date.text,
                }
                ret_list += [cur_dict]

    return ret_list

if __name__ == "__main__":
    print get_words("selfie", "vapid")

【讨论】:

    猜你喜欢
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 2012-03-03
    • 2011-01-13
    • 2011-05-27
    • 2016-11-19
    • 2015-01-03
    相关资源
    最近更新 更多