日文维基百科20220820文字离线版&制作经验分享

目前为止我收集到的日文维基百科都比较旧了:

2013-11-19,词条数未知,Epwing 格式(公式正常)
2016-09-01,1698853,mdx 格式(公式无法显示)

再加上在论坛找东西时偶然看到了分享:i- - 词库制作交流区 - Dictionary-Making - 掌上百科 - PDAWIKI - Powered by Discuz!,萌生了制作离线版的想法。

不过由于技术水平和时间精力的限制,我制作的版本有如下问题,介意者慎下:

  1. 没有网页中的图片,mdd里面的图片是数学公式的
  2. 部分词条排版比较乱(比如サクラ今敏……,而日文维基百科20160901的这部分词条是正常的)
  3. 可能会存在比较严重的词条丢失问题(原因后面说明)

数据源来自维基官方,使用的是20220820的数据,共计1959774个词条。

百度网盘链接:https://pan.baidu.com/s/1cPMeMvGpg6Tg5pHhfiWDew?pwd=ef7i
提取码:ef7i
天翼云盘链接:https://cloud.189.cn/t/3qAFRrJ3iyYn
访问码:bwd6

接下来记录下自己制作时踩的坑,希望对后来人折腾这个有点帮助,遇到问题可以通过 NoHeartPen@outlook.com和我交流:)

制作的大致流程

到这里下载数据,注意是像jawiki-20220820-pages-articles.xml.bz2 这样以pages-articles.xml.bz2结尾,不是其他方式结尾的文件。

用解压工具解压前校验下 SHA1 的值,不要做了半天才发现文件不全。

推荐下载 7.zip,除了可以解压、计算 SHA1 值外,还可以用来处理报错的词条(不然可能要用Linux系统处理)。

打开W2T.exe,注意软件内置有分解功能,不用自己找第三方的工具拆分。

这个工具可能要在 Win7 环境才能正常运行。本人在 Win 10 和 Win11 环境下启动后均报错,而且安装了注册表文件也无法正常运行。

另外,部分 Win7 也会报错(可能是因为我找的系统文件被人精简过),不过有解决的办法,参考这里

如果没有 Win7 的电脑的话,创建虚拟机的时候,内存分配 2G 就够用了,但 CPU 尽量多分配点,因为可以同时运行多个程序来加速。单独的一个进程只需要下面一点资源。

可以每十个分解后的文件放在一个文件夹,然后各放一个W2T.exe运行。下面是同时运行 4 个W2T.exe的内存占用:(联想小新 Air 2019 的笔记本,VMWare 16 2x2 的 CPU)

处理过程中经常会报错提示Run-time error '5',需要将正在处理的词条提取出来——打开处理好的txt文件,看一下最后一个词条,然后去源文件删掉下一个就可以了,修改完后再去编辑下配置文件,重新启动软件继续运行就可以了。

关于报错部分的词条的处理,原项目地址的有讨论指出可能是 HTML标签异常,不过我不熟 WikiPedia 的编辑语法,也不想花时间去检查一个 1.76MB 的 txt 文件到底有哪些错误(至少有 28 个),所以换用了其他引擎并将这部分单独放在了一个mdx。

另外,根据前人经验,制作大文件的 mdx,使用 mdxbulider 3.0 RC1 更好,欧路提供链接就是这个版本

iwiki 处理异常的词条的处理

除了上面提到的会导致程序终止的词条,还有 2 个分解后的文件用 iwiki 处理虽然不会报错,但是没有生成文件,而且处理时间非常奇怪。

校对下载文件的 SHA-1、重新解压后分解、删除第一个词条……等等方法都无法解决后,决定使用维基咖啡来处理。

把上面的所有报错词条添加一个 xml 文件中,再在文件最开始的地方插入jawiki-20220820-pages-articles.xml的 1-596 行的内容,这样用 WikiCafe 引擎才可以正常处理。

只是这个引擎不会处理模板,所以排版会比较乱,所以这部分的词头我单独打包为了ja-wikipieda_20220820_error.mdx

另外,如果赶时间,不介意排版的话,可以直接用Wikicafe来处理——速度非常快,我用iwiki大概花了4天左右的时间,用Wikicafe一个多小时就处理完了,但是有些比较严重的问题。

Wikicafe

项目原地址:维基咖啡

和 iwiki 一样,都是一个作者的作品,特点是速度非常快,但不会处理模板,制作的词条也会有点问题:

还有这种会导致打包报错的词条:

使用 wikicafe 补充制作报错的词条倒是没有遇到上述情况。

致谢

感谢 i-wiki 提供维基转换引擎,他的工具是这个mdx出现的重要前提;

感谢网友邱海波,他对中文维基百科的处理经验帮助我少走了很多弯路;

感谢 Rayman Zhang提供 MDict 平台;

感谢Wikipedia团队和参与词条的诸位编辑,Ta 们的工作是这个词典的灵魂所在:)

打包信息

<p>维基百科
海纳百川,有容乃大
人人可编辑的自由百科全书</p>

<p>日文维基百科 For Mdict(文字正式版)</p>

<p>Ver.2022.08.20</p>

<p>By: NoHeartPen, bulid20220820 V1
(1)制作信息: 
·转制工具:i-wiki 0.76 &amp; mdxbulider 3.0 RC1 
·数据版本:2022.08.20(https://dumps.wikimedia.org/jawiki) 
·更新日志: 
1、基于 20220820 版本离线中文维基百科数据制作。绝大多数词条均采用 i-wiki 0.76 引擎转制,保证总体效果;少数冗长异常的词条采用 wikicafe 引擎转制,并在最开始的部分补充网页跳转链接,兼顾内容完整。 
·特别鸣谢: 
鸣谢 Rayman Zhang(提供 MDict 平台)、i-wiki(提供维基转换引擎)。 
(2)联系作者: 
·邮箱:NoHeartPen@outlook.com
·主页:https://noheartpen.github.io/ 
(3)欢迎赞助: 
·制作不易,欢迎赞助,不限金额和次数。谢谢! </p>

Error报错文件打包信息

<p>维基百科
海纳百川,有容乃大
人人可编辑的自由百科全书</p>

<p>日文维基百科 For Mdict(文字正式版_异常词条补充)</p>

<p>Ver.2022.08.20</p>

<p>By: NoHeartPen, bulid20220820 V1
(1)制作信息: 
·转制工具:i-wiki 0.76 &amp; mdxbulider 3.0 RC1 
·数据版本:2022.08.20(https://dumps.wikimedia.org/jawiki) 
·更新日志: 
1、基于 20220820 版本离线中文维基百科数据制作。绝大多数词条均采用 i-wiki 0.76 引擎转制,保证总体效果;少数冗长异常的词条采用 wikicafe 引擎转制,并在最开始的部分补充网页跳转链接,兼顾内容完整。 
·特别鸣谢: 
鸣谢 Rayman Zhang(提供 MDict 平台)、i-wiki(提供维基转换引擎)。 
(2)联系作者: 
·邮箱:NoHeartPen@outlook.com
·主页:https://noheartpen.github.io/ 
(3)欢迎赞助: 
·制作不易,欢迎赞助,不限金额和次数。谢谢! </p>

其他参考

VMware 安装 Ubuntu18.04:VMWare 安装 Ubuntu 指南,写得非常详细——但用 7.zip 就可以解决的问题,为什么非要去折腾 Linux 的tar -cjf all.tar.bz2 *.xml呢……

缺少msstdfmt.dll:下载这里的msstdfmt.dll文件即可。如果直接通过开始-运行无法激活成功的话,试着到对应的文件夹下使用命令行手动激活(也是下载链接提到的方法),网上找了半天,只有这里在激活命令最后带上了/s

其他 WikiPedia 处理工具

日本語版 Wikipedia ダンプのダウンロード,ファイル分割(XMLファイル) (kkaneko.jp)Release V3.0.6 · attardi/wikiextractor (github.com):需要 Python 环境,从描述和代码来看,疑似提取纯文本,未对排版进行优化,尚未进行试验。

Wiki语料处理:和上面的比较类似的一个Python库,也是提取 WikiPieda 的纯文字内容

分割 XML

再次强调:W2T已经内置了分解工具,不用自己找第三方的分解工具,如果要动手的话,先解决启动时的报错问题,不要纠结如何拆分下载的文件。

文件过期,无法下载分割 xml/:xmlsplit - 词库制作交流区 - Dictionary-Making - 掌上百科 - PDAWIKI - Powered by Discuz!

请教各位手动分割 ? - 词库制作交流区 - Dictionary-Making - 掌上百科 - PDAWIKI - Powered by Discuz!:这里的工具可以下载部分,但是折腾了半天也没有分解成功

XML Split of a Large file - Stack Overflow:这里也谈到很多,但是折腾了半天也没有拆出自己想要的的文件

windows - How do I split a large xml file? - Stack Overflow:这里也谈到一些,但没有进行过尝试。

10 Likes

谢谢大神
好人一生平安

楼主有兴趣抓下wiktionary吗,也许更有价值
(您用了wiktionary的标签,我下载下来看到4个G的mdx才发现不对劲,原来是wikipedia啊 :smiling_face_with_tear:

抱歉,已经把标签改了 :joy:……

我没有用过 wiktionary(渣渣日专生一枚,其他大佬分享的英语词典就已经够我用了),这次会做这个维基百科,完全是因为看到了一篇现成的教程帖,手痒就动手做了下,没想到一路还是踩了不少坑,花了整整一周多的时间……如果早知道这么麻烦的话,我可能就不会动手了:)

不过你可以指下路么?以我爱折腾的性格,说不定哪天手痒就去抓了(但最近几个月应该不会动手),我用关键词 “Wiktionary” 在这里和 PDAwiki 都没有找到相关的制作教程,只找到一篇看起来会有教程的文章:
【2016/09】Wiktionary 2016豪华版 - MDict 词库资源区 - MDict Dictionaries - 掌上百科 - PDAWIKI - Powered by Discuz!

你链接这本就挺不错的,后人又有依据他的脚本制作过2019的版本,我现在还在用。
但这个是英-英,wiktionary的语言又很多,例如一个汉字在中文/日文/韩文/越南文里有不同的解释,用来解释的语言也可以选择多种,不知道能否通用。
本坛有一个CJK-English Wiktionary 2021,里面也有分享脚本(脚本里可指定语言),供你参考。能通用的话,制作一个CJK-Chinese 或 CJK-Japanese 也许不错。

个人意见,用离线的wiktionary果然还是喜欢bt4baidu那样紧凑美观的样式,但为日语适配一个样式可能难度太大,不妨考虑精简一下,只提取词源等最有价值的部分。

好的,我研究研究,但估计要寒假才有空做了哈:)

Kiwix不考虑了解一下么?

1 Like

感谢指路,简单了解了下,这里可以下载词典文件,放到Golden Dict就可以加载了Index of /zim/wikipedia
但我在欧路手机端也经常查词,所以更喜欢mdx(记性不好,复习的时候不想打开几个软件,只想找个全平台通用的方案)

而这里提到zim转mdx的方法

看起来很简单:zim可以解压为HTML文件,有了这个转为mdx就简单多了…但我没有找到完整的教程,只有零碎的讨论,估计动起手来,又是一堆坑。而我最近比较忙,所以寒假有空才会折腾吧…

1 Like

对了,上面的老兄指点的网站提供了你感兴趣的wiktionary离线文件(非mdx),有日语的,感兴趣的话去这里下Index of /zim/wiktionary

具体下哪个文件看看这里的说明:https://download.kiwix.org/zim/README

有平台限制的情况下,那没办法了,按照你喜欢的方式来吧,但是我仍旧给没有使用平台限制的人推荐kiwix,其可以离线多国语(包括但不限于英,日,韩等)wikipedia,古登堡,wikiHow,phET,iFixit,依语种不同,通过kiwix还可以离线到其他更多资源,例如Stack Overflow,TED-Talks等。最重要的是,kiwix离线下来也基本保持原站样式,这一点是我最看重的,毕竟不是什么东西都可以词典化的。而让我深感烦恼的问题有两个,1.硬盘空间太小;2.其独特的icon丢失以提示当前zim存在版本升级的设计。。。

1 Like

在goldendict上试了试,ja还行,zh排版很乱,但似乎有的词在zh里的解释丰富一点,比如英語只在汉语的解释里有詞源。
(每个zim都是包含所言语言的词条,用你选择的语言来解释。)