MDX 周边工具的完善

本贴是新词典格式开发的相关话题
传送门:关于词典新格式的讨论

无论是要推行新的格式,还是继续沿用 MDX,都要先完善 MDX 的周边工具,例如拆包、打包,以及制作过程的辅助工具。目前,已有很多相关的开源项目,但似乎都有一些问题。本贴的目的是希望大家能系统地汇总各开源项目存在的问题同官方工具的差异,以及还欠缺的工具,为之后的完善做准备。明确了改进目标之后,将会逐步完善 MDX 的开源生态(计划以 Python 为核心语言,受众更广,门槛更低)。若有重写底层代码的需要(例如 MDX 的读、写),大家可以提一提相关建议。

5 Likes

1、所有的mdx编译工具:编译源文件后,词条的先后排序信息丢失,以致无法还原。这对于中文等存在多音字的情形就是个灾难,无法正确还原;对于图片词典等更是糟糕,特别是按照笔画、或先按某个机制分类再按拼音排序等非字母排序的图片词典来说,前人辛苦整理的词条,就难以被正确还原,从而无法充分地重新利用了。

案例:https://www.pdawiki.com/forum/forum.php?mod=viewthread&tid=41323

2、与1好像是相关的问题:pdawiki的众多词条提取工具(input词头,output完整的词条内容),无法按照原始的Input词条顺序,输出相同顺序的词条内容,几乎都是按拼音顺序重排了,这很不便于学习应用。

这里置顶的众多工具都有此类问题:https://www.pdawiki.com/forum/forum.php?mod=forumdisplay&fid=100

3、图片词典制作工具 MdxSourceBuilder 虽然开源,但采用vimscript编写,非python等大众语言,阻碍了更广泛的应用。

2 Likes

第2条输出顺序混乱,是因为打包工具重排了,没有原始的顺序。

详细说明一下,我所说的第2条问题与您理解的还是有点不一样:

原始词条顺序(A,比如按笔画顺序排)==>词典顺序(B,很可能是按字母顺序排),我现在input一个词条列表(C,可能是某个课程的词条,可以是任意排序,其不同于A的排序),希望导出的顺序也是C(注意:不是A,也不是B。仅仅是提取出txt源文件,没有经过再次的mdx编译),但得到的却是D(通常是按字母排序,与B的排序好像一样)。

这个C==》D的问题与从A==》B的问题,虽然有点类似(两者的处理方式好像都是不管原始的排序,通通转换为按字母排序),但又不是一回事:这是由两个独立的程序(mdx编译、词条提取),分别出现的问题,不能都怪到mdx编译程序。

1 Like

可以指定导出词条列表?只用过 mdxexport 和 mdict-utils,不都一起全导出的吗。

很多工具都可以导出指定的词条列表。

我见过的最好用的是这个,它会按提供的顺序输出,没有上述问题,而且可以输出html\pdf等各种格式:

1 Like

补充一个:

诸如 [email protected]@@LINK=B,[email protected]@@LINK=A 的循环引见的情形其实是有真实需求的,
因为A另有具体的定义,B也另有具体的定义。但这种循环引用会造成一些词典程序的崩溃。

这种使用规范应该有较为明确的定义,避免不同词典程序的兼容性问题。

1 Like

还是应该避免循环引用的情况。要是有工具能检测就好了!

目前有没有什么解决的办法呢?感觉主要是软件的支持问题。

这个就不清楚了,只知道有的软件支持得好一些,有的则经常崩溃。

MDict碰到这种情况直接卡死。

对于目前的mdx,很多都还是黑箱,不过我们应该能根据已有的认识,制定一套规范,兼容现有的词典软件。不妨称之为开源版的mdx(OpenMDX)。目前的想法有:

  1. 按照“最新”的mdx格式制定标准,提供旧版的转换程序。(这里指的是社区用的最新格式,不包括没有普及的版本)
  2. 关于排序、引用(尤其是循环引用)制定一个统一的标准。并想办法保留原始的排序(原始排序放在单独的文件、about页面或者单独的特殊页面中)。
  3. 调研各软件对css的支持性、不同排序下搜索过结果的差异。
  4. 标准不包括加密这一封闭性的功能。

不知各位有何看法?

3 Likes

ubersoft 兄:
若借鑑 Babylon or Lingoes 詞頭的格式是否可行,

abandoned child|Child
abandoned child
foundling, orphan

abandoned, deserted|abandon|abandoned|deserted
abandoned, deserted
forlorn

abandoned ship|abandoned|ship
abandoned ship
hulk

abandon (enthusiasm)|abandon|enthusiasm
abandon (enthusiasm)
elan, exuberance, spontaneity, wantonness

abandon, give up|abandon|give|give up
abandon, give up
relinquish

abandon idea, habit, friendship|abandon|abondon idea|friendship|habit|idea
abandon idea, habit, friendship
renounce, repudiate

这个好像不太行吧,本帖的目的是要在现有的mdx实现上规范一下,同时提供便利的工具。mdx的词头貌似不能实现这样的功能,不知道我理解的是否正确?

嗯嗯,我誤解了以為是架構異動且以自動生成為標地

灵格斯对重复的词头是怎么处理的?

good|well|best
n. 好; 慷慨的行为; 好事
good
adj. 好的, 上等的, 优良的

mdx 可以指向重复的词头。

well
@@@LINK=good
best
@@@LINK=good

道理一樣的,只是若是把詞頭這樣編輯,較不會弄混,只要弄個程序去自動處理成@@@LINK 就好了,且,除了可以放形容詞比較級,動詞的三態和分詞, 也可放重要的thesaurus ,也就是編輯歸編輯,生成MDX 要用的,歸mdx 要用的,編輯的模式可以規劃幾種不同的型式來生成,交流也就用編輯的模式來當原稿,這樣不就解決了嗎?

1 Like

这其实已经很接近新格式的想法了,不过在mdx上实现也是可以的。

格式也不是什麼重點,只是大家想要有原始的編輯原稿而已,以利除錯和再次加功或擴充,那不如規劃幾種通用的模型,甚至打包時把原始的text打包在mdd內,那解壓時也就能再次依此加工

灵格斯的格式更容易弄混。

good|well|best|goodness
n. 好; 慷慨的行为; 好事
good
adj. 好的, 上等的, 优良的

语法上看, goodness,更倾向指向名词的 good,而不是形容词的 good。