掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 10732|回复: 21

[讨论] MDX转MOBI过程及相关思考(附COED11th.mobi)

[复制链接]
  • TA的每日心情
    开心
    2023-9-27 20:45
  • 签到天数: 847 天

    [LV.10]以坛为家III

    发表于 2019-9-16 17:58:18 | 显示全部楼层 |阅读模式
    本帖最后由 nullname 于 2019-10-12 08:47 编辑 ! l0 v9 u/ {/ e0 C

    4 X( O) B2 Z, y* R. {3 {) G00
    0 @1 e6 H) |$ s5 N& }相较于MDX词典的百花齐放、门类齐全(从学习型再到母语型再到俗语习语俚语等,不一而足。) Kindle用的MOBI词典就显得冷落多了,有意义的词典非常有限,也许是因为Kindle的使用人数很少吧.... 基本就是官方的英英、英汉和 skywind3000 大神的这本 简明英汉必应版 了。
    & J; F2 u$ J6 r其他的像书伴上的那些都很难用,主要问题就在于不具备 词形变化 的查询能力。比如书中出现了 looked, raised 这种单词,它们基本都不能直接查询到 look, raise。
    " E) n( h7 }& ?$ N; ?0 l
    5 R- |* v8 n* |1 P# @* }0 a2 T8 k之前在知乎上看见孙缓之的一篇帖子(见此 Kindle OALD9 民间发布(仅限交流使用)),可以用 dsl2mobi 这个工具来将 dsl 词典转化为 mobi,且具备词形变化的查询能力。但貌似 dsl 词典不是太好找。
    " {, |  D' I6 m5 j- n5 P8 d& p3 J9 A4 w- ^$ i8 o: C6 ?
    因此,想试试能否将 MDX 转为 MOBI。教程不多,仅在书伴上找到了这几篇文章。(请见 《如何把 MDX 格式词典转换成 Kindle 字典》《自制 Kindle 字典简明教程(入门篇)》《自制 Kindle 字典简明教程(进阶篇)》
    $ R& B$ }1 G) \1 n+ t# t3 Q
    & X- ?* Q" K" G! u: W根据  《如何把 MDX 格式词典转换成 Kindle 字典》 这篇教程,转化出来的词典不具备查询 词形变化 的单词的能力。主要原因在于没有添加变化后的单词,如图红色矩形区域(更详细的请见 《自制 Kindle 字典简明教程(进阶篇)》)。; E" E/ \* Y/ j$ S" F8 J) F* j
    3 }+ L4 o" ]8 V$ _/ o) s1 e
    以 COED11 举例,这是转换后的 HTML 中的词头部分:
    , {  [4 W1 U/ a  n  R( \! N' o" o
    若要具备 词形变化 能力,需要的区块(红色矩形部分):* n5 s/ K5 P3 x. l: I5 b* d) i9 ^
    6 D) f: n* G& h- D
    0 @# T" G/ v8 N( z

    5 E8 }9 N' ~% w+ m6 T/ \9 p我抓破脑袋都想不出怎么样才能自动添加这些进去,后来想起 dsl2mobi 有这个功能,就下载下来研究了一下。该工具是 ruby 写的,基本看不大懂,不过我在其目录下发现了包含十几万英文单词词形变化的 TXT:
    9 q: S) J. I% G
    # W. i  B) J- ]
    ' D% S3 k/ E* ?4 _* ^2 y
    - X5 _7 N7 R5 H+ ~
    排列比较有规律,格式为  单词原型:变化1,变化2,变化3......  因此用 python 写了正则批量查询添加:
    ) A: C0 x, N9 Y  T8 w( O

    9 _  _3 |$ I2 u0 T; }/ f
    5 k* |: b9 N. @8 p: G% }
    ) l+ t/ ~! a3 o: c; a跑完之后:4 v- N% u, o* i) R
    ) f2 z1 |/ d; _7 h) e- o

    ; s8 z3 g; O. c# h! P5 w
    : ?! C. O1 v3 g2 O" y8 X基本原理大概就是从词典中取出主词条单词后再在 forms-EN.txt 中查询匹配,若成功则返回所有的变化形式并添加区块代码。然后重新生成 mobi 。. R3 `0 s) W+ d4 E. R6 K" |* N

    7 V) z( T* b* ^2 T! q2 y1 h兴冲冲的试了试,
    , _8 W& D* M; {% |

    3 n4 u( E" ]% B4 o( h                          两个看起来都没什么问题,和我们想想中一样。
    " |: Z9 Q+ s* l2 _) ~+ T1 w* R: Z2 H# ?* u
    再试试,
    - \; ~% l' b. ]& X  B

    " e+ E% Q, f* O* T     查询dealt的时候,按设想,应该是查询deal才对,结果并不是。/ W1 j, h) y2 c5 d9 ^- O; ~6 t
    3 N, v) _/ S& a, U6 ~0 ]0 h
    用官方的词典试试
    : b. y: t  d! J" Z9 y% u% r4 m( V, B7 d! }8 o# q* w) g
    同样如此。" I  Y0 `& T$ d4 x6 V- }: G
    7 a6 i, k$ V" D7 F; T
    # z1 @: J) b( ]/ x2 K
    ( w( X3 [& @5 x4 @
    01
    ( [; `; p/ Q6 M; }% M9 r. G* _' w  h
    后来经过反复试验,发现了 Kindle 的查词逻辑:选中单词后,查询主词条是否匹配成功,成功则返回对应的条目,同时不再继续查询变形词条。没有主词条的话则查询词形变化区块是否有匹配,若有则返回变化词条的原型主词条。7 }: y. p9 r' n. n& F: y

    ( K6 j* F/ G$ \# m* mdeal 的词条部分已经添加了 dealt 作为变形词条,然而我手中的这版 COED11.mdx 和官方的Oxford Dictionary of English 都有了 dealt 这个主词条,词条内容如上图。因此不会返回 deal 词条的内容。* g, t4 L, C, k; n, d
    , M/ d( j2 r/ v+ {; L( i
    知道问题所在后,如何解决呢?想了想,很难,因为英语词义太丰富(Rich)了。比如flame,它的词形变化理应有flaming对吧。但是flaming本身可能自成一义(火爆的,讨厌的,该死的),如果查询flaming的时候跳转到了flame,从flame很难猜到flaming的一些专有词义。除非亚马逊更新固件,修改上述的查词逻辑,即不论查不查的到主词条,变形词条所在的原型主词条一并显示。不过目前看来希望渺茫。, E& @# z% u1 ?7 ^9 a; p& p
    $ A- G" G( y) f+ m) {

    ; ^) z* I/ y/ o8 X- p+ d02
    9 w3 D: P7 w' W6 D- ^7 }即使如此,还是有许多优秀的 MDX 词典值得页应该被转化为 mobi 以供大家使用的。个人认为kindle上不适合使用学习型词典这类词义较少的词典。比如你在看书的时候看到了square这个单词,假如你用牛津高阶,你翻到底都翻不到“步兵方阵”这个释义,最后陷入深深的自我怀疑...然后又去提问“为什么我每个单词的意思都看得懂但是就是读不懂句子的意思...”。$ b2 p! m1 \* w: B  q0 V( A- W

    2 ?$ p) c4 s2 j$ G2 D  i" C经过一段时间的试验,我发现 The World Book Dictionary 和 Microsoft Encarta Dictionary 这两本词典非常适合“高阶有余,母语不足”的英语水平者的使用,但把它们转成mobi难度略大......由于水墨屏的特性,kindle 上词典个人以为只需要1.粗体 2. 斜体 3.浅色 这几种样式即可,不要图片、音频。同时要求css内置在mdx中,不能外挂。在此也向各位请教如何将外挂的css内置进mdx中的方法,我尝试了在html中添加style标签然后将css全部复制进去,但似乎并没有效果?各位如果有较好的适合在kindle上使用的词典也可以发出来大家尝试转换。, H8 e, l& t, b" o8 D

    ) ~' K- S4 `3 `6 \5 Z1 A" m写的比较乱,抱歉。也欢迎大家交流讨论和指点。
    $ E/ t  C! Z. r% h$ w

    1 Q( k( V% O' \7 t, f
    1 J. e; c) B3 x, J+ |. U
    最后附上制作完成的COED11th.mobi( T: L4 f% I, ^' `

    ( \9 ]/ t5 K5 Z4 Y7 y9 W
    0 |2 j9 [) O% ]
    链接: https://pan.baidu.com/s/1TyMK4P1A6ltCEDr2Bt_rNg 提取码: zp3b
    + K2 ], L1 r/ |. a! m
    ! y* B& _9 k2 a8 M9 w
    ----------------------2019.10.12补链----------------------
    - m% K# j# ], \) y链接: https://pan.baidu.com/s/1bSRfcScur482utaLmsxOgg 提取码: 4b5h6 N' O/ J& {, K" d4 J) Z
    / Z+ L* a# l. l3 R6 ]" g
    - U% ]3 ~  S. ^3 _4 F- H* q0 J% h
    / V% N1 Y( z3 C* R' t# C/ P
    8 x$ C' d* ]! D" P; B) I
    % [+ G* s9 Y7 U# K! [; n: b

    $ Y% }2 }1 z! Q% o+ v

    ; I( v+ w/ g6 Y% [5 j& X1 o& V; Y/ z. p
    " S# Y" F" q% f) g
    " W/ D  v/ ]! z5 @0 z
    ) A3 c6 T0 t. \, \" v
    7 J& S; ^( [6 A; F4 Q

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?免费注册

    x

    评分

    3

    查看全部评分

    本帖被以下淘专辑推荐:

  • TA的每日心情
    慵懒
    2020-5-3 16:00
  • 签到天数: 207 天

    [LV.7]常住居民III

    发表于 2019-9-16 18:36:15 | 显示全部楼层
    按浏览器加载css文件的逻辑(不包括css外挂,css外挂是MDict和Eudic默认允许的非通行标准做法,国际软件一般还未支持)的三种:5 h' {$ W, O' X0 `  ^7 {
    1. html tag 上的style, inline,如 <div style="font-size:14px">4 x4 m. M+ g( {; ?! s1 ?2 P$ K8 Z. c1 H( h
    2. <style>div {font-size:14px;}</style>
    ' t6 x# O, R+ K  y# O/ l* h( Z3. <link href="styles.css">
    3 V8 v$ ^" v9 }/ N( d; B5 b$ G+ R9 H& h6 K! x
    第三种,根据mdict的设计逻辑,可以放到mdd文件中;前两种,直接在mdx文件中。
    $ ^, g; N: ?" J: _8 W2 U/ T
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-9-16 19:24:53 | 显示全部楼层
    00开头,程序员无疑了
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-9-16 19:25:15 | 显示全部楼层
    看了下这个源码跟mac词典源码有点像
  • TA的每日心情
    开心
    2023-9-27 20:45
  • 签到天数: 847 天

    [LV.10]以坛为家III

     楼主| 发表于 2019-9-16 19:39:05 | 显示全部楼层
    johannhuang 发表于 2019-9-16 18:36% l/ h8 z* ^. r! G3 f. D
    按浏览器加载css文件的逻辑(不包括css外挂,css外挂是MDict和Eudic默认允许的非通行标准做法,国际软件一 ...
    ' _, K4 S. {; E' h
    学习了,不过我想的是是否有什么方法能将现成的外挂css中的样式还原进mdx中呢?因为mdx差不多本身就是多个html
  • TA的每日心情
    开心
    2023-9-27 20:45
  • 签到天数: 847 天

    [LV.10]以坛为家III

     楼主| 发表于 2019-9-16 19:39:57 | 显示全部楼层
    jonah_w 发表于 2019-9-16 19:25  ~% g# f! J. ^% T- E
    看了下这个源码跟mac词典源码有点像

    3 {( Q( v5 M4 J- `5 ?0 P) A可惜只是像...若是一样的那大神就很多了..
  • TA的每日心情
    擦汗
    2024-2-8 08:54
  • 签到天数: 902 天

    [LV.10]以坛为家III

    发表于 2019-9-16 20:12:37 | 显示全部楼层
    Great you are! thanks for sharing
  • TA的每日心情
    开心
    2018-7-30 20:23
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    发表于 2019-9-16 20:26:44 | 显示全部楼层
    希望像楼主这样的热心肠同时技术又高超的人越来越多,Kindle词典的资源确实很少,而且官网的都很陈旧了,thesaurus 就相当于没有,作为用Kindle学习英语的人来讲,还是有小小的失望
  • TA的每日心情
    慵懒
    2020-5-3 16:00
  • 签到天数: 207 天

    [LV.7]常住居民III

    发表于 2019-9-16 21:46:58 | 显示全部楼层
    nullname 发表于 2019-9-16 19:39
    $ {& K) |6 V6 M. Y. }# l" f学习了,不过我想的是是否有什么方法能将现成的外挂css中的样式还原进mdx中呢?因为mdx差不多本身就是多 ...

    * }7 o* }9 {0 I3 `! f1. 解包mdd,加入css再打包,同时修改mdx里面得css引用- v# p4 s6 a# L2 [
    2. 在mdx中按照前述方法2进行加style (但你似乎说了不行,不知道你为什么不行,可能有局部出错了)
  • TA的每日心情
    开心
    2023-9-27 20:45
  • 签到天数: 847 天

    [LV.10]以坛为家III

     楼主| 发表于 2019-9-17 08:29:36 | 显示全部楼层
    johannhuang 发表于 2019-9-16 21:46' n9 y. O- j7 B3 b* h1 u1 @: `+ ^9 \7 `& y
    1. 解包mdd,加入css再打包,同时修改mdx里面得css引用7 w! d! z; n" C9 I( S1 A
    2. 在mdx中按照前述方法2进行加style (但你似乎 ...

    % v( @8 T( n) Y; ~4 J我再试了下,这次删掉了一些比较高级的样式,有效果,一些颜色斜体之类的能显示,这样看来,应该是kindle的mobi不支持太多高级CSS,只支持简单的
  • TA的每日心情
    开心
    2023-9-27 20:45
  • 签到天数: 847 天

    [LV.10]以坛为家III

     楼主| 发表于 2019-9-17 16:39:05 | 显示全部楼层
    试了一下午,崩溃了。可以插入外置CSS,在此篇文章《如何把 MDX 格式词典转换成 Kindle 字典》第三步之后生成的html文件<body>标签之前可插入<head><link rel.xxxxxxxx></head>来引用外部CSS,但是不知为何生成的margin和padding等在html中显示正常生成mobi后怎么页不正常。

    该用户从未签到

    发表于 2019-9-23 16:28:01 | 显示全部楼层
    楼主,很巧,我这两天也是在忙着转一部词根词缀的词典为mobi,按照书伴的方法做出来了,只是不支持模糊搜索,遂觉得很难受,查了一番后,刚巧也看到了知乎专栏上的dsl教程,只是我这本词典并无dsl格式,网上遍寻又是找不到mdx转dlc的方法,看到楼主的方法,我也想批量增加变形,只是Python还没入门,不知楼主能否分享一下Python代码,我自己试一试,恳求

    点评

    我正在制作一部Kindle词典,为解决一些问题写了两个工具,其中一个就是这个。等我近期整理  发表于 2019-9-23 18:12

    该用户从未签到

    发表于 2019-9-24 08:13:11 | 显示全部楼层
    天赋的太阳 发表于 2019-9-23 16:28
    6 k$ u) f$ f5 m- ]楼主,很巧,我这两天也是在忙着转一部词根词缀的词典为mobi,按照书伴的方法做出来了,只是不支持模糊搜索 ...

    + x" L  `5 r! x" {) C; Z# k好,支持,感谢
  • TA的每日心情

    2023-12-13 15:25
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2019-10-11 20:24:57 | 显示全部楼层
    不好意思打扰了,楼主,链接挂了... :-P
  • TA的每日心情
    开心
    2023-9-27 20:45
  • 签到天数: 847 天

    [LV.10]以坛为家III

     楼主| 发表于 2019-10-12 08:48:08 | 显示全部楼层
    vicizero 发表于 2019-10-11 20:245 a0 J* g# R2 h
    不好意思打扰了,楼主,链接挂了... :-P
    ' {) s: _0 v9 y; E% `6 I
    分享链接已补
  • TA的每日心情

    2023-12-13 15:25
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2019-10-12 23:05:58 | 显示全部楼层
    nullname 发表于 2019-10-12 08:48
    2 \) \9 w% z1 s+ {6 _! x/ |分享链接已补

    6 f' V6 v' h8 g$ t3 h* a, U好的,已收到,正尝试使用
  • TA的每日心情
    开心
    2019-3-26 21:36
  • 签到天数: 178 天

    [LV.7]常住居民III

    发表于 2019-10-13 01:24:40 | 显示全部楼层
    本帖最后由 流星冲击 于 2019-10-13 01:28 编辑
    ) t' R* a/ C+ f0 f% x9 q
    % q6 _6 ^3 ~3 \  A: x转macos词典和kindle词典最好的源文本格式是stardict格式,而不是mdict(mdx)和lingvo(dsl)格式,stardict可以通过词头添加|来实现查询词条变形,例如walk|walks|walked|walking(mdict需要用@@@link来实现),用pyglossry转成macos词典源码就自动转成相应的词性变化的词条索引,查walked会自动跳转到walk。5 j3 q% g% _0 J$ [, r
    epub dict文档的格式、kindle词典、macos词典、epwing词典的源码在处理词性变化索引都是一致的,源码也类似。kindle词典还停留在xhtml时代,不支持音视频,支持css元素少,不开源,可能受限于机器性能,所以一直没有kindle fire8制式(类似epub3)的开发文档。
    5 R) z" W* {7 n* X; c. Repub dict有开发文档了,但没有编译器和相关阅读器来支持,用epub3制式来开发一款词典,可用的css元素相当多,之前想用encarta dictionary研究如何转成epub,发现只能作阅读使用,不能用来查询单词,就放弃了。epwing的词头索引适合做日本语的词条索引,当然也适用于印欧语的词性变化词典的索引,但不支持css。macos词典自从2011年以来,苹果就没对其格式进行大的修改,可能js方面兼容性有问题,css应该没问题,用三指查询macos词典可是会上瘾的(即点生词即弹出解释界面,非常方便)。
    2 Q- A0 F* y4 B$ P9 {% [' z9 q所以我的思路是,dsl,mdx等格式,先转成stardict,由于stardict开源,工具多,转换成mobi的源码可能会自带词性变形。' d1 T) O4 `, g2 `
    还有mdx内嵌style标签,需要每个词头content都要包含,你是想让mobi每个词条都实现某些css效果吧,mobi7不是可以内嵌css吗?为什么还要内嵌style标签?当然,我没有转过mobi词典,只是提出疑问,没有打击楼主制作mobi词典的热情。
  • TA的每日心情
    开心
    2023-9-27 20:45
  • 签到天数: 847 天

    [LV.10]以坛为家III

     楼主| 发表于 2019-10-13 09:11:32 | 显示全部楼层
    本帖最后由 nullname 于 2019-10-13 09:12 编辑
    0 K8 ~& A' [, a" _
    流星冲击 发表于 2019-10-13 01:24! u% `  B8 V6 l6 ?" _
    转macos词典和kindle词典最好的源文本格式是stardict格式,而不是mdict(mdx)和lingvo(dsl)格式,stardict可 ...
    5 a, N0 w/ p+ J: F
    是的,书伴上的教程也是这个原理,即MDX转StarDict再转tab文件再转OPF最后转MOBI。因为tab2opf这个工具比较方便,且tab文件的格式也比较友好(每个词条由词头tab空格意向这三个部分组成),所以只要能转成tab即可,后来我也发现了pyglossary这个工具,但是该工具有个缺点就是转一些词典(尤其是一些汉语辞典)的时候,tab文件中意项部分全部都是数字形式的CSS,可能是该辞典在用MDXBuilder生成的时候添加了style资源。) t( I& z7 t8 \

    $ C2 E0 z, }& `' o$ k5 ydsl2mobi这个工具可以直接为dsl词典生成带有词性变化的mobi,但是考虑到词典内本身存在的大量@LINK跳转,最好还是解包后进一步处理较好。
    / g2 V2 Y) }( \! T
    7 o+ i6 `% k- Y. P0 M7 i关于内嵌CSS,此篇帖子发出后我又经过试验搜索,最终得出的结论是,可以支持外挂CSS,在每个HTML文件的头部添加LINK即可。层主可以看看这篇:https://www.pdawiki.com/forum/forum.php?mod=viewthread&tid=36130
  • TA的每日心情
    慵懒
    2024-1-31 14:20
  • 签到天数: 121 天

    [LV.7]常住居民III

    发表于 2019-10-22 18:28:39 | 显示全部楼层
    楼主,在下学习心切,也向你恳求相关Python代码,anyway,我已不胜感激。。。
  • TA的每日心情
    开心
    2023-9-27 20:45
  • 签到天数: 847 天

    [LV.10]以坛为家III

     楼主| 发表于 2019-10-22 19:18:37 | 显示全部楼层
    vpda2016 发表于 2019-10-22 18:28
    - A2 b$ |/ `7 y3 Z# r楼主,在下学习心切,也向你恳求相关Python代码,anyway,我已不胜感激。。。 ...

    ! }2 Z+ \* M2 c( s" ~+ M/ \代码已经发了,在这个帖子里面, W6 m1 |2 [/ G9 E0 ]
    , {, f- m' z- w, T$ x
    Python辅助MDX转MOBI(以AHD5th为例)
    . d! ^7 D. q5 _8 @5 ?- Uhttps://www.pdawiki.com/forum/fo ... hread&tid=36130. M: p6 M# d6 g0 S
    (出处: 掌上百科 - PDAWIKI)9 [+ ~2 A9 V! S, M1 a* e) O
  • TA的每日心情
    慵懒
    2024-1-31 14:20
  • 签到天数: 121 天

    [LV.7]常住居民III

    发表于 2019-10-22 19:32:25 | 显示全部楼层
    nullname 发表于 2019-10-22 19:18
    , d5 n1 A; E" @# T代码已经发了,在这个帖子里面! \) [2 f- I8 F, L2 \$ d' W

    " x9 P3 l8 u0 \) n8 v( vPython辅助MDX转MOBI(以AHD5th为例)
    + V9 Q; N; l6 X7 ?+ Y
    正在看,谢谢亲。大神。
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2026-9-2 00:02 , Processed in 0.030513 second(s), 25 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表