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