查看: 1120|回复: 8
打印 上一主题 下一主题

[讨论] 挑战巨大词典 ②

[复制链接]
  • TA的每日心情

    2020-8-15 10:40
  • 签到天数: 146 天

    [LV.7]常住居民III

    23

    主题

    363

    回帖

    3万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    39693
    跳转到指定楼层
    1
    发表于 2019-3-30 16:14:29 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 zzzz_sleep 于 2019-3-30 16:14 编辑

    这次目标:
    1. 2.4G Mar 28 14:51 enwiki-20160601-part1.mdx
    2. 2.3G Mar 28 14:30 enwiki-20160601-part2.mdx
    3. 2.2G Mar 28 14:41 enwiki-20160601-part3.mdx
    4. 2.1G Mar 28 14:32 enwiki-20160601-part4.mdx
    5. 2.0G Mar 28 14:02 enwiki-20160601-part5.mdx
    6. 1.3G Mar 28 13:15 enwiki-20160601-part6.mdx
    7. 157M Mar 28 13:13 enwiki-20160601-part5.mdd
    8. 157M Mar 28 11:25 enwiki-20160601-part6.mdd
    复制代码
    6 个 MDX 文件,2个 MDD 文件
    电脑基本硬件:
    1. Intel Core i5-5300U @ 4x 2.295GHz
    2. 8G Ram
    3. SSD HD
    复制代码
    先来简单的, MDD 文件
    1. 163979226 Mar 28 13:13 enwiki-20160601-part5.mdd
    2. 163979226 Mar 28 11:25 enwiki-20160601-part6.mdd
    复制代码
    解包到用一目录下
    1. mdict -x enwiki-20160601-part5.mdd -d mdd/
    2. 100%|█████████████████████████████████████| 352768/352768 [37:10<00:00, 158.18rec/s]
    3. mdict -x enwiki-20160601-part6.mdd  -d  mdd/
    4. 100%|█████████████████████████████████████| 352768/352768 [36:40<00:00, 160.34rec/s]
    复制代码


    两个MDD文件大小一样,条目数一样,什么问题?
    估计 part5.mdx 和 part6.mdx 都需要 mdd 文件,但两个 mdx 都太大了,无法合并在一起,只能分成两个,mdd 文件也只能同样的复制一份

    重新打包资源文件
    1. mdict -c temp/enwiki.mdd mdd/
    2. Scan "mdd/": 352768
    3. Pack to "temp/enwiki.mdd"
    4. 100%|█████████████████████████████████████| 352768/352768 [29:58<00:00, 196.12rec/s]
    复制代码
    1. ls -lh temp/enwiki.mdd
    2. 157M Mar 30 06:59 enwiki.mdd
    复制代码
    无压力,主要看 MDX 文件
    1. 2.4G Mar 28 14:51 enwiki-20160601-part1.mdx
    2. 2.3G Mar 28 14:30 enwiki-20160601-part2.mdx
    3. 2.2G Mar 28 14:41 enwiki-20160601-part3.mdx
    4. 2.1G Mar 28 14:32 enwiki-20160601-part4.mdx
    5. 2.0G Mar 28 14:02 enwiki-20160601-part5.mdx
    6. 1.3G Mar 28 13:15 enwiki-20160601-part6.mdx
    复制代码
    解包
    1. mdict -x enwiki-20160601-part1.mdx -d temp/
    2. 100%|████████████████████████████████████| 805657/805657 [01:58<00:00, 6793.37rec/s]
    3. mdict -x enwiki-20160601-part2.mdx -d temp/
    4. 100%|█████████████████████████████████| 1750061/1750061 [02:17<00:00, 12697.84rec/s]
    5. mdict -x enwiki-20160601-part3.mdx -d temp/
    6. 100%|█████████████████████████████████| 2634700/2634700 [02:23<00:00, 18421.63rec/s]
    7. mdict -x enwiki-20160601-part4.mdx -d temp/
    8. 100%|█████████████████████████████████| 2848024/2848024 [02:25<00:00, 19566.66rec/s]
    9. mdict -x enwiki-20160601-part5.mdx -d temp/
    10. 100%|█████████████████████████████████| 2681025/2681025 [02:21<00:00, 18995.08rec/s]
    11. mdict -x enwiki-20160601-part6.mdx -d temp/
    12. 100%|█████████████████████████████████| 1853213/1853213 [01:31<00:00, 20192.31rec/s]
    复制代码
    请大家观赏解压后 MDX 文件大小
    1. 8.0G Mar 30 07:18 temp/enwiki-20160601-part1.mdx.txt
    2. 8.0G Mar 30 07:23 temp/enwiki-20160601-part2.mdx.txt
    3. 8.0G Mar 30 07:26 temp/enwiki-20160601-part3.mdx.txt
    4. 8.0G Mar 30 07:30 temp/enwiki-20160601-part4.mdx.txt
    5. 8.0G Mar 30 07:33 temp/enwiki-20160601-part5.mdx.txt
    6. 5.1G Mar 30 07:38 temp/enwiki-20160601-part6.mdx.txt
    复制代码
    总共 45G,够大了
    词条数目总计 805657 + 1750061 + 2634700 + 2848024 + 2681025 + 1853213 = 12572680

    重点来了:重新打包,将这些打包到一起,形成一个 MDX 文件


    1. mdict --title enwiki-20160601-part1.mdx.title.txt --description enwiki-20160601-part1.mdx.description.html  -a enwiki-20160601-part1.mdx.txt -a enwiki-20160601-part2.mdx.txt -a enwiki-20160601-part3.mdx.txt -a enwiki-20160601-part4.mdx.txt -a enwiki-20160601-part5.mdx.txt -a enwiki-20160601-part6.mdx.txt enwiki.mdx
    2. Scan "enwiki-20160601-part1.mdx.txt": 805657
    3. Scan "enwiki-20160601-part2.mdx.txt": 1750061
    4. Scan "enwiki-20160601-part3.mdx.txt": 2634700
    5. Scan "enwiki-20160601-part4.mdx.txt": 2848024
    6. Scan "enwiki-20160601-part5.mdx.txt": 2681025
    7. Scan "enwiki-20160601-part6.mdx.txt": 1853214

    8. Pack to "enwiki.mdx"
    9. 100%|██████████████████████████████████| 12572681/12572681 [42:57<00:00, 4878.07rec/s]
    复制代码

    打包过程:
    1.  准备开始


    2. 扫描词条,内存开始上升



    3. 内存很高了



    4. 危机边缘


    5. 扫描终于结束,差点崩溃,开始打包



    6. 内存开始下降



    7. 打包继续,内存脱离危险区


    8. 全部结束


    最终结果
    1. 157M Mar 30 06:59 enwiki.mdd
    2. 13G Mar 30 09:30 enwiki.mdx
    复制代码


    发现 part6 MDX 词条数量多了一个,不知道为什么,可能 TXT 格式有错误,顺便吐槽发现的错误
    1. <link rel='stylesheet' type='text/css' href='wiki.css' />> <a href="entry://Quotatio
    2. n mark">Quotation mark</a> {{R from symbol}}      两个 >> ,估计还有其他错误
    复制代码

    查询测试,"007: Casino Royale"
    1. mdict -q "007: Casino Royale" enwiki.mdx
    2. <link rel='stylesheet' type='text/css' href='wiki.css' />> <a href="entry://Casino Royale (2006 film)">Casino Royale (2006 film)</a>
    复制代码

    做了一天,累,休息去了。

    评分

    1

    查看全部评分

    本帖被以下淘专辑推荐:

  • TA的每日心情
    擦汗
    前天 16:06
  • 签到天数: 885 天

    [LV.10]以坛为家III

    7

    主题

    2845

    回帖

    2万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    24806
    2
    发表于 2019-3-30 16:48:40 | 只看该作者
    厉害。这得多大的意志力呀。MANY THANKS
  • TA的每日心情
    开心
    2021-1-14 12:30
  • 签到天数: 450 天

    [LV.9]以坛为家II

    4

    主题

    1197

    回帖

    8万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    81433

    笑傲江湖章灌水大神章

    3
    发表于 2019-3-30 18:32:54 | 只看该作者
    你这是想证明什么?
  • TA的每日心情
    慵懒
    2022-3-16 01:47
  • 签到天数: 389 天

    [LV.9]以坛为家II

    8

    主题

    753

    回帖

    2099

    积分

    解元

    Rank: 5Rank: 5

    积分
    2099
    4
    发表于 2019-3-31 02:18:39 | 只看该作者
    编译这种文件还是至少16GB,最好32GB内存,分一部分做ramdisk来跑比较省心
  • TA的每日心情

    2020-8-15 10:40
  • 签到天数: 146 天

    [LV.7]常住居民III

    23

    主题

    363

    回帖

    3万

    积分

    状元

    Rank: 9Rank: 9Rank: 9

    积分
    39693
    5
     楼主| 发表于 2019-3-31 05:51:15 | 只看该作者
    thresh 发表于 2019-3-31 02:18
    编译这种文件还是至少16GB,最好32GB内存,分一部分做ramdisk来跑比较省心

    说的对,16G为佳,32G更好
    但对大多数坛友来说,16G内存的机器已经很少,32G的难见。从16G开始,已经属于专业级 PC

    一个问题,可以从软件或硬件两个方面解决。针对的时代不同,解决方案就不同,无法说那个好,那个坏,只能是适合。比如 mpeg 解码,386/486时代,是需要硬件解码器的。现在的视频播放,还是区分硬解码,软解码的

    我这个测试挑的都是极端情况,极端过了,日常也就不会有问题。只是为普通人考虑,毕竟做一个词典费时费力,多人协作,增加效率。
  • TA的每日心情
    郁闷
    2018-5-17 09:15
  • 签到天数: 1 天

    [LV.1]初来乍到

    56

    主题

    490

    回帖

    1万

    积分

    分区版主

    Rank: 11Rank: 11Rank: 11Rank: 11

    积分
    12730

    翰林院专用章灌水大神章笑傲江湖章小蜜蜂章管理组专用章

    6
    发表于 2019-3-31 12:09:15 | 只看该作者
    大字典考耐力与电脑。庆祝论坛又多一个mdx制作者。

    该用户从未签到

    1

    主题

    475

    回帖

    3830

    积分

    贡士

    Rank: 6Rank: 6

    积分
    3830
    7
    发表于 2019-3-31 12:40:13 | 只看该作者
    thanks a lot ....
  • TA的每日心情
    慵懒
    2022-3-16 01:47
  • 签到天数: 389 天

    [LV.9]以坛为家II

    8

    主题

    753

    回帖

    2099

    积分

    解元

    Rank: 5Rank: 5

    积分
    2099
    8
    发表于 2019-4-1 22:02:52 | 只看该作者
    zzzz_sleep 发表于 2019-3-31 05:51
    说的对,16G为佳,32G更好
    但对大多数坛友来说,16G内存的机器已经很少,32G的难见。从16G开始,已经属于 ...

    最近内存贵而已,前两年8G DDR3 一根200的白菜价还是有不少屯了货的。身边的电脑现在基本都是16G的,8G都是家用货了。工作不够用