词库制作学习简记

① 装修 > ② 改版 > ③ 转制 > ④ 自制

装修阶段

  • 在菜鸟联盟学习 css (选择器) 和 html 的相关知识,为改版打基础。
  • 看词库制作交流区的 css 教程,不懂的 Google 之。
  • 仿写。比如:鼠标经过时高亮当行中的关键词 (Collins Cobuild) 、仅一条数据时伪元素不计数 (新世纪英汉大词典)、利用 font-size=0 隐藏文本 (文馨英汉词典)。如今 mmmc 小姐姐的作品是很好的材料。

改版阶段

  • 简单替换、词条排序、合并词头 (OCD)。
  • 小词典合并 (Mdict Editor Tool)。
  • 拆包典型词典,学习图片缩放 (WBD)、双解切换、例句收展、词性跳转 (L5++)、内容收展 (Cambridge4)、繁简切换 (OALD8)、导航 (mw2018)、在线发音 (Collins) 等。
  • 学习词组提取。补充 read、write、BeautifulSoup、for、if 等基础知识 (MBD)。
  • 批量替换文本(韦氏高阶英汉双解词典)。
  • 小坑: 跳转链接中的 ? 要替换为 %3f ,半角双引号替换为%22,用 @@@ LINK 时词头的全角引号要替换为半角;以 - 开头的词头无法用 @@@ LINK 跳转…

③ 转制阶段:

  • 转换格式 (pyglossary)
  • epub转制(递归读取文件、根据字典批量替换文本以修复跳转)

④ 自制阶段:

  • 切图:学切词,用 vim 和 python 删除特定行以实现高亮 (vim 会有多余空行,python 没有)。学习粗略定位版词典的制作(VimVim 之 MdxSourceBuilder
  • 爬虫:先学 hua 的 python 词库制作基础课程,上菜鸟联盟解惑,谷歌案例。
词典 知识点
Green’s Dictionary of Slang 两个 for 循环获取索引
Oxford Living Dictionaries 增补 BeautifulSoup 之 append, insert, new tag 等
Dictionary 获取页码构造 url ;异常处理
林语堂当代汉英 SSL 认证及频繁报错问题;中文乱码、编码;Request URL 不完整;html 解析器的选择(请求到的页面结构与 chrome 中显示的不同、网页错误导致词条最终非标准三行);无标签的词组提取 (正则、split)
The Free Dictionary 获取动态索引(借鉴 loner 利用临时文件中转爬取 WRC 的代码;修改为循环读取最后一行);获取js翻页内容;代理池(了解反爬与反反爬);字符串去重排序;词头中的转义字符处理
Merriam-Webster 异步请求 (json)
Macmillan crawlspider(没学完,因为后来发现不需要逐层提取链接);利用 request 获取重定向网址的正确链接以修复内部跳转; 嫁接和反查尝试
Thesaurus json to html多重排序
中華語文大辭典 json to html;Excel to json;Excel 之 VBA 替换不可见的换行符

  加了下划线的都求助过,非常感谢各位耐心解答。又双叒叕 get 新技能~

—— 路漫漫其修远兮 ——

14 个赞

我是 1 → 3,接下來試著作圖片辭典吧。

好像是cmmm老姐。

这份笔记提到的大多数点,对我来说都是新知识。回看自己摸索、制作mdx的历程,一方面觉得走的弯路实在太多了,一方面又觉得在当时那种情况,能费时费力,做出一份错漏百出但堪堪能用的mdx来,其实也还行啦。人家发火箭上天都可以“快速试错”,做区区mdx难道不可以?另,我开始意识到“信息管理”的重要性。有用的信息太多了,怎么把它们搜集起来,按需求编排好,是件难事。

1 个赞

随心,慢慢来~

呀,不同平台顺序有些不一样~
该踩的坑,该走的弯路一个不会少的。
至于“信息管理”,我会把谷歌到的知识点分类加书签,有空再把内容汇总到笔记本。

不是有用的太多,而是你要清楚你要做什么。

乱花渐欲迷人眼,专注才能做词典。——鲁迅

你就只看 runoob,和 必要 python 库的 中文文档 就足够了,英文文档也行,只要你能读得快。这两个资料来源,对于做词典绰绰有余。

1 个赞

学习过程本来就是 try and error.

非要找原因的话,还是各种知识点太过于分散,导致各种大大小小的坑都避不开。

楼主这样的总结,就是给后来者的指南。

1 个赞

中文文档质量是没法保证的,比如下面这个:

Tag.unwrap() 方法与 wrap() 方法相反.将移除tag内的所有tag标签,该方法常被用来进行标记的解包:
Tag.unwrap() is the opposite of wrap(). It replaces a tag with whatever’s inside that tag. It’s good for stripping out markup:
1 个赞

利用 font-size=0 隐藏文本
这和 display=none 有什么不一样吗?

1 个赞

那你就看英文啊,反正文档绝对够用。。不要被海量信息迷眼了。另外要敢于尝试。

1 个赞

display: none 后,伪元素不能用,但 font-size=0 可以 :+1:

3 个赞

原来如此。以前在用下拉式表单有碰到伪元素不能用的问题。不过那时还不知有 font-size=0 这技巧。谢谢。

佩服楼主的精神啊。我从来没有真正学过,只是参考了BLK写的一个代码文件开始自己动手,加上以前有些正则和编程基础,勉强算进入第二阶段吧。很好奇楼主第三阶段的epub转制需要学些什么?希望有时间可以和楼主交流下。另外第四阶段的内容太多了。我建议继续拆分成第五,第六阶段。

我也推荐看英文文档。相对而言,国内大部分人的英文程度足够了。多一重翻译多一些带入不精准的可能。

epub 转制的话,用 bat 合并配合正则,或者 python 配合 beautifulsoup,再加上批量替换应该就足够了。

这个能分享吗?

好贴,厉害!这个内容足以成为一门专门的技术了。

1 个赞