中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-10 15:51
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,255 会员排行
DOS批处理 & 脚本技术(批处理室) » [共同参与][挑战思路][批处理:轻松译单词]
可打印版本  23,684 / 55
第1楼 redtek 发表于 2006-10-10 21:50
金牌会员 发帖 1,147 积分 2,902
[共同参与][挑战思路][批处理:轻松译单词]
[共同参与][挑战传统][批处理:轻松译单词]

) 此贴为抛砖引玉,大家扩展思路,互动式共同参与批处理学习~:)

) [轻松译单词]
  例如: E.Bat computer
  结果: Computer 计算机


  规则: 没有太多规则,
      主要体现在让DOS批处理以更快捷的方式帮助我们更好生活!
      让DOS批处理完成一些实用、且在命令行就能完成的查询工作--翻译不懂的单词。
      纯DOS批处理的单词翻译系统目前国际上还没有(别问为什么,嘻嘻……),
      纯DOS批处理的单词翻译来自于好玩、挑战、趣味、创新并最终落实为实用的想法,
      
      跟我一起想像:
        
        当我看到一些美丽的单词而我不懂它,于是我在DOS命令窗口中打个 e net回车,
        系统提示我: net 网络 ,"噢!,明白了"!

        2008奥运全民学英语,我们认为更要让单词翻译系统诞生在DOS批处理的脚本之下!
        这将是献给奥运和 cn-dos.net 与所有DOS爱好者的最纯的礼物!它完全用批处理实现!

        ……某某报纸刊载一条消息:
          某某某几位大侠,使用一种最原始的批处理开发了想都不敢想像的单词翻译系统……
          我们把它当做挑战吧~:)
          好的思路与优秀的算法只要实现了,用什么语言那都不是重要的事,它是一通百通的。

  思考: 这最终是一个实现方法和算法的问题,很多单词翻译软件都要求极高的效率来检索单词。
      如果拥有20万词汇,用 for /f ... 一条一条枚举可能出现的20万条记录这简直就是……

      但是,如果单词以 A-Z 来划分成26个首字母的区域,
      也就是将检索范围精确缩减到了一个较少的范围,在这个范围内还可以进行某种算法……

      纯批处理开发的英文单词翻译系统对于DOS批处理外行或批处理半懂不懂的网友来说:
      简直是不可能完成的任务!

      实际上,这看上去我们给 %1 一个参数:“ Internet”,然后批处理代码自动翻译成:互联网
      像是很简单的样子,实际上却一点也不简单:

        最快速度的检索算法
        要实现最快速度的检索算法是否还需要辅助标记?
        这个标记如编码?如何利用批处理的一些特殊的地方与辅助标记来达到尽可能方便的检索?
        几十万的词汇量的查找、定位、提取的挑战
      
      这些可行吗?可行,我是在思考了几天之后并做了6万行for以及for..skip等简单测试后得出可行

的结论。


  素材: 可以参考现成的词库等,一般均有以“单词  单词的翻译内容”等为基础的文本词库文件。
      因为算法不一样,词库的格式也不一样,早期的单词翻译软件甚至都用上了foxpro现在的数据库

做检索。
      (单词库我现在暂时没有,如有一定上传上来:)
      (如果你找到,请让大家分享下载地址)

  目的: 拓展思路、增加批处理兴趣、增加大家互动学习亲自动手玩、
      通过我们大家不断的交互让批处理的使用让每个人都能参与共同进步:)

  方向: 这只是其中一个内容,更多的内容需要网友们共同发现、版主支持:)
      大家可以用任何异想天开的任何想法实现上面问题~:)


  为什么要出现此贴: 只有互动每个人都参与,自己的水平才能提高更快。
            将遇到问题时才问、平时不主动学习批处理的方式变成大家主动一步一步共同提高

:)
            我们为创新!为创新这个新世界而活着!

  奖励: 优秀的解题与不同思路的观点解题,由版主象神一样的指导、示范,
      然后给大家加分奖励以示激励~:)

  其它: 等待大家有更好想法和非常实用的互动学习与应用的题目,大家一起参与:)


===================================
  上一期参考:[共同参与][挑战思路][批处理处理浮点运算]
         http://www.cn-dos.net/forum/viewthread.php?tid=23568&fpage=1
         希望我们每一天都为梦想而创新的生活!
     感动: 经过数位版主与大侠的精心创造与开发,批处理解决了浮点运算,
         并由版主与几位大侠创新的完成了理论上无限进位的算法机制,非常精彩!
     获得: 我们在没有更多的类库或函数库的最原始最基础的环境下,
         能够以算法和创新的想法来解决一些平时高级编程里只有函数才能完成的事!
         理论上说:这些用最简单指令完成复杂的操作过程,就是卓越!
         这种思路它可以应运到任何一种语言的开发上,并已经超越了那些普通程序员。
         通过底层进位的模拟与合并计算以及计算结果插入浮点标置的方式,
         早已超越了那些大多数离开了函数库或类库就活不下去的程序员们:)
         
===================================
  以上的想法仅为一个好玩的创新的建议,它献给酷爱批处理的每一位爱好者~:)
===================================

  词典转换工具 与 部分索引 的说明在 第 10楼 由 无奈何版主提供~:)

===================================

[ Last edited by redtek on 2006-10-10 at 23:56 ]
第2楼 redtek 发表于 2006-10-10 21:58
金牌会员 发帖 1,147 积分 2,902
如果一个文本文件有6万行数据,通过Skip跳过5万9千9百97行,只列出最后几行,
它的速度测试如下:



提示: for ... Skip 跳过n行的参数也可以变通为一种快速索引方式:)

具体的开发思路希望更酷的看到大家各显神通,
活越 cn-dos.net!
我们永远要越超的是我们自己!
第3楼 redtek 发表于 2006-10-10 22:02
金牌会员 发帖 1,147 积分 2,902
它还可以引发为好玩的 “轻松背单词” 的纯批处理:)
第4楼 NaturalJ0 发表于 2006-10-10 22:19
银牌会员 发帖 533 积分 1,181
可以发个词汇表看看吗
第5楼 electronixtar 发表于 2006-10-10 22:54
铂金会员 发帖 2,672 积分 7,493
觉得还是用vbs+bat直接读取 百度 的翻译最爽
第6楼 zh159 发表于 2006-10-10 22:55
金牌会员 发帖 1,467 积分 3,687
一个构思:

单词以 A-Z 来划分成26个首字母的字典文件 A.txt-Z.txt

C.txt


bat


这样的字典文件分类、增加方便,只是数量稍多

修改一下,可以有包含空格的短句

[ Last edited by zxcv on 2006-10-10 at 11:14 ]
第7楼 redtek 发表于 2006-10-10 23:02
金牌会员 发帖 1,147 积分 2,902
精彩~~给 zxcv +2分~:)

单词的长度、单词首字母、偏移量索引表……都是要考虑的内容~:)
希望有更多的网友有更多的想法~:)

可惜没找到词典文件:)
第8楼 NaturalJ0 发表于 2006-10-10 23:13
银牌会员 发帖 533 积分 1,181
直接取百度的,我觉得这主意很好。
第9楼 vkill 发表于 2006-10-10 23:24
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
Originally posted by electronixtar at 2006-10-10 22:54:
觉得还是用vbs+bat直接读取 百度 的翻译最爽

这个原理上是可以实现的~是最佳选择
第10楼 无奈何 发表于 2006-10-10 23:40
荣誉版主 发帖 356 积分 1,338
这个议题是很有新意并极具挑战性,个人觉得如果查询时间大于 5 秒就不具有应用性。好像一般的翻译软件词典都定义二进制索引位,而批处理读取二进制文件几乎不太现实。
关于词典可以参考一下“星际译王”的词典,一下链接为词典格式及创建说明:
http://stardict.sourceforge.net/DICTFILE_FORMAT
http://stardict.sourceforge.net/HowToCreateDictionary

还有可以提取金山词霸的词典,可以用 dwing 大侠制作的转换软件。见附件:

附件
KSDrip.zip (10.46 KiB)
第11楼 pengfei 发表于 2006-10-11 00:05
银牌会员 发帖 485 积分 1,218 来自 湖南.娄底
这里我有一个思路, 没有经过测试:

搜索代码:


date.txt(记录字典中字母的行数的资料):


[ Last edited by pengfei on 2006-10-11 at 00:12 ]

附件
单词检索.rar (987 bytes)
第12楼 vkill 发表于 2006-10-11 01:05
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
wget.exe down_url:http://www.xfocus.net/tools/200305/403.html
mplayer.exe down_url:http://www1.mplayerhq.hu/MPlayer/releases/win32/MPlayer-mingw32-1.0pre8.zip


思路:下载www.iciba.com上查询单词的源代码,for /f实现
@echo off
:: 需要wget支持(也可以用vbs来实现),还需要mplayer支持
ping -n 1 www.iciba.com>nul &&goto start ||echo www.iciba.com网站不能连接&pause>nul&goto :eof
:start
set search=
set /p search=请输入要翻译的单词:
set search_x=%search:~0,1%
if not exist d:\wget_temp md d:\wget_temp
wget.exe --output-document=d:\wget_temp\%search%.txt --append-output=d:\wget_temp\down_temp.txt "http://www.iciba.com/search?s=%search%" &&goto d_txt_ok ||echo 文件没有下载成功&pause>nul&goto :eof
:d_txt_ok
wget.exe --output-document=d:\wget_temp\%search%.swf --append-output=d:\wget_temp\down_temp.txt "http://www.iciba.com/resource/a/en/%search_x%/%search%.swf" &&goto d_swf_ok ||echo 文件没有下载成功&pause>nul&goto :eof
:d_swf_ok
echo.
echo 读音 and 释义
mplayer.exe D:\wget_temp\%search%.swf>nul
set var=</div>
for /f "skip=? tokens=? delims=!var!" %%a in ("d:\wget_temp\%search%.txt") do echo %search%释义为%%a
pause>nul

[ Last edited by he200377 on 2006-10-11 at 03:08 ]
第13楼 electronixtar 发表于 2006-10-11 01:13
铂金会员 发帖 2,672 积分 7,493
用vbs的话有两种,一种是 InternetExplorer.Application 获得 document(DOM)然后直接输出 InnerText,第二种是用 xmlhttp + htmlfile ,需要产生零时文件,不爽
第14楼 namejm 发表于 2006-10-11 01:23
荣誉版主 发帖 1,737 积分 5,226 来自 成都
   redtek的点子一个接一个,想法非常不错,很能促进本论坛的繁荣,个人给他+4分。希望各位能多出好点子,多写好代码。
第15楼 3742668 发表于 2006-10-12 07:25
荣誉版主 发帖 718 积分 2,013
纯粹地用批处理来处理本主题的要求的话,搞定了效率就难以搞定词库格式,如果降低词库的要求那么效率又不堪入目。在二者不可得兼的情况下,一般我都会把这个包袱丢给cmd去做:
上面十万条记录,我的电脑上搜索到结尾需要大概3秒,不过和findstr比起来却又低了不少:

C:\Documents and Settings\%username%\桌面>findstr /nirc:"^:9399 .*" x.bat
28201::9399

结果包含行号,搜索也用了不到1秒。而有了行号对于处理起词库来说就比较简单了。
所以,个人认为在不使用其他工具的情况下,用findstr无疑是最好的选择。
1 2 3 4  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023