TA的每日心情 | 擦汗 2020-7-3 13:51 |
|---|
签到天数: 19 天 [LV.4]偶尔看看III
|
发表于 2021-2-9 19:15:47
|
显示全部楼层
% i" b( a$ l, m7 m9 E- c/ ~* B
我用C#做,i5的CPU大约10秒不到可以提取陆谷孙英汉大词典中的1万单词解释。8 p/ C, _1 ~. T: [9 W( z2 M. r/ a2 o
作者没有说明提取一个子MDX有什么意义,我主要是用来定制我的通读而非查阅用的词典。比如我可以制作一个牛津高阶6级词汇的词典,里面词头不超过6级只有几千个且释义正文都是牛高中的。提取完之后稍微处理一下可以直接在浏览器中打开。所有浏览器中Chrome渲染速度最快,1000单词的朗文4词典大约1分钟就好了,之后你可以慢慢享受鼠标滚动阅读而毫无迟滞感。还有切图版的图片词典,那制作出来就和看纸版书基本一样的感觉了。
7 |: F. m5 }" P3 K8 o* a5 b做这个提取的小工具程序,初看起来简单得象1+1=2般简单。但真的是这样吗?非也!如果真正是严肃地以做产品的精神来做,还是要考虑一些问题的:
4 {- m* \1 a {( _8 ~* {(1)MDX中同一个词头有可能出现多次,比如有的单词每个词性就列一个词头出来,且并未加上上标来区分,看起来词头是一模一样的。
1 @6 ^( ~) x/ K4 z2 Q(2)词头内容可能是链接@@@LINK=,且链接可能有多级。链接最终到的那个单词如果不在原词表上出现怎么处理?是新加入这个词头还是不加入而拷贝它的内容过来?
1 ^0 L1 ]. N4 R% n% }(3)如果原MDX制作有问题,A词头链接B词头,B词头又链接A词头,将陷入死循环,如何侦测出来?我目前用的是递归调用简单地用递归最大层次来限制死循环的发生。
1 U' ]3 }* H# D; Z1 J+ m' D& P(4)前述1,2,3可能同时出现夹杂糅合在一起,程序怎么处理既不遗漏又不重复释义?
# l) Y/ B3 v% O/ \(5)如果原词表不按字母顺序排列,应该给用户按原来顺序和按字母顺序两个选择
1 o) h1 {) e: K! i5 i0 J! o2 H$ O+ t4 e
这些考虑使得编程复杂了很多很多!我用了整整2天才弄完它们。不到200行C#搞定。 |
|