【问题标题】:Article summarization in wikipedia维基百科中的文章摘要
【发布时间】:2017-10-25 20:43:57
【问题描述】:

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

现在,我有两个问题:

  1. 维基百科如何显示这些摘要?这些预先准备好的文本是社区输入的,还是有任何底层的机器学习算法来总结文章?在前者的情况下,你能指出这些数据的来源吗?如果是后者,算法是否开源了?

  2. Wikipedia API 是否支持检索给定文章的这些摘要?

【问题讨论】:

    标签: wikipedia wikipedia-api summarization


    【解决方案1】:

    这是一个老问题,但之前的答案不再完全正确。历史与现状错综复杂。

    维基数据包含维基数据项的描述。 Wikidata 项目通常链接到关于大约同一主题的 Wikipedia 文章。一些开发人员/经理做出了一个善意但不明智的决定,即获取 Wikidata 的内部项目描述并将它们贴在 Wikipedia 上,就好像它们是文章描述一样。他们懒得去维基百科社区检查这个想法是否有任何问题。在大多数情况下,结果看起来是正确的,但在其他情况下,它是无法修复的错误。它还引发了其他问题。

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

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

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

    【讨论】:

      【解决方案2】:

      对于大多数 Wikipedia 条目,通常可以访问 DBpedia 上的相关页面。对于这个带有 pizza 的示例,http://dbpedia.org/page/Pizza

      这还具有以编程方式访问的好处。其中大部分都有摘要。

      【讨论】:

      • DBpedia 从 Wikipedia 中抓取数据,并且不提供上面显示的摘要。维基百科搜索显示非常简短的摘要。
      【解决方案3】:

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

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

      例如,Pizza 的 Wikidata 页面是 https://www.wikidata.org/wiki/Q177。它有自己的 API,在 https://www.wikidata.org/w/api.php 中进行了描述。

      【讨论】:

      • 英文维基百科 API 的 wbgetentities API 模块下(以及其他地方)也提供了这些摘要。
      【解决方案4】:

      您正在查看的简短描述是 Wikidata 描述。在REST API summary endpoint 响应中还可以使用description 属性以及更详细的extract、页面图像和一堆信息。

      【讨论】:

        【解决方案5】:

        要解决这个问题,您可以使用Wikipedia-APInltk

        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.
        

        【讨论】:

          猜你喜欢
          • 2011-02-03
          • 1970-01-01
          • 2011-07-11
          • 1970-01-01
          • 2012-01-31
          • 2018-03-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多