维基百科中的文章摘要
Article summarization in wikipedia
Wikipedia 在使用其搜索功能时为大多数文章提供文章摘要(请参见下面的屏幕截图)。我看了各种文章,找不到原文中的文字;既不在渲染页面也不在编辑部分的元数据中。
现在,我有两个问题:
维基百科如何显示这些摘要?这些预选文本是由社区输入的,还是有任何底层 ML 算法来总结文章?对于前者,您能指出这些数据的来源吗?如果是后者,算法是否已经开源?
维基百科 API 是否支持检索给定文章的这些摘要?
对于大多数维基百科条目,通常可以访问 DBpedia 上的相关页面。对于此示例 pizza、http://dbpedia.org/page/Pizza
这还具有可以通过编程方式访问的好处。大多数都有摘要。
我找到了问题的答案。这些摘要来自 Wikidata,它是 Wikipedia 的姊妹项目。根据Wikidata's Wikipedia page:
Wikidata is a collaboratively edited knowledge base operated by the Wikimedia Foundation. It is intended to provide a common source of data which can be used by Wikimedia projects such as Wikipedia, and by anyone else, under a public domain license.
例如,披萨的维基数据页面是 https://www.wikidata.org/wiki/Q177. It has its own API which is described in https://www.wikidata.org/w/api.php。
您正在查看的简短描述是维基数据描述。 REST API summary endpoint 响应中还有 description
属性 以及更详细的 extract
、页面图像和一堆信息。
要解决这个问题,可以使用Wikipedia-API and 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.
这是一个老问题,但之前的答案不再完全正确。历史和现状错综复杂。
维基数据包含 维基数据项的描述。维基数据项通常 link 到 大约 相同主题的维基百科文章。一些 developers/managers 做出了一个善意但不明智的决定,即获取维基数据的内部项目描述并将其作为文章描述添加到维基百科上。他们没有费心向维基百科社区核实这个想法是否有任何问题。在大多数情况下,结果看起来是正确的,但在其他情况下,它是无法修复的错误。它还引发了其他问题。
这已在英文维基百科上修复。当您单击编辑 link 时,您现在通常会发现这些描述存储在页面本身中,就在顶部附近。它存储在 {{short description|blah blah blah}} 模板中。在某些情况下,某些其他模板可能会生成临时自动描述。在这种情况下,或者如果还没有描述,您可以在文章顶部添加 {{short description|blah blah blah}}。人工编写的描述将优先,覆盖任何自动生成的描述。
请注意,截至今天,该问题尚未在其他语言的维基百科上得到解决。目前没有在其他地方修复它的积极计划。原因太长,太跑题了,就不在这里解释了。希望它会在某个时候完成。在其他语言的维基百科上,您目前仍然需要使用维基数据 API,如其他回复中所述。请注意,它们实际上并不是对文章的描述,这可能会导致描述奇怪或不准确。
具有讽刺意味的是:在实践中,维基数据几乎使用英语作为定义宇宙中概念的唯一真实语言。如果某种语言的某些概念与英语不完全一致,维基数据几乎会将另一种语言视为无关紧要或错误的。这意味着维基数据描述在英语维基百科上最准确的可能性最高,而其他语言的错误描述率更高。他们只修复了最不需要修复的语言。因为原因。
Wikipedia 在使用其搜索功能时为大多数文章提供文章摘要(请参见下面的屏幕截图)。我看了各种文章,找不到原文中的文字;既不在渲染页面也不在编辑部分的元数据中。
现在,我有两个问题:
维基百科如何显示这些摘要?这些预选文本是由社区输入的,还是有任何底层 ML 算法来总结文章?对于前者,您能指出这些数据的来源吗?如果是后者,算法是否已经开源?
维基百科 API 是否支持检索给定文章的这些摘要?
对于大多数维基百科条目,通常可以访问 DBpedia 上的相关页面。对于此示例 pizza、http://dbpedia.org/page/Pizza
这还具有可以通过编程方式访问的好处。大多数都有摘要。
我找到了问题的答案。这些摘要来自 Wikidata,它是 Wikipedia 的姊妹项目。根据Wikidata's Wikipedia page:
Wikidata is a collaboratively edited knowledge base operated by the Wikimedia Foundation. It is intended to provide a common source of data which can be used by Wikimedia projects such as Wikipedia, and by anyone else, under a public domain license.
例如,披萨的维基数据页面是 https://www.wikidata.org/wiki/Q177. It has its own API which is described in https://www.wikidata.org/w/api.php。
您正在查看的简短描述是维基数据描述。 REST API summary endpoint 响应中还有 description
属性 以及更详细的 extract
、页面图像和一堆信息。
要解决这个问题,可以使用Wikipedia-API and 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.
这是一个老问题,但之前的答案不再完全正确。历史和现状错综复杂。
维基数据包含 维基数据项的描述。维基数据项通常 link 到 大约 相同主题的维基百科文章。一些 developers/managers 做出了一个善意但不明智的决定,即获取维基数据的内部项目描述并将其作为文章描述添加到维基百科上。他们没有费心向维基百科社区核实这个想法是否有任何问题。在大多数情况下,结果看起来是正确的,但在其他情况下,它是无法修复的错误。它还引发了其他问题。
这已在英文维基百科上修复。当您单击编辑 link 时,您现在通常会发现这些描述存储在页面本身中,就在顶部附近。它存储在 {{short description|blah blah blah}} 模板中。在某些情况下,某些其他模板可能会生成临时自动描述。在这种情况下,或者如果还没有描述,您可以在文章顶部添加 {{short description|blah blah blah}}。人工编写的描述将优先,覆盖任何自动生成的描述。
请注意,截至今天,该问题尚未在其他语言的维基百科上得到解决。目前没有在其他地方修复它的积极计划。原因太长,太跑题了,就不在这里解释了。希望它会在某个时候完成。在其他语言的维基百科上,您目前仍然需要使用维基数据 API,如其他回复中所述。请注意,它们实际上并不是对文章的描述,这可能会导致描述奇怪或不准确。
具有讽刺意味的是:在实践中,维基数据几乎使用英语作为定义宇宙中概念的唯一真实语言。如果某种语言的某些概念与英语不完全一致,维基数据几乎会将另一种语言视为无关紧要或错误的。这意味着维基数据描述在英语维基百科上最准确的可能性最高,而其他语言的错误描述率更高。他们只修复了最不需要修复的语言。因为原因。