ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:29.44KB ,
资源ID:15393472      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/15393472.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(翻译设计文档0530Word文档下载推荐.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

翻译设计文档0530Word文档下载推荐.docx

1、3.程序输出应为txt格式文件,文件名为输入文件名+(汉),例如:eng1(汉).txt。4.待扩展。第二部分:总体算法描述翻译工作,简单的理解就是对好入座,读到一个单词,对应输出一个汉语解释。解决问题在于复杂问题简单化,要完成对号入座,需要几个模块来完成。一、读取单词。从待翻译的文本中读取一个单词。二、寻找单词。从数据库中寻找这个单词。(若数据库中不存在这个单词,可以简单的做原单词输出,也可考虑寻找词根并分析)三、寻找词根。(可选择的扩展功能)三、分析单词,得到词义。依据适当的方法,选出单词适当的词义作为汉语解释输出。选择方法:1.查看单词有几种词义,分属何词性,依据句子中前后单词的词性,选

2、择适当的词性。2.依据上下文语义,选择适当词义。(比较难,需要构成句子后,再对个别待定单词进行确定词义)3.待扩展。以后讲到C+后,我可能更愿意构建一个单词分析类、语句分析类来实现,那样让人感觉更舒服,但现在我们先使用作为基础的C来解决问题,以后用到C+解决就会体会到二者在解决问题时的不同感觉,而这种感觉,不亲自去做,是不行的。四、分析句子。翻译的词句构成句子后,简要分析汉语句子是否存在问题。1.简要分析,例如是否有不该有的重复汉字?2.综合分析,是否需要调整汉字顺序?五、当然能做分析的前提是拥有一个好的数据库,而我们现有的只是一个简单粗糙的单词表,我们需要构建适合的数据库。第三部分:构建数据

3、结构通过分析,算法的主要难点在于三、四两点。必须构建一个合适的数据结构来为这两个模块更好的服务。一、单词数据结构:1.能够描述单词本身,当然最好还能记录词根。2.能够记录不同词性的词义。struct 单词_1char szDanCi32;/单词本身char szCiGen32;/词根词性词义1;词性词义2;其中词性词义1,2,3.。可用一个词性词义数组代替,那么结构体将是:struct 单词_2int iNumCiXing;/此单词的词性总数,即此单词有多少种词性。词性词义10;/用以描述各个词性词义的结构体数组;如此以来,可以依据词性总数来从词性词义数组中依次查询各个词义。词性词义结构体可定

4、义类似如下:struct 词性词义int idCiXing;/词性ID,名词,动词,代词,形容词等10种词性分别用1-10数字来代替。char szCiYi64;/存储汉字词义。这里面存储字符数组都是用32作为大小,有些长单词或词义可能会越界,这个问题要记在心中,以免以后出现问题而不知所措,举例说明:例如单词attack有个动词词义“袭击”,和名词词义“攻击”,当然还有其他许多词义。在它的词性词义数组中有,元素1的词性词义idCiXing为1,szCiYi为“攻击”元素2的词性词义idCiXing为2,szCiYi为“袭击”二、句子数据结构如果说单词结构是为了存储数据库,并更好的为单词分析服务

5、,那么句子结构就是为分析特定的一句话服务的。注定要有许多份单词结构,因为单词本身数量就有几千个,把它们全部存下来,就需要一个很大的结构体数组。而句子结构主要是分析句子的,通常说来,我们这些不负责任的分析家在分析完一句后就输出分析结果转向下一句的分析了,如果这个分析是实时的一句句的,那么实际上只需要1个句子结构用来分析当前句子即可,除非你想分析完后再依据整段话的核心思想和上下文思想再对各个句子进行含义调整。struct 句子char szHanZi128;/已初步翻译好的一句汉话。int iNumDanCi;/此句子中单词数目,单词信息32;/用以存储句子中各个单词的信息,使用固定数32表面一个

6、句子中最多包含32个单词。这,是我们程序的限制,如果输入文件中句子中单词数太多了,我们程序只能说“不行,句子太长了”,或者只能半句半句的分析了。关于单词信息结构:struct 单词信息int idDanCi;/单词在单词结构数组中的索引,例如 attack是单词数据库中的第100个单/词,那么在这里的值就是100,表明了引用了单词表中第100个的单词。int idCiXingCiYi;/词性词义索引,表明使用此单词的哪个词性词义。;举例:句子:I want to attack。这个句子的句子结构将是:iNumDanCi为4,单词信息0.idDanCi为30(假设I在单词表中的顺序),单词信息0

7、.idCiXingCiYi为1(使用了名词“我”的词义)单词信息1.idDanCi为5000(假设want在单词表中的顺序),单词信息1.idCiXingCiYi为2(使用了动词“想”的词义)单词信息2.idDanCi为5550(假设to在单词表中的顺序),单词信息2.idCiXingCiYi为6(使用了介词“向”的词义)单词信息3.idDanCi为100(假设attack在单词表中的顺序),单词信息3.idCiXingCiYi为2(使用了动词“袭击”的词义)整句话翻译结果:szHanZi为:“我想向袭击”。第四部分:所需函数即模块接口一、由粗糙单词表构建数据库部分相信大家已经在我昨天布置的问

8、题作业的尝试中找到了适当的难度,甚至很多人感觉无从下手,我们来分析一下问题。原始的数据库文件是由3种类型的字符串构成,一是单词本身,二是它的某种词性,三是对应的汉语词义。直接从文件中读取并分辨出来总是感觉困难的,使用库函数怎么样?可是库函数除了读取字符串或读取整行字符串外没有更多的功能了。这里,大家要逃出一个圈,从只作为库的使用者升华出来,成为库的构建者,既然库本身没有合适解决这个问题的,我们为何不自己构建一些“库”呢?其实这里说的库,就是模块的意思。模块就是化繁为简。原始单词库文件既然包含3种类型的字符串,想象一下,如果有这么一个函数,它能从文件中获取一个字符串,并能识别出是哪种类型,我们是

9、不是会很受用呢?于是我们构建了第一个函数。int GetChuan(FILE *p,char *pc);该函数返回值标示了返回串的类型,0:代表错误的串,1:代表单词串,2:代表词性串,3:代表词义串。你是否还为库函数或类库中没有这样的功能模块感到失望呢?学会构建吧,不要只做库或类库的使用者,而要做构建者,如果你能构建通用功能的模块或类库,让全世界的人去使用它,那会是什么感觉呢。就像我们现在一直在使用别人的模块或类库一样,而我们国家的程序员,大多数倒还沉浸在这种使用别人类库的喜悦中,那些类库的构建者会怎么想呢?你总会比他们低一个档次。除非你从这种沉浸的喜悦中走出来,攀上那层构建者的台阶,那时才

10、会得到真正的尊重。C和C+本是自由的构建模式,然而库和类库的使用却容易把人禁锢起来,学会使用类库是必要的,但不应到此为止,这可不是终点。现代国内热爱计算机的大学生们,未来的程序员们:学会使用库,但不要被库的使用所禁锢,特别是不能禁锢你们的思想,仅会使用库永远是三流程序员。当然,如果大家感觉这个函数实现起来还有些难度的话,可以把内部分解为2个小模块:void GetSZ(FILE *p,char *pc);/读取一个串,从开始有效字符,直读到无效字符或标志结尾字符为止。int FenXiSZ(char *pc);分析上面得到的那个串,判断到底是无效?单词?词性?词义?串当然,实现这些子模块还可能

11、用到分析字符的子模块。例如:Bool ZiFu_YouXiao(char c);/判断字符是否是有效字符,例如空格,回车之类应作为无效字符,这样,就可以依据函数返回结果决定如何读取文件。Bool ZiFu_JieShuFu(char c);/判断字符是否是字符串的结束符,例如每个词性后面都有一个 . 作为结束符。Bool ZiFu_IsZiFu(char c);判断这个字符是否为字符,即a-z或A-Z;(存在这个库函数isalpha(char c),用于判断字母是否为字符,头文件#include ,但我在使用时发现,有些时候这个库函数竟然判断出错了,可能是巧合,也可能是我的编译器版本问题,于是

12、干脆自己去构建一个,也不是很麻烦的事。Bool ZiFu_IsHanZi(char c);判断字符是否为汉字。等等。其实构建好了int GetChuan(FILE *p,char *pc);这个函数模块后,由“粗糙字典”构建我们的数据库就很容易了,只需要将文件指针和一个字符串缓冲传给函数,就可以从文件中得到一个字符串,并且知道是什么类型的字符串。依据类型插入到我们数据库结构体数组中的适当位置就可以了,然后从文件中继续去读取下一个字符串,直到文件的结束。可以写个模块bool LoadZiDian(char *pcName);来完成整个字典的加载工作。第一部分 数据库构建,到此结束。接下来转入对单词的搜索,及解释。二、分析单词对号入座部分(待定)第五部分:源代码(代码在vc6下编译运行正常)#include string.hconio.h以下是词性词义的结构体定义struct _CiXingCiYi这里面存储字符数组都是用32作为大小以下是单词结构体定义struct _DanCi char szDanCi32; char szCiGen32; int iNumCiXing; _CiXingCiYi CiXingCiYi10;5月30增加的句子结构体定义struct _DanCiXi

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1