【问题标题】:What is the best way to expand the wikitexts of a full Wikipedia dump?扩展完整维基百科转储的维基文本的最佳方法是什么?
【发布时间】:2021-06-08 21:15:48
【问题描述】:

以 XML 格式download dumps of Wikipedia 很容易。然而,文章的内容是用维基文本编写的,它有一个模板系统。要从这些转储中提取干净的全文,有必要扩展这些模板。 Wikipedia provides an API 这样做,但它不适合扩展整个转储。可以找到几个脚本来处理 wikitext,such as this one written in python,但它们似乎都已经过时或者根本不处理模板。解决此问题的另一种方法是在计算机上运行 Wikimedia 并使用 API:Expandtemplates,但这似乎是一个相当麻烦的解决方案。最后,HTML 转储也存在,但我更喜欢使用扩展的 wikitexts,因为它可以更轻松地处理 wiki 链接、表格、部分等。

我的目标是提取干净的文本,同时保留维基链接并丢弃复杂的模板,例如信息框。你知道如何解决这个模板扩展问题吗?

【问题讨论】:

  • 这几乎是没有希望的,模板是它们自己的编程语言,而且没有一个有据可查的语言。如果仅仅丢弃模板是不够的(mwparserfromhell 可以做到这一点),最好的办法可能是制作或找到new parser 的 HTML 输出转储,并依靠其中编码的语义信息将其转换回纯文本带有链接注释。
  • 这可能是一个不错的选择,感谢您提供指向规范的链接。你知道我怎么能找到 HTML 转储吗? The latest dumps date back to 2008...
  • 另外,您知道有关用于模板的“编程语言”的良好文档吗?
  • 理论上,HTML 转储将可用some day soon。现在你必须抓取我认为的网站。模板记录在here 中,但这只是框架,它们可以包含几乎任何东西,从从另一个wiki 拉取内容的特殊命令到嵌入式Lua 代码。正如我所说,重新实现几乎没有希望。

标签: wikipedia template-engine wikitext


【解决方案1】:

我做了一个解决方案,使用Kiwix 从维基百科获取干净的文本。 Kiwix 生成的 HTML 对于我的目的来说似乎很容易解析。您可以查看代码here,但请注意它目前不可靠。

此外,您还可以下载此解决方案生成的转储文件(EnglishFrench)。

【讨论】:

  • 这太棒了!!
【解决方案2】:

我相信https://github.com/tatuylonen/wikitextprocessor/ 会做你想做的事:

这是一个 Python 包,用于处理 WikiMedia 转储文件 维基词典、维基百科等,用于数据提取、错误检查、 离线转换成 HTML 或其他格式,以及其他用途。钥匙 功能包括:

  • 解析转储文件,包括对并行处理页面的内置支持
  • 将整个页面转换为解析树的维基文本语法解析器
  • 从转储文件中提取模板定义和 Scribunto Lua 模块定义
  • 扩展选定的模板或所有模板,启发式识别需要在解析前扩展的模板是 合理可能(例如,发出表格开始和结束的模板 标签)
  • 处理和扩展 wikitext 解析器函数
  • 处理、执行和扩展 Scribunto Lua 模块(它们非常广泛地用于,例如,维基词典,例如用于生成 多种语言的 IPA 字符串)
  • 在解析前解析整体页面结构但随后在 页面的某些部分
  • 在扩展模板参数时从模板参数中捕获信息,因为模板参数通常包含有用的信息而不是 在扩展内容中可用。

【讨论】:

    猜你喜欢
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    • 1970-01-01
    • 2015-05-18
    • 2012-09-01
    相关资源
    最近更新 更多