期待兄弟提升哈!
期待呀,非常之举!
工作量很大,浏览器不支持这个词典的中文 tag ,分类替换,还要根据 tag 属性 写 css。
我大致统计了一下:
xml 词条:137425
mdx </> count: 136784
跳转:692
减去跳转后:1333
这个xml的数据,粗估比K大的mdx多了1333条。
除非K大光临本坛,看到这个帖子,动手重做,否则似乎只好放弃K大的mdx,根据xml数据,另起炉灶。
老兄在弄吗?假如有人在弄,我就先等别人弄完,看看结果怎样,避免重复劳动。
有“儿”字的数据就有<SMALL>儿</SMALL>
,<SMALL>儿</SMALL>
都被分段挪到下一段去了。
在整理之前,需要先去除每行前的空格,然后用Emeditor的正则式,把
\n<SMALL>儿</SMALL>
替换为
<SMALL>儿</SMALL>
这样“儿”就会回到它本来应该在的地方,不再处于分尸的状态。
用Emeditor find-extract “<SMALL>儿</SMALL>
”,再统计,<SMALL>儿</SMALL>
有7349条。
这些“儿”字在K大的mdx大概有很多不见了。
small.zip (92.6 KB)
另外把词头都用Emeditor find-extract抽出来,供大家研究参考。
citiao.zip (803.2 KB)
共有137425条。
这些词头不只是主词头,还包括了词典主词头之下的“亚词头”。
我用Emeditor查过K大mdx的私用字:
find - regular Expression
[\x{E000}-\x{F8FF}]
没发现私用字。
现在查这个xml数据做出来的词典,有1354个私用字。
K大mdx缺的词条,也许有不少是私用字词条?
我做出了一个将就而不讲究的版本,但是发现有很多意想不到的问题有待解决。只能摸爬滚打,边做边学,一点一点解决。
粗略查了几个字词的排序,发现和纸本是一样的。假如排序完全和纸本一样,就很可贵。假如有人弄这个数据,记得别把顺序弄乱啊。
合并成了 txt xmls.7z (11.1 MB)
主要处理逻辑:
t = ''
for char in string.ascii_uppercase:
if char in 'IUV':
pass
else:
with open(f'../xmls/{char}-XML.xml', 'r', encoding='utf-8') as f:
xml = f.read()
t += xml
t = t.replace('<?xml version="1.0" encoding="UTF-8"?>\n', '')
叹,改私用字实在是苦工。
〖U+E078〗=〖𮭦〗
[chén]
(U+E078)=(𪁏)
[名] 〈方〉a young bird
还好词条顺序真是准确的。看文字版上一条是什么,再找纸本的那一条,然后再看那一条的下一个字是什么。
简体词头怎么和繁体字用同一个私用字呢?显然有一个错了。
Ps:也许是故意扰乱想复制资料的人?在别的词典里,一码多字,一字多码,各种情况我都见过。
万有知典的数据是用来测试网站的。其数据有残缺的情况,如古音汇纂,明显的有新华语典缺M开头的xml。
这本汉英词典不知什么情况,shaoshi 兄注意下。
汉英的数据有两个:
- 测试页面,带字体。
https://wyzd-static-test.vdict.com.cn/community/#/knowledgeService
OpenSans_Regular.238f04c4.woff (58.5 KB)
STShuSong_CP.woff (8.9 MB)
STXihei_CP.581486f2.woff (8.5 MB) - books 页面,没有字体。
https://wyzd-static-test.vdict.com.cn/mmdb/books
我记得站长 @hua 之前就解密过 辞源 的字体,那个代码方便拿出来再解密这些词典吗,也省了这么多词典,大家手动替换一个个字了。
这个词典的私用字只是单纯的私用字,比我所见过的别的词典(如《大辞海》的图像字)好弄很多,并没有加密。和我所听闻的《辞源》的极其复杂的加密方式不是同一种情况。
解密字体,需要两份字体文件,原始未加密字体+已加密字体,没有前者很容易出错。
那就更简单了,可以用 hua 大的脚本直接全面准确的替换所有私有字符(和全宋体 font 进行对比),再肉眼审核。
商务印书馆用的什么字体,论坛里的字体大师应该很清楚。我是不知道啦。
主要我是觉得替换字的编码,自动化担当主力会更省力、全面些,靠人工看,容易漏、也费力,特别是商务印书馆最近 amob 和 bud 分享的这一大批词典,靠人工制作会很慢。
css里用的字体是:
font-family:STShuSong_CP,STXihei_CP;font-size:1.4rem
相似的字体都不行,解密一定要原版字体文件。相似字体的话需要重新训练,结果也不是很好,少量字符还不如自己替换。
辞源会涉及解密+私有区字符两个步骤。其他一般词典只涉及私有区字符的标准化Unicode编码。
我的设想是:
- 纯粹的私有区的字符通过 fonttool 库提取出xml 和图像,遍历 mdx,找出这些字符。
- 提取出的字体单字的图像 ocr 化,取置信度高的自动替换成标准 UNICODE,低置信度的再人工检查。或者和其他字体进行特征点、斜率对比,数据准确到多少,做过的 hua 应该有经验。
这样就能知道,哪些字符需要替换(全面性)、哪些需要人工替换(省力)。
之前成语源流是中华书局的宋体,我看了好几个字一模一样,一度想训练这个字体的OCR,过程太复杂没做。商务印书馆的字体,不能是随便变化的吧,常用的应该就那几个字体。私有区的情况有多种:没找到标准编码就放到私有区的+标准编码没有的字形。后者只能保留私有字体(但可以筛查统一到一个字体上,比如论坛用的全宋体,这样就不用安装官方的字体了),前者可以对比程序自动筛出来。自己字体内没有的,可以通过斜率和其他字体筛,有了代码字符的处理会方便很多。
大多数 APP 会提供原版字体。
在css里试了一下STShuSong_CP,不行。
我还以为用了这个字体就行,没那么简单。看来我之前没弄懂加密字体的概念。
解密需要有人提供原版字体,没有就不用尝试了。