代码之家  ›  专栏  ›  技术社区  ›  Javad

维基百科中的文章摘要

  •  1
  • Javad  · 技术社区  · 8 年前

    Wikipedia 使用其搜索功能时,为大多数文章提供文章摘要(请参阅下面的屏幕截图)。我看了很多文章,在原文中找不到文本;既不在呈现页面中,也不在编辑部分内的元数据中。

    现在,我有两个问题:

    1. 维基百科是如何显示这些摘要的?这些预先确定的文本是由社区输入的还是有任何潜在的ML算法来总结文章?对于前者,你能告诉我这些数据的来源地吗?对于后者,算法是否开源?

    2. 维基百科API是否支持检索给定文章的这些摘要?

    enter image description here

    5 回复  |  直到 8 年前
        1
  •  1
  •   A Wikipedia Editor    4 年前

    Wikidata包含 Wikidata项的描述 . 维基数据项通常链接到上的维基百科文章 大概 同样的话题。一些开发人员/经理做出了一个善意但不明智的决定,抓取Wikidata的内部项目描述,并将其放在维基百科上,就像它们是文章描述一样。他们没有费心向维基百科社区核实这个想法是否有任何问题。在大多数情况下,结果看起来是对的,但在其他情况下,它是不可纠正的错误。这也引发了其他问题。

    这是固定在英文维基百科上的。现在,当您单击编辑链接时,您通常会发现这些描述存储在页面本身的顶部附近。它存储在{{short description | blah blah}}模板中。在某些情况下,其他模板可能会生成临时的自动描述。在这种情况下,或者如果还没有描述,您可以在文章的顶部添加{short description | blah blah}}。人工书写的描述将优先于任何自动生成的描述。

    请注意,截至今天,这个问题还没有在其他语言的维基百科上得到解决。目前没有在其他地方修复它的积极计划。原因太长,太离题,无法在这里解释。希望它能在某个时候完成。在其他语言的维基百科上,您目前仍需要使用其他回复中解释的Wikidata API。请注意,它们实际上不是对文章的描述,这可能会导致奇怪或不准确的描述。

    讽刺的是:实际上,维基数据几乎使用英语作为定义宇宙中概念的真正语言。如果某种语言中的某些概念与英语不完全一致,Wikidata会将另一种语言视为无关紧要或错误。这意味着维基数据描述在英文维基百科上准确的可能性最高,其他语言的错误描述率更高。他们只修复了最不需要修复的语言。因为原因。

        2
  •  0
  •   Paco    8 年前

    对于大多数维基百科条目,人们通常可以访问DBpedia上的相关页面。对于本例 , http://dbpedia.org/page/Pizza

    这还具有可编程访问的优点。其中大多数都有摘要。

        3
  •  0
  •   Javad    8 年前

    我找到了问题的答案。这些总结来自Wikidata,它是Wikipedia的姊妹项目。根据 Wikidata's Wikipedia page :

    Wikidata是由Wikimedia基金会运营的一个协作编辑的知识库。它旨在提供一个公共数据源,可供维基百科等维基媒体项目使用,也可供任何其他人在公共领域许可下使用。

    https://www.wikidata.org/wiki/Q177 https://www.wikidata.org/w/api.php .

        4
  •  0
  •   Petr    8 年前

    您正在查看的简短描述是Wikidata描述。也可以通过 description 中的属性 REST API summary endpoint 回复以及更详细的内容 extract ,页面的图像和一堆信息。

        5
  •  0
  •   Martin Majlis    8 年前

    要解决此问题,可以使用 Wikipedia-API nltk .

    import wikipediaapi
    wiki = wikipediaapi.Wikipedia('en')
    pizza = wiki.page('Pizza')
    print(pizza.fullurl)
    print("Summary length: %d" % len(pizza.summary))
    
    # You can either pick first N characters or use some tokenizer
    from nltk.tokenize import sent_tokenize
    sentences = sent_tokenize(pizza.summary)
    print("Number of sentences: %d" % len(sentences))
    print(sentences[0])
    

    输出:

    https://en.wikipedia.org/wiki/Pizza
    Summary length: 1690
    Number of sentences: 16
    Pizza is a traditional Italian dish consisting of a yeasted flatbread typically topped with tomato sauce and cheese and baked in an oven.