掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 6885|回复: 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 编辑   V1 ~( [; r" x/ _( c( i5 {
    ) X( a. D5 c. G- k
    00
    - G, v# K  ^; l7 J/ a1 _( v相较于MDX词典的百花齐放、门类齐全(从学习型再到母语型再到俗语习语俚语等,不一而足。) Kindle用的MOBI词典就显得冷落多了,有意义的词典非常有限,也许是因为Kindle的使用人数很少吧.... 基本就是官方的英英、英汉和 skywind3000 大神的这本 简明英汉必应版 了。$ N( {% J8 h! R% R; W- q/ R8 |
    其他的像书伴上的那些都很难用,主要问题就在于不具备 词形变化 的查询能力。比如书中出现了 looked, raised 这种单词,它们基本都不能直接查询到 look, raise。1 }# Y& G  d5 V
    7 J2 _( y: R6 C5 H; F% J5 E
    之前在知乎上看见孙缓之的一篇帖子(见此 Kindle OALD9 民间发布(仅限交流使用)),可以用 dsl2mobi 这个工具来将 dsl 词典转化为 mobi,且具备词形变化的查询能力。但貌似 dsl 词典不是太好找。
    * G$ i3 c& ?  k5 K1 B" [' g% F7 q& @7 W4 v3 a5 E( k
    因此,想试试能否将 MDX 转为 MOBI。教程不多,仅在书伴上找到了这几篇文章。(请见 《如何把 MDX 格式词典转换成 Kindle 字典》《自制 Kindle 字典简明教程(入门篇)》《自制 Kindle 字典简明教程(进阶篇)》
    2 |3 K2 J1 i: O$ }2 t
    ' W* t) s! B1 S: U: T. K根据  《如何把 MDX 格式词典转换成 Kindle 字典》 这篇教程,转化出来的词典不具备查询 词形变化 的单词的能力。主要原因在于没有添加变化后的单词,如图红色矩形区域(更详细的请见 《自制 Kindle 字典简明教程(进阶篇)》)。8 W& t" I% }* P+ K% A& f+ t
    6 l7 @& x# \% m9 I/ c# ]; f
    以 COED11 举例,这是转换后的 HTML 中的词头部分:
    ; v8 a0 ]& q- E
    8 u) K6 |0 S5 i' p若要具备 词形变化 能力,需要的区块(红色矩形部分):
    # m8 _( W  f  \: k
    * U: W) @5 g# M; ~# B

    6 j" n" W* q! n! s- e2 ^# ]0 L2 C
    3 C1 X; B$ `" q- [4 F8 m9 J我抓破脑袋都想不出怎么样才能自动添加这些进去,后来想起 dsl2mobi 有这个功能,就下载下来研究了一下。该工具是 ruby 写的,基本看不大懂,不过我在其目录下发现了包含十几万英文单词词形变化的 TXT:! i& V# a' p6 F( P2 {! A6 @

    . N3 A; C2 h$ Z3 }+ S- B# {3 I
    ' ?/ ~. x' A- D3 [
    ' m! |- w# b$ T: _( |排列比较有规律,格式为  单词原型:变化1,变化2,变化3......  因此用 python 写了正则批量查询添加:: C# F* k' v+ P2 t

    9 [- n/ C2 ?- k4 w1 `% v7 N( O
    + a/ _5 U0 ]1 X% @3 u+ @% {: w1 k
    跑完之后:! V/ X$ S$ q7 y* R
    . l5 Y8 @; p3 k

    ) c" q& b5 h. y( e) r" e- u  r
    基本原理大概就是从词典中取出主词条单词后再在 forms-EN.txt 中查询匹配,若成功则返回所有的变化形式并添加区块代码。然后重新生成 mobi 。
    - X! x- b( _! ?& K% N; L' O$ ?' Z9 ?3 I$ T* q. M
    兴冲冲的试了试,5 Z7 w! F% k" u6 Z
    7 I( Y4 X# z" ?( x$ J! K. t
                              两个看起来都没什么问题,和我们想想中一样。" Q2 S& ]7 g. ~7 H0 ~
    " @+ d2 n. P$ c/ P" ^
    再试试,
    ( q3 ~& G7 O& D/ [6 W4 D, E

    0 l. T: H- X/ s$ v! u     查询dealt的时候,按设想,应该是查询deal才对,结果并不是。
    4 ]  `1 _: I8 X6 k
    5 m3 l: c* z, T7 u# O用官方的词典试试
    ! p7 a) \0 i# O5 M+ p, n: E: t* Q8 ?+ w
    6 P. T+ A: X& S+ O+ h1 e同样如此。
    / L; G; d! b8 k7 }8 v" s

    . s& i. p, o1 g9 m3 b5 p7 r, Y$ z+ h4 Y9 l: {3 P- D
    % G. \8 ^. x. b
    01
      m* B" {7 {% S# c" I
    # e% }) l8 C: w* u! S( |" c后来经过反复试验,发现了 Kindle 的查词逻辑:选中单词后,查询主词条是否匹配成功,成功则返回对应的条目,同时不再继续查询变形词条。没有主词条的话则查询词形变化区块是否有匹配,若有则返回变化词条的原型主词条。
    2 M1 G# }1 N  W: M
    , O% j( B5 N2 q. y; adeal 的词条部分已经添加了 dealt 作为变形词条,然而我手中的这版 COED11.mdx 和官方的Oxford Dictionary of English 都有了 dealt 这个主词条,词条内容如上图。因此不会返回 deal 词条的内容。- A- ]" L: I; ?4 Y5 U/ a
    ; R0 v. }/ C9 {& E, B; u
    知道问题所在后,如何解决呢?想了想,很难,因为英语词义太丰富(Rich)了。比如flame,它的词形变化理应有flaming对吧。但是flaming本身可能自成一义(火爆的,讨厌的,该死的),如果查询flaming的时候跳转到了flame,从flame很难猜到flaming的一些专有词义。除非亚马逊更新固件,修改上述的查词逻辑,即不论查不查的到主词条,变形词条所在的原型主词条一并显示。不过目前看来希望渺茫。
    # _& [9 e  @6 [) H& R1 g
      R" P/ V& ~; |- ~$ a3 B
    7 G2 k4 p0 {) `# {! p8 F1 \3 {
    024 i8 l+ M- B5 l$ O9 j6 @  x8 f$ w
    即使如此,还是有许多优秀的 MDX 词典值得页应该被转化为 mobi 以供大家使用的。个人认为kindle上不适合使用学习型词典这类词义较少的词典。比如你在看书的时候看到了square这个单词,假如你用牛津高阶,你翻到底都翻不到“步兵方阵”这个释义,最后陷入深深的自我怀疑...然后又去提问“为什么我每个单词的意思都看得懂但是就是读不懂句子的意思...”。0 r" N% E* o" m2 _3 U( u9 ^& m

    . O* F& E0 _; a& k+ C1 X; r% y经过一段时间的试验,我发现 The World Book Dictionary 和 Microsoft Encarta Dictionary 这两本词典非常适合“高阶有余,母语不足”的英语水平者的使用,但把它们转成mobi难度略大......由于水墨屏的特性,kindle 上词典个人以为只需要1.粗体 2. 斜体 3.浅色 这几种样式即可,不要图片、音频。同时要求css内置在mdx中,不能外挂。在此也向各位请教如何将外挂的css内置进mdx中的方法,我尝试了在html中添加style标签然后将css全部复制进去,但似乎并没有效果?各位如果有较好的适合在kindle上使用的词典也可以发出来大家尝试转换。
    8 v& b1 s& i# ~" A7 I5 ]9 C3 T1 f4 S  i! }
    写的比较乱,抱歉。也欢迎大家交流讨论和指点。( C& f) j9 m% i" J# Q
    ) W6 }# m5 }: t2 ^
    9 _6 A7 A7 _. ?  g2 Y: T
    最后附上制作完成的COED11th.mobi
    1 d( O* v  r' j5 A2 ~+ m
    # Q  w6 C- g& l

      N- p" J" b# c6 [$ B链接: https://pan.baidu.com/s/1TyMK4P1A6ltCEDr2Bt_rNg 提取码: zp3b ) I8 V2 A8 J- X; z
    % r0 \' r# {% K7 G6 _
    ----------------------2019.10.12补链----------------------) u; s9 Y  ]' M  s4 m
    链接: https://pan.baidu.com/s/1bSRfcScur482utaLmsxOgg 提取码: 4b5h
    ! j  }# p$ t0 I0 c: B7 D

    ( S6 j9 |0 b2 L6 F9 O* I

    3 ]+ l- ^4 Q  m3 g
    & l4 C- W1 a/ M/ l. \% n# Y0 d# D* [( C4 e* }
    - [: A* t2 S. [, X" j# r' e
      P% I* O4 W* q# z/ f  q2 k1 Z

    ' ~& V: Q& P/ G( l! a) X8 L- D8 A1 m/ U4 u- e) G+ O5 s
    0 }& g; r; g6 x. J5 Y+ D* Q9 `

    # j7 Q3 u# Q8 {) n
    # d* }5 d" D1 l) z1 W0 k! t+ D& [& [

    本帖子中包含更多资源

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

    x

    评分

    3

    查看全部评分

    本帖被以下淘专辑推荐:

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

    [LV.7]常住居民III

    发表于 2019-9-16 18:36:15 | 显示全部楼层
    按浏览器加载css文件的逻辑(不包括css外挂,css外挂是MDict和Eudic默认允许的非通行标准做法,国际软件一般还未支持)的三种:
    : d/ v  n+ s! l6 w8 c$ N1. html tag 上的style, inline,如 <div style="font-size:14px">. b) f: v7 ^( w
    2. <style>div {font-size:14px;}</style>1 a+ Q/ L) Z5 f
    3. <link href="styles.css">
    7 U- Y9 a5 h; a& E3 e" d! t7 s( w% Q# w
    第三种,根据mdict的设计逻辑,可以放到mdd文件中;前两种,直接在mdx文件中。) L( i: H- O3 ?7 N# y0 N3 h
  • 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: V) t" G7 I9 a& u
    按浏览器加载css文件的逻辑(不包括css外挂,css外挂是MDict和Eudic默认允许的非通行标准做法,国际软件一 ...
    : c: C& }* d$ l. s
    学习了,不过我想的是是否有什么方法能将现成的外挂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
    2 l, b6 o7 ~' y! t1 `看了下这个源码跟mac词典源码有点像
    / W3 k! G& E- e+ 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$ Q1 H+ N# B5 A- ~' f$ Y
    学习了,不过我想的是是否有什么方法能将现成的外挂css中的样式还原进mdx中呢?因为mdx差不多本身就是多 ...
    . w# B7 ^) s" D* ]1 ~
    1. 解包mdd,加入css再打包,同时修改mdx里面得css引用
    ' X: z, a" u) [( k: n- U/ B2. 在mdx中按照前述方法2进行加style (但你似乎说了不行,不知道你为什么不行,可能有局部出错了)
  • TA的每日心情
    开心
    2023-9-27 20:45
  • 签到天数: 847 天

    [LV.10]以坛为家III

     楼主| 发表于 2019-9-17 08:29:36 | 显示全部楼层
    johannhuang 发表于 2019-9-16 21:467 O) s3 G7 m6 r# x- N! q& \' L
    1. 解包mdd,加入css再打包,同时修改mdx里面得css引用
    - Q- |$ N. W) {0 H& _6 G. y2 P2. 在mdx中按照前述方法2进行加style (但你似乎 ...
    6 T; x5 [% \9 P& W
    我再试了下,这次删掉了一些比较高级的样式,有效果,一些颜色斜体之类的能显示,这样看来,应该是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
    ! E* r! Y5 w6 T- K楼主,很巧,我这两天也是在忙着转一部词根词缀的词典为mobi,按照书伴的方法做出来了,只是不支持模糊搜索 ...
    ! I: z4 G& m) W8 N5 Y$ T
    好,支持,感谢
  • 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:24$ i6 D! G7 T; f' p4 L, J/ ~1 U
    不好意思打扰了,楼主,链接挂了... :-P

    5 x. ?6 l$ d% }6 E分享链接已补
  • TA的每日心情

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

    [LV.2]偶尔看看I

    发表于 2019-10-12 23:05:58 | 显示全部楼层
    nullname 发表于 2019-10-12 08:482 w& }" ~$ g# a7 `5 I: S
    分享链接已补
    2 B. y, y5 H/ D4 u. E* a
    好的,已收到,正尝试使用
  • TA的每日心情
    开心
    2019-3-26 21:36
  • 签到天数: 178 天

    [LV.7]常住居民III

    发表于 2019-10-13 01:24:40 | 显示全部楼层
    本帖最后由 流星冲击 于 2019-10-13 01:28 编辑 . w' b* W/ U; p; d+ @/ A
    7 B. ?1 O, K. S, Q* c# _
    转macos词典和kindle词典最好的源文本格式是stardict格式,而不是mdict(mdx)和lingvo(dsl)格式,stardict可以通过词头添加|来实现查询词条变形,例如walk|walks|walked|walking(mdict需要用@@@link来实现),用pyglossry转成macos词典源码就自动转成相应的词性变化的词条索引,查walked会自动跳转到walk。+ L8 v1 R$ m8 p4 l- u0 c
    epub dict文档的格式、kindle词典、macos词典、epwing词典的源码在处理词性变化索引都是一致的,源码也类似。kindle词典还停留在xhtml时代,不支持音视频,支持css元素少,不开源,可能受限于机器性能,所以一直没有kindle fire8制式(类似epub3)的开发文档。6 s& g1 E; }" x1 B# A0 c$ ]2 U
    epub dict有开发文档了,但没有编译器和相关阅读器来支持,用epub3制式来开发一款词典,可用的css元素相当多,之前想用encarta dictionary研究如何转成epub,发现只能作阅读使用,不能用来查询单词,就放弃了。epwing的词头索引适合做日本语的词条索引,当然也适用于印欧语的词性变化词典的索引,但不支持css。macos词典自从2011年以来,苹果就没对其格式进行大的修改,可能js方面兼容性有问题,css应该没问题,用三指查询macos词典可是会上瘾的(即点生词即弹出解释界面,非常方便)。
    - Y" A2 ~0 h+ N1 w3 h# R' g所以我的思路是,dsl,mdx等格式,先转成stardict,由于stardict开源,工具多,转换成mobi的源码可能会自带词性变形。
    0 {7 ]7 L( i& y! ?, b6 n还有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 编辑 / I/ }& H4 ~% J& W: u5 {+ E
    流星冲击 发表于 2019-10-13 01:247 W9 i  C5 c  H' f$ m9 I
    转macos词典和kindle词典最好的源文本格式是stardict格式,而不是mdict(mdx)和lingvo(dsl)格式,stardict可 ...
    " \/ v( k) q; s, A/ P
    是的,书伴上的教程也是这个原理,即MDX转StarDict再转tab文件再转OPF最后转MOBI。因为tab2opf这个工具比较方便,且tab文件的格式也比较友好(每个词条由词头tab空格意向这三个部分组成),所以只要能转成tab即可,后来我也发现了pyglossary这个工具,但是该工具有个缺点就是转一些词典(尤其是一些汉语辞典)的时候,tab文件中意项部分全部都是数字形式的CSS,可能是该辞典在用MDXBuilder生成的时候添加了style资源。
    ) u- M( |% M1 d
    5 `& h2 k. `) O. G2 ndsl2mobi这个工具可以直接为dsl词典生成带有词性变化的mobi,但是考虑到词典内本身存在的大量@LINK跳转,最好还是解包后进一步处理较好。
    . W3 N+ M7 R- h; |0 X: D% M# G' Z& B: {* h9 q
    关于内嵌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) t: l3 @3 }+ |% d0 F, R: Z2 L/ g) {' G
    楼主,在下学习心切,也向你恳求相关Python代码,anyway,我已不胜感激。。。 ...
    ( F$ C  R0 j% x( O8 O( w
    代码已经发了,在这个帖子里面
    1 \( w& r) `; y: v) z
    $ c* N7 h) L$ d4 u; mPython辅助MDX转MOBI(以AHD5th为例); V5 D2 L- w4 l
    https://www.pdawiki.com/forum/fo ... hread&tid=36130
    ' }3 o9 o7 t$ m* C6 Y" e(出处: 掌上百科 - PDAWIKI)  C& v) |7 H' Q
  • TA的每日心情
    慵懒
    2024-1-31 14:20
  • 签到天数: 121 天

    [LV.7]常住居民III

    发表于 2019-10-22 19:32:25 | 显示全部楼层
    nullname 发表于 2019-10-22 19:18. u  n* R6 j( W  I: Z. s4 P% R" h
    代码已经发了,在这个帖子里面
      {  A9 l2 o2 t+ b5 H
    3 o- @# Y% I, j7 i  @Python辅助MDX转MOBI(以AHD5th为例)
    ) `: P- I  W7 {8 A' H
    正在看,谢谢亲。大神。
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-16 17:25 , Processed in 0.055701 second(s), 10 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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