掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 8676|回复: 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 编辑 . S, F- Y- r5 R5 b, d# }
    . E9 p# z+ t1 f
    00
    & W! H6 I! [5 P$ T: Q9 e( M7 z3 @3 m相较于MDX词典的百花齐放、门类齐全(从学习型再到母语型再到俗语习语俚语等,不一而足。) Kindle用的MOBI词典就显得冷落多了,有意义的词典非常有限,也许是因为Kindle的使用人数很少吧.... 基本就是官方的英英、英汉和 skywind3000 大神的这本 简明英汉必应版 了。# m4 z; K. d2 I: G# V1 T6 y
    其他的像书伴上的那些都很难用,主要问题就在于不具备 词形变化 的查询能力。比如书中出现了 looked, raised 这种单词,它们基本都不能直接查询到 look, raise。  p, e8 L: V5 C% Q+ N
    0 Q2 T) |6 T1 u6 C
    之前在知乎上看见孙缓之的一篇帖子(见此 Kindle OALD9 民间发布(仅限交流使用)),可以用 dsl2mobi 这个工具来将 dsl 词典转化为 mobi,且具备词形变化的查询能力。但貌似 dsl 词典不是太好找。
    5 f( P+ p. k7 o! a1 d6 a) ?5 T+ {, V% K6 u( F; K9 F, C
    因此,想试试能否将 MDX 转为 MOBI。教程不多,仅在书伴上找到了这几篇文章。(请见 《如何把 MDX 格式词典转换成 Kindle 字典》《自制 Kindle 字典简明教程(入门篇)》《自制 Kindle 字典简明教程(进阶篇)》
    # N, n0 E+ w' c9 [0 I: u0 H, R, t/ o% H! U0 A  ?' s
    根据  《如何把 MDX 格式词典转换成 Kindle 字典》 这篇教程,转化出来的词典不具备查询 词形变化 的单词的能力。主要原因在于没有添加变化后的单词,如图红色矩形区域(更详细的请见 《自制 Kindle 字典简明教程(进阶篇)》)。
    1 ~; G& W3 k" g$ }, S+ s
    , l$ c9 r4 D9 ^. s1 z6 z2 g
    以 COED11 举例,这是转换后的 HTML 中的词头部分:
    ) c( ~& G& \6 I1 i+ j" S5 U. i! e! ?4 d9 i! v/ k. e* y
    若要具备 词形变化 能力,需要的区块(红色矩形部分):4 {( ^1 \* Y) N" j

    . S; v6 x; R% u) i: N8 {6 ~6 R1 [8 ]+ n3 g
    " U) Q* Y8 l. b0 {' w
    我抓破脑袋都想不出怎么样才能自动添加这些进去,后来想起 dsl2mobi 有这个功能,就下载下来研究了一下。该工具是 ruby 写的,基本看不大懂,不过我在其目录下发现了包含十几万英文单词词形变化的 TXT:/ L) n- e- ]& Q( p# F% {) {2 `' K
    5 ~/ U5 N/ @3 Z

    " U3 a  b1 P- B1 K3 E/ o: b8 N' s! r! H4 U* Q
    排列比较有规律,格式为  单词原型:变化1,变化2,变化3......  因此用 python 写了正则批量查询添加:
    5 R3 A& `- E- N% F) U
    2 ?/ i; f) @$ Y1 Y
    0 n! o" p! \9 j1 i/ p: B

    1 }2 ?$ \7 f- ~. A4 b' J跑完之后:
    5 |2 H4 k. @+ V
    , P, c6 E+ G7 I" i, S1 S+ j: i# W

    - Q6 d3 B8 a4 v3 N, ~  k: B3 [! ~/ U/ I$ z: s
    基本原理大概就是从词典中取出主词条单词后再在 forms-EN.txt 中查询匹配,若成功则返回所有的变化形式并添加区块代码。然后重新生成 mobi 。9 Q! i) ]- _7 e; ]7 K3 N$ O4 d
    2 u8 i3 c0 W5 g% Y; m% ~
    兴冲冲的试了试,
    7 [1 `, o4 X6 s# ]0 k' l0 v

    9 m# [/ M+ e& R# l* i9 T5 L3 {                          两个看起来都没什么问题,和我们想想中一样。: J. W! @/ d  ?4 p9 W5 s
    : p* j1 X5 @7 I( @- J8 s
    再试试,3 I4 n4 t/ }( x- v4 F' {
    9 R& @+ q% v$ v) q
         查询dealt的时候,按设想,应该是查询deal才对,结果并不是。
    & A7 l  i/ L$ T. H8 }7 Z$ y6 {4 E/ _* Z1 i
    用官方的词典试试
    5 B5 ^6 _0 }' Z: A
    0 [  P  n7 W+ C4 g0 v1 O同样如此。  V* R6 c4 G0 M' O9 Z( |9 |

    3 k; ^4 H; s7 T) k0 t3 @7 ]0 L# N$ {" f% P
    2 B* b- p7 W' k! o9 E2 ~. h
    01
    5 }7 c" X& @8 C( d( b# H+ b3 m( n( @
    后来经过反复试验,发现了 Kindle 的查词逻辑:选中单词后,查询主词条是否匹配成功,成功则返回对应的条目,同时不再继续查询变形词条。没有主词条的话则查询词形变化区块是否有匹配,若有则返回变化词条的原型主词条。2 a& d" W  o: |3 [, [1 K: P- g+ P

    $ @  h: X9 D3 Y8 `* Xdeal 的词条部分已经添加了 dealt 作为变形词条,然而我手中的这版 COED11.mdx 和官方的Oxford Dictionary of English 都有了 dealt 这个主词条,词条内容如上图。因此不会返回 deal 词条的内容。, R0 L8 W" y; b
    5 B+ s$ ?5 N# c2 I. W3 L
    知道问题所在后,如何解决呢?想了想,很难,因为英语词义太丰富(Rich)了。比如flame,它的词形变化理应有flaming对吧。但是flaming本身可能自成一义(火爆的,讨厌的,该死的),如果查询flaming的时候跳转到了flame,从flame很难猜到flaming的一些专有词义。除非亚马逊更新固件,修改上述的查词逻辑,即不论查不查的到主词条,变形词条所在的原型主词条一并显示。不过目前看来希望渺茫。
    8 I9 B) a0 h* Q
    6 F( U0 G6 S% l+ J: @4 m

    * V2 l6 N& N& a) T$ m. [% [02+ u  Y, G+ S! g9 v
    即使如此,还是有许多优秀的 MDX 词典值得页应该被转化为 mobi 以供大家使用的。个人认为kindle上不适合使用学习型词典这类词义较少的词典。比如你在看书的时候看到了square这个单词,假如你用牛津高阶,你翻到底都翻不到“步兵方阵”这个释义,最后陷入深深的自我怀疑...然后又去提问“为什么我每个单词的意思都看得懂但是就是读不懂句子的意思...”。! L4 i$ t) d: L- ^+ B3 [

    1 B2 y+ x# ~4 m/ \7 a经过一段时间的试验,我发现 The World Book Dictionary 和 Microsoft Encarta Dictionary 这两本词典非常适合“高阶有余,母语不足”的英语水平者的使用,但把它们转成mobi难度略大......由于水墨屏的特性,kindle 上词典个人以为只需要1.粗体 2. 斜体 3.浅色 这几种样式即可,不要图片、音频。同时要求css内置在mdx中,不能外挂。在此也向各位请教如何将外挂的css内置进mdx中的方法,我尝试了在html中添加style标签然后将css全部复制进去,但似乎并没有效果?各位如果有较好的适合在kindle上使用的词典也可以发出来大家尝试转换。6 G# b+ H  g* t  i
    ( m' {6 F- W. }6 ^+ H
    写的比较乱,抱歉。也欢迎大家交流讨论和指点。
    # S" [( y* t8 I  J$ C6 q
    # F5 f7 e4 B4 v
      K$ b7 r& `) M5 |- g! y* c. m) j
    最后附上制作完成的COED11th.mobi- h" i: [* f$ _

      C! Q& x1 Z8 t5 u- C5 `

    ! K  V! l& f! D; ?4 v; S链接: https://pan.baidu.com/s/1TyMK4P1A6ltCEDr2Bt_rNg 提取码: zp3b ) k! F2 ?9 i4 O/ N; X
    3 k; _* ?9 E6 K5 H2 b
    ----------------------2019.10.12补链----------------------
    0 L8 @8 h' K0 s1 i2 @" y3 J- q8 \链接: https://pan.baidu.com/s/1bSRfcScur482utaLmsxOgg 提取码: 4b5h; Q/ g! T5 F. t0 c

    ! m; P% g8 i2 F6 [! F# p
    - @1 Y2 @0 ~) Y; \9 x/ n
    ! G0 n9 d! Y# l( K
    4 K0 P8 R% _) E
    : o4 s% M0 C$ @5 i: S
    # n' e& r; ]4 |; |1 X

    + d# Y- d8 _8 J( F
    ' n9 T# Y0 B( z( G6 z

    1 n7 J+ ^& ~) r: ]% Q7 k, t  `, b0 Y$ K( U
    1 C4 K! z! G* A

    ! R$ e# T0 Q$ C

    本帖子中包含更多资源

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

    x

    评分

    3

    查看全部评分

    本帖被以下淘专辑推荐:

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

    [LV.7]常住居民III

    发表于 2019-9-16 18:36:15 | 显示全部楼层
    按浏览器加载css文件的逻辑(不包括css外挂,css外挂是MDict和Eudic默认允许的非通行标准做法,国际软件一般还未支持)的三种:
    4 W+ A3 I2 L$ [/ p6 \, c5 t1. html tag 上的style, inline,如 <div style="font-size:14px">
    ) G0 m- w! @, G8 S* c2. <style>div {font-size:14px;}</style>
    + v* w5 W9 t* K6 }3. <link href="styles.css">
    2 |" ?8 u& N) d; L
    * L2 N5 w4 u5 {% I$ d7 x% N# Y第三种,根据mdict的设计逻辑,可以放到mdd文件中;前两种,直接在mdx文件中。# N* l1 }+ G9 o" L  A. I* v, F
  • 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:366 u" F0 A6 y4 S2 _/ v7 i  T
    按浏览器加载css文件的逻辑(不包括css外挂,css外挂是MDict和Eudic默认允许的非通行标准做法,国际软件一 ...

    5 G7 c" u$ Y, U8 I; m, R/ v学习了,不过我想的是是否有什么方法能将现成的外挂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:253 \  h. `- A% F5 K$ C+ {) Z8 K* g
    看了下这个源码跟mac词典源码有点像
      F- j/ E/ T! |* ]+ Z5 t
    可惜只是像...若是一样的那大神就很多了..
  • 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
    ; |) _5 P4 @, O% {, x4 Q% g学习了,不过我想的是是否有什么方法能将现成的外挂css中的样式还原进mdx中呢?因为mdx差不多本身就是多 ...

    0 j! n, }5 K- s6 E& J3 t1. 解包mdd,加入css再打包,同时修改mdx里面得css引用
      T8 c" ?7 _4 e1 m3 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:46
    2 x# [1 @. D( [$ @3 L1. 解包mdd,加入css再打包,同时修改mdx里面得css引用6 A5 O" q" V1 u- p- k4 J0 m
    2. 在mdx中按照前述方法2进行加style (但你似乎 ...

    / l; V! n  f$ [# z我再试了下,这次删掉了一些比较高级的样式,有效果,一些颜色斜体之类的能显示,这样看来,应该是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:282 J7 {8 Q3 }& b% m) b3 j
    楼主,很巧,我这两天也是在忙着转一部词根词缀的词典为mobi,按照书伴的方法做出来了,只是不支持模糊搜索 ...
    . E% s  e& k0 C# j
    好,支持,感谢
  • 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:249 Q  h  l5 F/ Y2 x! ~
    不好意思打扰了,楼主,链接挂了... :-P
    ) F& g# Q. ]/ W- O) Z
    分享链接已补
  • TA的每日心情

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

    [LV.2]偶尔看看I

    发表于 2019-10-12 23:05:58 | 显示全部楼层
    nullname 发表于 2019-10-12 08:487 l+ K$ t2 T7 b3 M1 h1 D7 I% e
    分享链接已补
    7 @1 a& c2 G- y8 A5 b
    好的,已收到,正尝试使用
  • TA的每日心情
    开心
    2019-3-26 21:36
  • 签到天数: 178 天

    [LV.7]常住居民III

    发表于 2019-10-13 01:24:40 | 显示全部楼层
    本帖最后由 流星冲击 于 2019-10-13 01:28 编辑 ! V6 v7 k/ L) D, M  ~
    3 Z1 g$ e/ W0 R9 C: f3 g
    转macos词典和kindle词典最好的源文本格式是stardict格式,而不是mdict(mdx)和lingvo(dsl)格式,stardict可以通过词头添加|来实现查询词条变形,例如walk|walks|walked|walking(mdict需要用@@@link来实现),用pyglossry转成macos词典源码就自动转成相应的词性变化的词条索引,查walked会自动跳转到walk。
    * T0 t+ L* |: a/ H" ^( Iepub dict文档的格式、kindle词典、macos词典、epwing词典的源码在处理词性变化索引都是一致的,源码也类似。kindle词典还停留在xhtml时代,不支持音视频,支持css元素少,不开源,可能受限于机器性能,所以一直没有kindle fire8制式(类似epub3)的开发文档。
    ' B5 m+ {4 z' j, T& y) Z& qepub dict有开发文档了,但没有编译器和相关阅读器来支持,用epub3制式来开发一款词典,可用的css元素相当多,之前想用encarta dictionary研究如何转成epub,发现只能作阅读使用,不能用来查询单词,就放弃了。epwing的词头索引适合做日本语的词条索引,当然也适用于印欧语的词性变化词典的索引,但不支持css。macos词典自从2011年以来,苹果就没对其格式进行大的修改,可能js方面兼容性有问题,css应该没问题,用三指查询macos词典可是会上瘾的(即点生词即弹出解释界面,非常方便)。$ D& u1 T) W4 I$ C- a2 b- N
    所以我的思路是,dsl,mdx等格式,先转成stardict,由于stardict开源,工具多,转换成mobi的源码可能会自带词性变形。) P3 g8 L* n4 b" 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 编辑 . g8 H9 S: v; d$ G- }# N+ a; R8 [- u
    流星冲击 发表于 2019-10-13 01:245 S2 v. k% w3 g7 |1 i! z% ?
    转macos词典和kindle词典最好的源文本格式是stardict格式,而不是mdict(mdx)和lingvo(dsl)格式,stardict可 ...
    % y, [# v) ^( L) ~  ~. w$ P/ Q
    是的,书伴上的教程也是这个原理,即MDX转StarDict再转tab文件再转OPF最后转MOBI。因为tab2opf这个工具比较方便,且tab文件的格式也比较友好(每个词条由词头tab空格意向这三个部分组成),所以只要能转成tab即可,后来我也发现了pyglossary这个工具,但是该工具有个缺点就是转一些词典(尤其是一些汉语辞典)的时候,tab文件中意项部分全部都是数字形式的CSS,可能是该辞典在用MDXBuilder生成的时候添加了style资源。1 V, l5 ^& x5 X6 k4 M
    / z/ c% H8 S* \/ J( S$ T+ k
    dsl2mobi这个工具可以直接为dsl词典生成带有词性变化的mobi,但是考虑到词典内本身存在的大量@LINK跳转,最好还是解包后进一步处理较好。
    * L4 O& e  h1 x; s# T  N8 f# T7 W
    2 S" j4 W* E# g+ |6 x: G7 A7 p9 |关于内嵌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) i6 ?  D; z: L4 M+ Z% N
    楼主,在下学习心切,也向你恳求相关Python代码,anyway,我已不胜感激。。。 ...
    ! _+ g1 p% g! N( {  o' l( q8 z3 [
    代码已经发了,在这个帖子里面7 U; `6 ?) U# A9 `* o3 G

    ; u- B0 v8 g7 G$ ^! s; RPython辅助MDX转MOBI(以AHD5th为例)
    1 _8 X! n' ?, k5 L: S7 ihttps://www.pdawiki.com/forum/fo ... hread&tid=36130
    2 f; i, p4 h# X7 [  z4 Q(出处: 掌上百科 - PDAWIKI)
    ) o3 P' u! C/ P- u  ~% u
  • TA的每日心情
    慵懒
    2024-1-31 14:20
  • 签到天数: 121 天

    [LV.7]常住居民III

    发表于 2019-10-22 19:32:25 | 显示全部楼层
    nullname 发表于 2019-10-22 19:18( o3 z4 Q+ {, k7 A; a% G9 m, g
    代码已经发了,在这个帖子里面
    % }" n8 v% r4 x+ C4 B/ V
    & |" ]' G& J! p- N1 ?4 |Python辅助MDX转MOBI(以AHD5th为例)

    5 y" Y' e; S3 l; [& A正在看,谢谢亲。大神。
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2025-5-5 21:06 , Processed in 0.024699 second(s), 25 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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