日语mdx词典制作教程

前言

终于是赶在跨年前做出来了,这篇文章大概是今年最后一篇了(笑)。

博主是一名日语生,作为一名文科生,在学习过程中经常需要做笔记,记录一些生词、惯用表达和流行词等,当前市场上主流的词典软件很少有能够涵盖这些内容的,而博主用的几款笔记软件(这里就不指名道姓了,市面上流行的就那么几款)的搜索笔记功能都和屎一样,搜索汉字都费劲,更别提日文了,由此可见文字识别技术的发展任重道远啊。博主在终于忍无可忍的时候,想到为何不把笔记做成词典的形式,搜索关键字可以直接查找内容,有点类似于数据库?想到就做,但开局就遇到了难题,我甚至不知道词典转换软件的输入文件要求使用的格式,谷歌也没找到相关内容,可能像我这样手打词典内容的人太少了吧,大家基本上是使用 python 直接扫市面上现存的词典制作电子词典的。在解包小学馆的 .mdx 文件后终于是了解到输入文件的基本格式,需要写大量相同的 html 标签,手打的话简直是费力不讨好,只能上脚本生成。

但博主是个文科生,编程也只是略有涉猎,最终还得靠 chatgptAI 太好用了你知道吗,花了一天和 ai 斗智斗勇,曾一度放弃,最后还是搞出来了。

本着无私奉献的精神,在这里把这个脚本分享出来,但本脚本只是作者为整理日语笔记制作的,因此大部分功能偏向日语词典,如有其他语言需求请自行修改。

教程

首先下载解压 AutoMdxBuilder,这是生成 .mdx 的软件,博主接下来提供的脚本是基于该软件写的。

然后下载 txt2html_formdx,使用 css 文件夹下的 ctmpl.css 替换 AutoMdxBuilder\_internal\lib 下的同名文件,注意备份源文件。

创建一个名为 input.txt 文件,在其中编写词典内容。编写规则如下

点击展开

请保持 input.txt 按以下格式编写

1
2
3
4
5
6
7
8
词目1
解释1

词目2
解释2

词目3
解释3

词目

词目可以使用以下标签实现一些功能

标签作用示例
|添加同义词。可用于重定向词汇、标注外来语原语。在词典中搜索该标签右侧的内容会重定向到左侧的词条。可叠加使用。グリーン|green
{}手动注音。默认情况下脚本会自动给含汉字的词目生成平假名,并生成重定向,但软件自动生成的发音不可避免地会出错,因此一些情况下需要手动指定发音人が中心{ひとがちゅうしん}
{no_kana}禁止自动注音。默认情况下脚本会自动给含汉字的词目生成平假名,并生成重定向,如果不需要自动注音,可在词目后添加该标签以禁用该行为。该标签在词目写中文、解释写日语的情况下非常有用,由于脚本默认把词目当成日语,使用该标签可禁止其对中文进行注音。自我の国情に合った発展の道を歩む{no_kana}

解释

解释部分只能占一行,不能换行,不能换行,不能换行!需要换行的情况下,请使用 <br> 标签。也不能使用 TAB,请使用 &nbsp;

理论上只要是 html 标签都可以使用,这里提供解释部分可以使用的几个特殊标签

标签作用示例
[example](content1)(content2)例句标签。content1 为例句,content2 为释义登记,注册[example](商標を不正登録する)(抢注商标)
[note](content)提示标签。content 为提示内容单边主义[note](ユニラテラリズム)

运行 txt2html\txt2html.py,生成 index.txtsyns.txt

1
python txt2html.py input.txt index.txt syns.txt

index.txtsyns.txt 放入同一个文件夹内,在该文件夹内创建一个名为 build.toml 的文件,修改内容为

1
2
3
4
5
[global]
templ_choice = "C" # 【重要】选择要应用的模板, 同时需完成下方对应模板的具体配置(如果有的话)
name = "示例书名" # 书名
name_abbr = "SLSM" # 书名首字母缩写
simp_trad_flg = false # 是否需要繁简通搜

请确保该文件夹内只有 index.txtsyns.txtbuild.toml 三个文件,不要出现其他无关文件,否则 AutoMdxBuilder 有概率闪退。

运行 AutoMdxBuilder,按照提示输入生成词典对应的 20 并回车,输入 build.toml 所在文件夹路径并回车,生成的文件会在 AutoMdxBuilder 根目录上一级文件夹中,文件夹名称为 build.tomlname 的值。

结语

说实话最累的不是捣鼓这个脚本,而是写 input.txt

我尝试过使用多个工具去提取笔记 pdf 的内容,但由于日语复杂的字形、多次 OCR 导致笔迹变模糊、曾经为减少笔记软件卡顿将笔记导出再导入导致之前的笔记变成了 pdf 背景的一部分等各种原因,无法将笔记内容转成文字。最后只能采用最低效的方式就是重新手打一遍,还好之前的笔记数量不多,也就 600 多个词条,但久了还是撑不住,打字打到最后不知道自己在干什么了(笑)。

写到这里突然想到,既然都要电子化,为什么不能更彻底一点呢,要不做成数据库试试?因为目前这个脚本做的词典在某种意义上只能叫做「日汉词典」,而不能叫「汉日词典」。因为博主制作自己的词典时大部分是日文词目对应中文解释,脚本最开始的逻辑也是这样的,比如会自动给词目注音,但利用 | 标签其实也可以实现「汉日词典」,即将汉字重定向到日语,或者对汉字词目使用 {no_kana} 标签,然后解释写日语,不过后面这种方式如果要实现双向查询要把同一个词条写两遍,会增大文件体积。不过博主只是个废柴文科生,数据库什么的不可能会的~所以就保持现状就好了,如果有朝一日真的学会了编程什么的,利用数据库加自己写 app 做一个更强大的词典也未尝不可。等等,这不是在往语料库做了吗,喂!

文章就写到这里吧,希望有朝一日某个人发现位于互联网不起眼的角落的这篇文章时,能够帮到你。

最后,新年快乐!