我真的是停不下来啊_日本語非辞書形辞典_v2_mdx2all

前言

《日本語非辞書形辞典》项目主要是为了提高看日语小说时的查词速度,但由于本人精力有限,一直只提供mdx格式下载。作为词典制作者和使用者(非词典软件开发者),我对这种格式很满意。

不过,我看小说时使用的词典软件们却齐刷刷地转投其他阵营:

idx:即Stardict格式的词典,多见于各大国产电子书阅读器,比如博阅系统、Kindle多看阅读系统以及真·跨平台开源阅读APP KOReader

txt:AnkiHelper(这个不支持mdx可以理解

zip:日语划词插件Yomichan支持的格式(我实在不想去折腾mdx怎么转EPWING

mobi:Kindle支持的词典格式,但如果想在Android和iOS上使用,请参考这里的方法,但是单词卡既没有记录上下文的功能,也没有动词活用推导功能。

kobo:日本电子书厂商,未使用过该产品。只是注意到其有专门的词典格式,估计也不支持 mdx。

前不久发现了Python 第三方库 pyglossary ——一个提供了多种词典快速转换工具。

从本人的实际体验来看:mdx转idx时会处理mdx格式独有@@@跳转语法,还会将mdx的部分语法转为idx支持的语法,秒杀本人之前提出的蹩脚方案,对此,本人只能振臂高呼:Open Source Made Python Great Again! Life is Short, you need Python:)

只需花5分钟阅读PyGlossary:将不同格式的字典转换成 Kindle 字典(看完第一步就可以了),然后花10分钟配置好环境,再花5分钟就可以得到一本新鲜出炉的idx词典了。

如果有强迫症、有时间、有能力(懂一点点Python即可),可以接着阅读本帖,通过本人提供的转换脚本,不仅可以一键批量转换,还可以收获更完美的阅读体验。

有多完美呢?楼主在用 KOReader 测试词典时直接一口气读完了一本《古書堂》233。多说一句,KOReader 用来看日语原文书真的是个大杀器,对日语的活用处理堪比Kindle设备,而且也有Kindle设备独有的保存单词上下文功能(APP没有),还有间隔重复算法安排复习)

以下部分只谈mdx转idx的,欢迎坛友替大家踩其他格式转换的坑:

v2 · NoHeartPen/NonJishoKei - 码云 - 开源中国 (gitee.com)

NonJishoKei/v2/mdx2idx at master · NoHeartPen/NonJishoKei (github.com)

快速上手

请下载《日本語非辞書形辞典》项目v2文件夹下的所有文件,在mdx2idx文件夹,运行add_index.py脚本,脚本运行成功会生成一个名为done的txt文件。

将想转换的 mdx 词典用 getDic 等软件解压为 txt 文件,把add_index.py脚本生成的done的txt文件添加到解压后的 txt 文件中(注意 mdx 源文件的格式要求),然后打包为 mdx,再使用 PyGlossary 将重新打包的 mdx 转为 idx 即可。关于 PyGlossary 的使用方法,可以参考项目官网 GitHub - ilius/pyglossary: A tool for converting dictionary files aka glossaries. Mainly to help use our offline glossaries in any Open Source dictionary we like on any modern operating system / device. 和这篇教程 PyGlossary:将不同格式的字典转换成 Kindle 字典

高级指南

批量转换

如果希望快速转换多本词典,请通过命令行pip install -r requirements.txt安装相关依赖(请在mdx2idx文件夹下使用这条命令)。

将所有 mdx 文件放到mdx2idx文件夹下,运行main.py脚本,等待片刻即可。

自定义索引

由于 idx 的跳转特性,转换好的词典可能会包含一些无法跳转的链接。如果不想在这些无意义的跳转链接中浪费时间,可以将v2文件夹下index内的index.txt里的内容删除,然后替换为想转换的词典的词条,再执行main.py

词条导出方法:可以使用 GoldenDict,在词典详情界面右键查看词条然后导出的文本,不需要删除たべる【食べる】这样的词条,脚本会自动处理,也不需要包含词性。

多语言支持

如果将index.txt替换为其他按照词形变化 原型格式储存的数据,比如:

perceived	perceive
perceived	perceive
perceives	perceive
perceiving	perceive

那么,本项目提供的脚本就可以用于其他语言的 mdx 转 idx。由于精力有限,本项目暂不提供这样的数据,有需要的同学请自行尝试。

英语的词形变化数据可以参考:Free English to Chinese Dictionary Database

转换 mdd 文件

如果希望转换 mdd 文件,请将 mdd 文件和 mdx 一起放在mdx2idx文件夹下,然后运行main.py

请注意:这种方式只能保证 PyGlossary 会识别并处理 mdd 文件,转换的 idx 可能存在图片显示为[image]的情况。

删除 HTML 标签

PyGlossary 不会处理不被 idx 支持的 mdx 源文件语法,有需要和有时间的同学可以参考这部分的内容,自行修改.process文件夹下dics解压出的源文件,修改完成后,请运行pack_mdx.py,不要运行main.py文件。

  1. 不支持<a class="link" href="javascript:;">(.*?)</a>跳转语法
    1. 替换参考正则:<a href="entry://\1">\1</a>
  2. 不支持<img alt="" src="data:image/png;base64,(.*?)>这样含有 base64 码的图像标签
    1. 替换参考正则:替换为空即可
    2. StarDict似乎不支持图片,可以考虑手动删除图片标签<img (.*?)>
  3. <span>(.*?)</span>标签:
    1. 替换参考正则:替换为空即可
    2. PyGlossary 似乎会按照特殊的格式渲染该标签的文本
      ……(欢迎补充反馈)

转换为其他格式

pyglossary 提供如下格式转换支持:

有需要的同学请自行修改convert_idx.py的内容。

词典分享

最后,分享本人打磨了3天的《新世纪日汉双解大辞典》,在使用脚本转换并补充了大量词条的基础上,删除了[image]等不被支持的标签,还对中日文解释做了排版的分割调整,简洁清晰,适合各个阶段的日语学习者使用,也期待看到各位的作品:)

https://www.123pan.com/s/iGz0Vv-UodVh

有和楼主一起挑战一晚读完第五次圣杯战争的Fate厨吗233

14 个赞

老大,你的帖子技术含量太高。。。
搞不懂啊。。。

新世纪日汉
没有python哦,只能直接求个mdx了


你看日文小说用啥?
kindle?

这词典就是从站长制作的mdx转的呀233 新世纪日汉双解大辞典 - FreeMdict

之后这篇帖子分享的词典也都是在本论坛淘到的词典,不过我只会做自己喜欢的《大辞泉》和《スーパー大辞林》了。之所以拿这本《新世纪日汉双解大辞典》试水是考虑到受众面——大多数学日语的同学先从日汉双解类词典看起就好啦,能只靠日日词典的大佬毕竟是少数:)

Kindle我只是用来买书,看日文小说的话,我之前用的静读天下+AnkiHelper(前者看书时快速查词,后者用于复习整理到Anki),最近已经彻底倒向KOReader了,原因如下:

1 个赞

记录上下文和导出 anki 确实是很有用的功能
读完你的长文,正跃跃欲试想去下载一个,发现只有 Android 和 Linux 用户能用,可惜

站长的那个一直在用
你说: 补充了大量词条的基础上,删除了[image] 等不被支持的标签,还对中日文解释做了排版的分割调整,简洁清晰

这个才是重点。。。
求个mdx~

额,他全篇都是在讲mdx转idx,mdx根本没改啊

idx:即Stardict格式的词典

Goldendict可以读Stardict格式的词典。放到Goldendict里直接用就是了。

补充了大量词条:补充的词条就是《日本語非辞書形辞典》里的词条,只不过这个脚本只添加那些可以跳转到《新世纪日汉双解大辞典》的词条,不能跳转到《新世纪日汉双解大辞典》的词条不会添加——不然看个书需要来来回回地到处跳,而且跳过去后就不能同时查阅多本字典了,所以才会为每本词典单独添加跳转链接。

删除了[image] 等不被支持的标签:mdx的图片在idx中无法显示,我直接删了(但图片在站长制作的mdx里是正常的)

对中日文解释做了排版的分割调整:这本《新世纪日汉双解大辞典》的mdx分割中日解释使用了span标签,这个标签转为idx后失效了,中日文解释混在了一起,所以我直接换成了换行。不过这样一来原mdx中文解释有的缩进,idx就没有了。

综上,我修改的mdx没有什么特殊的地方(甚至可以说是反向优化233),用《日本語非辞書形辞典》+站长的《新世纪日汉双解大辞典》就好了呀:)

1 个赞

搞懂了
谢谢~

期待大作~

请问链接里分享的这些格式的词典文件能被哪种软件读取?

Stardict词库可以放在Goldendict中使用,也有专门的转换工具。

参看:

词库种类及使用方法

1 个赞

OK 谢谢,快忘了stardict这个格式 ::

个人建议freecomic101修订过错误的版本

您好,有些词条加载不全。比如“世話”,在koreader中只显示了两条释义,可它一共有五条释义外加五个联想词。该怎么办呢?

好问题,现在才发现这个词典对于【词组】的采用了这种方式来处理,读了下源代码,发现处理起来有点棘手,我试试吧:)