基于嵌入式文件系统的盲文学习机的设计和开发

基于嵌入式文件系统的盲文学习机的设计和开发


2024年1月12日发(作者:)

Zhejiang Sci-Tech University

Z S T U

Master’s Thesis

硕 士 学 位 论 文

中文论文题目:基于嵌入式文件系统的盲文学习机的设计和开发

英文论文题目:The Design and Development of Braille-learning

Machine Based on File-embedded System

学 科 专 业: 控制科学与工程

作 者 姓 名: 汪文妃

指 导 教 师: 杨文珍

完 成 日 期: 2018年12月3日

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

摘 要

我国盲人群体数量庞大,受教育程度普遍不高,如何提高广大盲人的文化素养和知识水平是目前我国社会和谐发展亟待解决的难题。盲文点显器作为一种有效的盲人学习用具,可以帮助盲人无障碍的学习,获取知识和技能,具有十分广阔的应用前景。然而,目前商品化的盲文点显器不仅售价昂贵,其功能也难以匹配我国盲校教育的国情,难以大范围普及让广大盲人受益。为此,本文着重研发一种具备较好阅读功能的高性价比盲文学习机,主要工作有:

1. 嵌入式文件系统的研发:本文以SD卡作为盲文学习机外部存储器,研究嵌入式文件系统,开发文本阅读管理功能,包括翻页、章节目录索引和书签定位等,可以将丰富的网络阅读资源传输给盲文学习机,实现文本的获取和显示。

2. 汉盲翻译算法的研发:基于嵌入式文件系统,本文实现了一种逆向最大匹配的汉盲翻译算法,可以翻译出与中文文本相对应的盲文点序文件。该算法的特点有:1)分词结果比较符合盲文分词连写规则;2)可以修改词典词库,提高未登录词的识别率;3)利用词语拼音库直接匹配出对应词语的拼音,避免多音字引起的汉盲转换错误,提高多音字的识别率。

3. 盲文学习机系统的总体设计和开发:根据盲文学习机的功能需求,本文设计了盲文触点驱动模块、SD卡模块、LCD显示模块、语音播报模块等主要功能模块,开发了盲文学习机的软件系统。

4. 盲文学习机功能的测试和验证:在嵌入式文件系统基础上,本文测试和验证了盲文学习机的主要功能。实验表明本文设计开发的盲文学习机具备较高的汉盲转换正确率、良好的阅读功能以及友好的人机交互方式。

关键词:盲文点显器;盲文学习机;嵌入式文件系统;汉盲翻译算法;中文分词

I

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

Abstract

The number of blind people in China is huge and the education level is not high.

How to improve the cultural literacy and knowledge level of blind people is a difficult

problem to be solved urgently in the harmonious development of our society. As an

effective learning tool for blind people, Braille dot display can help blind people to

learn without obstacles, acquire knowledge and skills, and have a very broad

application prospect. However, the commercialized Braille dot display device is not

only expensive in price, but also difficult to match the national conditions of blind

school education in our country, and it is difficult to be popularized widely to benefit

the vast number of blind people. Therefore, this paper focuses on the development

of a high performance and cost effective Braille learning machine with better reading

function, the main work is as follows:

1. Research and development of embedded file system: this paper takes SD card

as external memory of Braille learning machine, studies embedded file system,

develops text reading management function, including page turning, chapter

directory index and bookmark location, etc. The abundant network reading resources

can be transmitted to Braille learning machine to achieve text acquisition and display.

2. Research and Development of Chinese Blind Translation algorithm: based on

embedded file system, this paper implements a reverse maximum matching

algorithm for Chinese-blind translation, which can translate the vertex files of Braille

corresponding to Chinese text. The features of the algorithm are as follows: 1) the

result of word segmentation accords with the rules of Braille word segmentation, 2)

the dictionary can be modified to improve the recognition rate of unrecorded words;

3) the pinyin of the corresponding words can be directly matched by the phonetic

database to avoid the Chinese blind conversion errors caused by the multi-syllable

words and improve the recognition rate of the multi-syllable words.

3. The overall design and development of Braille learning machine system:

according to the functional requirements of Braille learning machine, this paper

II

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

designed the Braille contact driving module, SD card module, lcd display module,

voice broadcast module and other main functional modules. The software system of

Braille learning machine is developed.

4. Test and verify the function of Braille learning machine: on the basis of

embedded file system, this paper tests and verifies the main function of Braille

learning machine. The experiments show that the Braille learning machine designed

in this paper has high correct rate of Chinese-blind conversion, good reading function

and friendly human-computer interaction.

Keywords:

Braille Dot Display Device; Braille Learning Machine; Embedded File

System; Chinese Blind Translation Algorithm; Chinese Word Segmentation

III

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

目录

摘 要.......................................................................................................................... I

Abstract ......................................................................................................................... II

第一章 绪论.................................................................................................................. 1

1.1 论文研究的背景 ............................................................................................. 1

1.2 论文研究的目的 ............................................................................................. 2

1.3 国内外研究现状 ............................................................................................. 2

1.3.1 盲文点显器的研究现状................................................................ 3

1.3.2 汉盲翻译算法的研究现状............................................................ 5

1.4 论文研究的主要内容 ..................................................................................... 7

1.5 论文研究的创新点和难点 ............................................................................. 8

第二章 嵌入式文件系统开发和实现........................................................................ 10

2.1 嵌入式文件系统 ........................................................................................... 10

2.1.1 嵌入式文件系统介绍.................................................................. 10

2.1.2 FAT文件系统选型 ....................................................................... 10

2.1.3 FatFs模块应用介绍 ..................................................................... 11

2.2 FAT文件系统的应用实现 .............................................................................. 13

2.2.1 文本阅读的翻页实现.................................................................. 13

2.2.2 文本章节的索引实现.................................................................. 15

2.2.3 阅读书签的定位实现.................................................................. 16

2.2.4 文件系统应用测试实验.............................................................. 17

2.3 本章小结 ....................................................................................................... 20

第三章 汉盲翻译算法设计和实现............................................................................ 21

3.1 汉盲翻译算法设计分析 ............................................................................... 21

3.1.1 设计目标...................................................................................... 21

3.1.2 设计原则...................................................................................... 21

3.1.2 设计难点...................................................................................... 22

3.2 汉盲翻译算法实现流程 ............................................................................... 22

3.2.1 汉盲转换的总体流程.................................................................. 22

3.2.2 算法实现平台的搭建.................................................................. 23

3.3 分词连写处理 ............................................................................................... 24

3.3.1 逆向最大匹配分词算法的实现.................................................. 24

IV

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

3.3.2 基于词典的改进策略.................................................................. 25

3.4 汉字转盲文处理 ........................................................................................... 26

3.4.1 多音字排歧策略.......................................................................... 26

3.4.2 单字转拼音实现.......................................................................... 27

3.4.3 词语转拼音实现.......................................................................... 28

3.4.4 单字拼音转盲文实现.................................................................. 29

3.4.5 词语拼音转盲文处理.................................................................. 31

3.5非汉字转盲文处理 ........................................................................................ 32

3.6 汉盲翻译算法测试结果 ............................................................................... 32

3.7 本章小结 ....................................................................................................... 33

第四章 盲文学习机系统的设计和开发.................................................................... 35

4.1 盲文学习机功能需求分析 ........................................................................... 35

4.2 盲文学习机系统主要功能模块设计 ........................................................... 36

4.2.1盲文触点驱动模块设计............................................................... 36

4.2.2 SD卡存取模块设计 .................................................................... 39

4.2.3 TFTLCD显示模块设计 .............................................................. 40

4.2.4语音播报模块设计....................................................................... 42

4.2.5按键模块设计............................................................................... 42

4.3 盲文学习机系统开发环境的搭建 ............................................................... 42

4.4 盲文学习机系统的软件开发 ....................................................................... 45

4.4.1 软件系统的总体设计.................................................................. 45

4.4.2 汉盲翻译算法的应用实现.......................................................... 46

4.4.3 嵌入式文件系统应用功能的实现.............................................. 47

4.5 本章小结 ....................................................................................................... 51

第五章 盲文学习机系统的测试分析........................................................................ 53

5.1 盲文学习机系统功能性测试 ....................................................................... 53

5.1.1 SD卡检测功能测试 .................................................................... 53

5.1.2 盲文学习机交互性能测试.......................................................... 54

5.2 盲文学习机汉盲转换性能测试 ................................................................... 56

5.2.1 分词连写性能测试...................................................................... 56

5.2.2 多音字识别性能测试.................................................................. 58

5.2.3 未登录词识别性能测试.............................................................. 59

5.3 盲文学习机执行终端的控制性能测试 ....................................................... 60

V

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

5.4 本章小结 ....................................................................................................... 61

第六章 总结与展望.................................................................................................... 62

6.1 总结 ............................................................................................................... 62

6.2 展望 ............................................................................................................... 63

参考文献...................................................................................................................... 64

攻读学位论文期间的研究成果和参与项目情况...................................................... 67

发表论文:........................................................................................................... 67

实用新型及发明专利:....................................................................................... 67

软件著作权:....................................................................................................... 67

获奖项目:........................................................................................................... 67

致 谢............................................................................................................................ 69

VI

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

第一章 绪论

1.1 论文研究的背景

中国是世界上人口最多的国家,同时也是世界上视障群体最多的国家之一。据世界卫生组织2010年视障人数统计结果显示,全球范围内大约有2.85亿人有不同程度的视力损伤,其中严重视障的盲人数目大约有3900万,中国盲人数量将近825万约占世界总盲人数目的21%[1]。而且随着人口基数的增大、人口老龄化的增长以及缺少经过一定专业培训的眼科医护人员,中国盲人数目还处于一个持续增长的态势,每年约有45万的新发盲人,如果保持目前增长趋势,到2020年中国盲人数量将达到2700万[2],这是一个非常庞大的数字。去解决这样一个庞大的盲人群体的生活问题不得不成为社会的一大关注热点。

由于视力残疾的生理缺陷,视障人群只能以想象来代替观察感知,用触摸的方式、倾听的方式来认识世界。这在一定程度上给盲人的生活和学习带来了诸多不便。为了减少盲人在社会中所受到的压迫和歧视,就要加大科学文化知识在盲人群体中的传播力度,让更多的盲人学习到科学文化知识,从而降低视障群体的文盲率[3]。目前,我国盲人受教育程度很不乐观。据中国残疾人联合会对我国盲校在校盲生的统计数据显示,总在校盲生有65081人,而接受初等教育(即基础性义务教育)的盲生就有60163人占了总在校盲生的92%,而接受高等教育的盲生只占了1%,比例十分之低[4]。盲人群体中受教育状况所呈现出的这种反差现象是由多方面因素造成的,但是最根本的原因之一是我国信息文化无障碍环境建设的缺失。信息无障碍是视障人群等弱势群体的基本权利[5],盲人群体只有无障碍的获取并习得一定的文化知识形成一定的知识体系,才能更加方便的加入到社会事业中来并共享社会发展成果。

目前,视力残疾人士普遍使用的学习途径有听有声读物和阅读盲文书。由于仅仅依靠有声读物来学习特定的知识,盲人对知识的吸收率会比较低,从而降低视障者对所学知识的理解程度。因此,盲文成为视力残疾者学习文化知识,获取信息的重要元素,有助于盲人学习知识、认知发展,以及提高与人交往的能力。阅读盲文书是盲人学习外部知识的重要途径,但是我国盲文书籍资源相当匮乏。以2005年我国盲文书刊出版量统计为据,每年印制盲文书刊6万册,根据盲人1

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

数量平均下来每150个盲人才共用1册,所出书刊种类也非常有限[6]。另外由于盲文书制造工艺流程的复杂性导致盲文书籍价格往往要比普通书籍贵几十倍,很多盲人都无法承担这笔昂贵的费用。这进一步限制了盲人学习阅读的成长空间。

随着计算机技术的发展和应用,信息无障碍进程也在不断推进,市场上开始先后出现各式各样的盲文学习机。尽管一台盲文学习机价格很昂贵,但是与盲文书籍相比,盲文学习机可以将海量网络资源随意显示出来,具有非常大的优势。因此,本文针对便携式盲文学习机的开发难点进行了研究并设计开发出一款性价比较高的便携式盲文学习机。

1.2 论文研究的目的

对于视力残疾人群,尤其是先天性失明的盲人而言,只有学习和使用盲文,才能像正常人一样不断获取科学文化知识,增长智慧,通过自己的努力掌握一技之长,成为对社会有价值的人。因此,针对盲文学习机的研究具有非常重要的现实意义和社会价值。

针对我国盲人数目呈现的增长态势、盲人学习盲文的必要性、盲文书籍匮乏且体积大不便携的缺点,以及视障人士在盲文学习中遇到诸如教学途径单一的问题[7],本文基于电磁式点显装置的成本优势,研究设计出一种高性价比的盲文学习机。

为了让有接受能力但不具备上学能力的社会视障人士也能自学到盲文知识,同时给盲校低年级在读盲生提供一种不一样的盲文学习平台,本文研究设计出一种盲文学习机基于嵌入式文件系统旨在能够对盲文基础学习内容以及海量文本资源进行灵活刷新和存储,并且能够通过改变学习内容的显示顺序对盲文知识掌握程度进行检验。同时为了提高盲文学习机文本阅读的盲文摸读准确性,本文研究设计出的盲文学习机嵌入了转换性能较好的汉盲翻译系统。通过学习使用该盲文学习机,视障人群能够更加全面、更加系统地学习盲文知识,能够具备对我国现行盲文的阅读能力。同时通过该盲文学习机能够获得一个良好的阅读体验。

1.3 国内外研究现状

有关盲文学习机的研究,这里首先需要对盲文以及信息化盲文做一个简单的2

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

介绍。盲文由多个点字符号表示而成,点字符号的基本结构如图1.1所示由6个点组成,这6个点也称作盲文的一方。根据排列组合可知每方中通过所有点位凹凸的来回切换可得到64种不同的点字符形,盲人正是通过这样的点字符形以及触觉感知的方式来阅读盲文。由此可用二进制编码形式表示盲文点位的凹凸信号,并作为电子盲文阅读设备的盲文信号输入,从而实现盲文的信息化。一般为了方便转换,都将盲文设备设置为“1”对应“凸”,“0”对应“凹”,如此一来,盲文中的满方便可表示成“111111”,而空方则表示成“000000”。近年来,国内外盲文信息化领域的广大学者从显示性能以及摸读准确性能的角度主要对盲文触点感知装置以及盲文翻译系统做了较为深入的研究。因此,本文盲文学习机的研究现状主要包括盲文触点感知装置和汉盲机器翻译的研究现状。

图1.1 六点制盲文结构

1.3.1 盲文点显器的研究现状

盲文点显器是盲文学习机本体的核心组成部分,它的可靠与否直接决定着盲文触点的控制性能。因此,自盲文信息化以来就早有盲文触点感知装置的研究。早在1974年,德国Schoenherr就提出了利用电磁力来驱动盲文触针的上下运动并初步将其应用于小型盲用计算器,该计算器由10个方的盲文点字组成[8],由于该触点装置功耗大,可靠性不高,并没有做更多的应用。

1979年,美国WILLIAMS T T等人[9]研发出了压电陶瓷式的盲文点显装置。该装置以两片紧密贴合且极性相反的压电陶瓷片作为驱动器,当向其通以正向电压,压电陶瓷一片收缩一片伸长产生弯曲变形使得固定在压电陶瓷上的触针随之向上运动从而驱动盲文触点上升[10]。该装置尽管有着快速响应性能、可提供足够大的支撑力且功耗较小这些方面的优势,但是由于其采用的压电陶瓷材料价格昂贵,该装置很难在盲人群体中得到普遍的推广应用。

2005年,日本Yoichi Haga等人利用形状记忆合金并结合磁性弹簧锁作为盲文点显装置的驱动器[11]。形状记忆合金线圈在通电升温之后发生形变从而牵动盲3

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

文触针上升,不通电时恢复形状使触针下落,同时磁性弹簧锁起到让盲文触针保持上升或下落的作用。该盲文点显装置记忆合金材料成本低、功耗小并且较为轻便,但是由于非线性迟滞特性,该装置响应性能差、驱动力不足,导致其可靠性非常低。

2005年以来,中国盲人电脑开创者茅于杭教授利用压电陶瓷式驱动结构先后研发出多套实用性较高的盲文阅读装置[12]。发展至今,该盲文阅读装置具有非常可靠的应用性能,能够实现与电脑的无线连接,也可以外接u盘实现便携式学习机。如图1.2所示是目前已经商业化的一款盲文点显器,售价在两万元左右,价格十分昂贵,是很大部分盲人都承担不起的,因此,该盲文装置尽管非常实用但是有着难以克服的推广瓶颈。

图1.2 清华点显器

2008年,台湾Yeh F H等人研发出了一种电磁式盲文点显装置[13],该装置的电磁式驱动器结构如图1.3所示,图中铁芯用搪瓷线圈缠绕,以增强磁力。挡板用来固定铁芯,增强磁场,并成为电枢的支点。当线圈通上电时,被铁芯吸引的电枢将盲文针向上推。盲文引脚和挡板的编号是根据盲文点号在一个盲文单元中的编号。该装置利用自适应网络的模糊推理系统的优化能够使电磁式结构上电之后保持足够的支撑力并且使工作时产生的温度保持在一定范围。尽管该装置随着盲文方数的增加需要克服的难题也越多,但是由于该装置用材成本较低,所以电磁式盲文点显装置依然受到很多研究学者的关注。

4

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

1.3 电磁式驱动结构

综上盲文触点感知装置的发展过程,驱动器结构设计是该种装置的研究要点。尽管压电陶瓷式驱动结构是目前保证该种装置具有良好点显控制性能的最佳方式,但是由于压电陶瓷材料价格昂贵。因此,仍然有很多高校的研究人员试图设计出高性价比的驱动结构。本文设计和开发的盲文学习机中利用了一种电磁式盲文驱动机制。

1.3.2 汉盲翻译算法的研究现状

中国盲文是以拼音文字形式表示的,汉盲翻译过程就是将汉语转换成拼音继而转换成盲文的过程。根据盲文表现形式和盲人的摸读习惯,汉语盲文要符合汉语盲文分词连写的规则,因此,中文分词在汉盲翻译系统中起着非常重要的作用。由于中文分词也是中文信息处理技术中的核心环节,所以相比于汉盲翻译的研究,中文分词的研究要广泛得多。

中文分词算法分为基于词典、基于统计以及基于语义理解这三类中文分词算法。其中应用较为广泛的是基于词典的分词算法,在这一类算法中,应用较多的有逆向最大匹配算法、正向最大匹配算法和双向最大匹配算法,基于这些词典分词算法,一些学者对词典机制做了深入研究以提高时间和空间效率。

2000年,孙茂松等[14]通过实验对比了整词二分、TRIE索引树及逐字二分这三种典型的分词词典机制分别在匹配分词中的时间、空间效率。实验表明基于逐5

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

字二分的分词词典机制是一种相对简洁、高速的词典组织模式。由于逐字二分并没有改进整词二分的数据结构,在实际查找匹配中不是完全意义上的逐字匹配,因此在时间效率上并没有得到最大限度的提升。

2003年,李庆虎等[15]根据汉语中双字词语较多的特点提出了一种双字哈希词典机制。该分词词典机制采用前两字逐个哈希索引、剩余字串有序排列的结构,查询过程采用逐个匹配方法,提高了自动分词的时间效率。

2009年,赵欢等[16]提出了一种改进的双数组Trie树分词算法,该算法为了减少冲突优先处理分支节点多的节点,然后构造一个空状态序列,最后将冲突的节点放入哈希表中,不需要重新分配节点。

2013年,莫建文等[17]对中文分词词典的双字哈希结构进行了改进,并利用该词典机制对正向最大匹配算法进行了改进。改进后的双字哈希结构除了含有首字哈希表、次字哈希表以及词语剩余字符串的哈希表,还增加了词长索引表,即存储了词典中每个词语的词长。对于待匹配字符串,改进后的正向最大匹配算法将其每一个汉字作为首字在词典中查找得到最大词长,并比较每个所得词长的大小,先后从对应词长较大的汉字开始正向截取字符串进行查找匹配,进一步加大了最大分词中长词优先原则的落实度,在一定程度上增加了正向最大匹配的正确率。此外,在查词匹配中,利用词典机制中的词长索引表可以快速获取到对应词长的词,大大减少了匹配次数,提高了分词效率。

基于统计分词算法通过改进统计语言概率模型,在一定程度上可以消除中文分词的歧义,较好地识别出未登录词。2008年,Xue等人[18]提出了一种基于字位信息的中文分词算法,根据汉字在词中所处的位置将其分为四类,并且利用最大熵模型对语料库进行标注。2010年,黄德根等人[19]提出了一种双层条件随机场(CRF)中文分词算法,该方法首先利用第一层CRF模型识别出待测语料中的子词并实现基于字的序列标注,然后建立第二层CRF模型学习基于子词的序列标注提高了词的识别率。为了减少第一层CRF分词的跨越标记错误,该算法针对待测语料对子词进行了过滤去除了不必要的词语,提高了分词准确率。

随着神经网络的研究应用,基于语义理解分词算法在歧义消除和未登录词识别表现出较好的性能,提高了中文分词的正确率。2016年,Yao等人[20]提出了使用双向长短期记忆(Bi-LSTM)神经网络来实现中文分词,实验表明该方法能6

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

达到一个不错的分词正确率和召回率。从实际应用的角度来看,目前用得最多的还是基于词典的分词算法和基于CRF模型的统计算法。

由于中国盲文的特殊性和复杂性,目前汉盲翻译系统中的算法实现以国内研究为主。较早在汉盲机器翻译领域开展研究的是黄河燕教授,2003年,黄河燕等人[21]根据盲文连写规则建立85条具体的盲文连写统计库,在基于词典的常规中文分词的基础上,对分词结果进行词性标注并按照盲文连写统计库进行词与词的连写。通过使用该算法对1万多字的常规语料进行汉盲转换实验表明:该算法分词连写结果的正确率可以达到95%以上。同时期,该算法已投入到了计算机系统应用当中。

针对盲文分词连写问题,2004年,包塔等人[22]进一步对盲文分词连写算法进行补充和改进,建立了100条具体的盲文分词连写的规则库,并根据中国盲文分析出这些规则库的优先级别以解决规则歧义问题,最后利用统计模型对规则分词结果进行进一步排歧。由于该算法只采用了分词连写规则实现分词,所以其汉盲翻译结果的分词连写正确率只达到了92%。

2015年吕先超[23]基于CRF统计的中文分词算法,并对一条盲文连写规则进行统计分析,最后开发出了一款汉盲自动翻译的SunBraile软件。由于所采用的中文分词算法是分词性能较好的CRF分词,所以该算法针对一定的测试文本能达到较高的翻译正确率。但是对于分词连写规则考虑得太少,所以该汉盲翻译算法整体的分词连写正确率并不高。

2016年,Wang X等人[24]提出了一种基于盲文语料集的汉盲转换方法,该种方法利用概率模型统计算法直接对盲文语料集进行分词处理,其分词效率相比于多知识分析方法要提高很多,但是目前还处于盲文语料集不断完善的阶段。

综上汉盲翻译算法以及对汉盲机器翻译做出重大贡献的中文分词算法的状况来看,基于目前研究较为成熟的中文分词技术,汉盲翻译算法在前人的不断努力之下也取得了很大的进展并且逐步推动了盲文信息化进程。由于汉语盲文分词连写规则繁多,本文试图采用分词规则便于矫正的基于词典的中文分词算法对汉盲翻译算法进行实现。

7

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

1.4 论文研究的主要内容

本文首先对嵌入式文件系统的应用实现进行了深入的研究,利用SD存储卡的读取操作来具体实现文本翻页、目录索引以及阅读标签定位的功能,从而实现盲文学习机的学习阅读功能。

其次,本文对汉盲翻译算法的实现进行了深入的研究并具体实现了一种汉盲翻译算法,将该汉盲算法应用于盲文学习机中,使盲文学习机的汉盲转换结果呈现出较好的分词连写性能、多音字识别性能以及未登录词识别性能。

最后,本文对盲文学习机的软硬件系统进行了总体分析和设计,包括硬件电路各个功能模块的组成以及学习阅读功能的具体设计和实现,从而设计开发出一种较为实用的盲文学习机。

1.5 论文研究的创新点和难点

本论文研究的创新点有以下3点:

1、研究设计出一种适用于盲文学习机的嵌入式文件系统,包括文本翻页、章节目录索引以及书签定位功能的实现方法,并将其应用于盲文学习机系统中,提高盲文学习机的阅读交互性能;

2、研究设计出一种较好的汉盲翻译算法,并将其应用到该多功能盲文学习机系统中,提高盲文学习机的可摸读性;

3、研究设计出一种电磁式盲文学习机的软硬件系统,并开发出一种多功能盲文学习机,相比于压电陶瓷式,电磁式盲文学习机大大降低了盲文学习机驱动机制的成本。

本论文研究的难点有以下3点:

1、本论文采用SD卡作为文本管理的外部存储器,为了让盲人方便地获取到该盲文学习系统的嵌入式文本资源,如何利用SD卡的存取操作实现阅读交互功能是一个难点。

2、由于词是计算机进行语言信息处理的基本要素,是进行句法分析和理解的基础,要实现汉盲转换首先必须对汉语进行分词。另外,为了让一些意义上结合得较为紧密的短语连写起来以便于盲人摸读,在汉盲翻译转换时,还需要考虑到盲文的分词连写。因此,在汉盲翻译的过程中,如何实现汉字文本的分词连写对汉盲进行准确转换是一个难点。

8

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

3、在最终盲文学习机系统的设计开发中,如何对SD卡存储的文本字符进行统一化处理,使得嵌入式文件系统的应用实现方法适用于20方120个盲文点位的硬件封装是一个难点。

9

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

第二章 嵌入式文件系统开发和实现

2.1 嵌入式文件系统

2.1.1 嵌入式文件系统介绍

嵌入式文件系统是在应用程序与外设存储器之间实现一种通用接口的软件功能模块。它负责给嵌入式软件系统提供文件创建、读写等文件存取管理功能,从而为嵌入式存储外设提供通用的文件系统支持。

在嵌入式系统中,常用的外围存储设备有随机读写存储器RAM和闪速存储器(简称闪存)如SD卡、MMC卡、CF卡 、SM卡等,其中闪存以其非易失性、较好的可靠性、较快的存储速度广泛应用于像数码相机、电子书、个人手机、MP3播放器等嵌入式设备中。由于嵌入式文件系统为这些存储设备设计定义了数据在磁盘上的分区方法和基本数据结构,形成了统一标准的文件组织,并封装了可调用的API接口。因此,在嵌入式系统开发中,我们无需了解物理存储内容就可以对文件进行便捷的管理操作。

嵌入式文件系统的文件存储格式有针对Linux操作系统设计的Ext2/3文件格式、Windows系统通用的FAT文件格式和NTFS文件格式。由于本文设计的盲文学习机系统不基于任何操作系统,考虑到文件系统的通用性和适用性以及文件系统存储空间的开销,本文选择FAT文件格式。

2.1.2 FAT文件系统选型

FAT(File Allocation Table )即文件分配表,此文件格式是由微软推出的在MS-DOS和Windows系统中使用的一种非线性链表式结构的文件系统[25]。FAT表用来记录表项序号与磁盘中各个文件存储簇的对应关系。在FAT文件系统中,FAT表的链式结构大大方便了磁盘中文件数据的查找和定位,提高文件存取效率,是一种十分重要的数据结构。

按照FAT文件系统中给磁盘空间分配的簇数量大小可将FAT文件系统分为FAT12、FAT16、FAT32,其FAT位数与簇数量的对应关系如表2.1所示,FAT位数表示磁盘分区存储字节的位数。它们的磁盘容量最多分别可以达到16M、2G、2TB,在这些FAT文件系统类型中,FAT12格式的文件系统可支持的磁盘容量太小,10

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

除了有些软件驱动器会用到,其他场合基本都不会考虑。FAT32的文件系统相比于FAT16的文件系统最大的优势在于可管理的磁盘容量,具有强大的磁盘管理能力。除此之外,FAT32格式划分的簇更小,对于同样大小的分区,采用FAT32格式划分的簇所占空间大小是FAT16的1/8,在存储效率上明显占有一定的优势。因此,本文拟采用FAT32文件系统对SD卡存储文件进行管理。

表2.1 FAT位数与簇数量对应表

FAT位数

12

16

32

簇数量

4096

65536

4294967296

目前有两种支持FAT文件系统的应用接口模块,一种是需要付费的商业版uC/FS软件[26],一种是免费开源的FatFs软件,两种接口模块都适用于嵌入式多媒体存储设备。本文选用开源的FatFs文件系统模块来实现SD卡文件系统应用功能。

2.1.3 FatFs模块应用介绍

FatFs是一个DoS/windows兼容的并且适用于小型嵌入式系统的通用FAT文件系统模块。在嵌入式系统中,FatFs模块具有较强的可移植性和通用性,它不依赖于磁盘I/O层,与诸如存储卡、硬盘和任何类型的存储外设等物理设备完全分离,而且由于FatFs模块的程序代码和工作区所占用的空间很小,因此,完全可以将其原封不动的集成到资源有限的小型微控制器中,如8051、AVR、PIC、ARM、Z80、RX等。此外,FatFs模块的源代码是按照Ansi c(C89)编写的,所以对于大多数软件开发平台如Keil、GNU GCC、Visual Studio等,FatFs模块都是可以直接适用的。

在嵌入式软件开发中,如果需要获取到底层存储设备的磁盘相关信息比如磁盘剩余量大小或者需要对磁盘进行直接操作,那就需要用到存储设备控制模块提供的diskio.c的磁盘操作文件,该文件及其对应的头文件也都包含在FatFs源代码中。不同于FatFs模块函数的是,该磁盘操作文件需要用户根据硬件类别对其做一些简单的修改。

FatFs模块提供很多的应用程序接口(API)函数,软件开发人员在实现文件11

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

管理功能过程中只需根据需要调用API而不用去了解底层设备I/O,大大简化了文件功能的实现过程。这些API函数按照功能类型可划分为文件访问、目录访问、文件和目录管理以及卷管理和系统配置功能函数。其中,文件访问函数有打开文件函数f_open()、关闭文件函数f_close()、读文件函数f_read()、写文件函数f_write()、读一个字符串函数f_gets()、写一个字符串函数f_puts()、写一个字符函数f_putc()等等,目录访问函数有打开目录函数f_opendir()、关闭目录函数f_closedir()、读取目录项函数f_readdir()等等。本文在对SD卡进行文件系统的应用实现过程中调用了FatFs模块文件访问的功能函数。

在嵌入式文件系统中,存储设备控制模块对磁盘扇区进行直接控制位于最底层,FatFs模块是中间层,应用软件层位于最顶层,FatFs模块与存储设备控制模块完全分离,最顶层Application应用软件层无需动用存储设备控制模块直接对FatFs模块提供的应用程序接口FatFs API进行调用。 本文将适用于小型嵌入式系统的FAT文件系统嵌入到盲文学习机中,对SD卡中的TXT文本进行相应功能的实现。SD卡文件系统软件架构图如图2.1所示,txt文件以FAT32文件系统格式存储在SD卡中,通过MCU主控部分硬件驱动层的SD卡命令以及对文件系统层的FatFs模块API函数的直接调用,用户可以很方便的对SD中的文件进行相应功能的实现。

应用FatFs APIFatFs模块MCUSD卡命令应用软件层文件系统层硬件驱动层FAT32文件系统SD卡.txt文件

图2.1 SD卡文件系统架构

12

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

2.2 FAT文件系统的应用实现

通过以上对嵌入式文件系统的通用性分析,本文利用FAT文件系统设计出针对盲文学习机的文件系统应用功能的实现方法。以下将分别对文本阅读的翻页功能、文本章节的索引功能以及阅读书签的定位功能进行实现方法的设计。

2.2.1 文本阅读的翻页实现

由于盲文学习机每次显示的盲文点序的数量是一定的,所以对于SD卡中存储的txt文本,每次获取的字符串长度也是一个定数。针对盲文学习机的文本阅读的上、下翻页功能图如图2.2所示,存储预显示数据流的txt文本被按页读取,图中页面Page1、Page2…Pagen-1、Pagen均存放了相等字节数的数据流,盲文学习机的翻页过程就是在这些页面之间来回切换的过程。当对txt文本执行下翻的时候,盲文学习机显示内容可以从Page1依次跳转到Pagen-1,可以从Pagen-1跳转到Page1,形成一个闭环的下翻功能。相反,当对txt文本执行上翻的时候,盲文学习机显示内容可以从Pagen-1依次跳转到Page1,可以从Page1跳转到Pagen-1,形成一个闭环的上翻功能。

txt文本...下翻Page1Page2

...Pagen-1Pagen上翻Page1Page2

...Pagen-1Pagen

图2.2盲文学习机上下翻页功能的示意图

根据以上针对盲文学习机的翻页功能,本文利用文件访问的API函数对该功13

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

能进行了实现。假设txt文本用文件指针*fil表示,每次要获取的字节数为n,每次要获取并显示的字符串用Data表示,则实现文本下翻的流程图如图2.3所示。图中f_tell(&fil)函数返回的是读取指针当前所在的位置,也就是读取指针相对文本开头即图2-2中Page1开头的偏移量,f_size(&fil)函数返回的是文本的大小。当f_tell(&fil)= f_size(&fil)的时候,说明当前翻到的是最后一页,而当f_tell(&fil)= n的时候,说明当前翻到的是第一页。

每次执行文本下翻,首先要判断f_tell(&fil)返回值是否与f_size(&fil)返回值相等,即判断是否翻到了最后一页,如果是,则执行f_lseek(&fil, 0)函数将读写指针移到第一页开头的位置,从而使再次下翻显示到第一页;否则按照读取指针原来的位置依次往下读取。确定好读取指针之后再执行f_gets(Data,n,&fil_1)获取n字节的字符串Data,最后显示Data。

执行文本下翻Yf_tell(&fil)==f_size(&fil)Nf_lseek(&fil,0)f_gets(Data,n,&fil_1)显示Data

图2.3 文本下翻的程序流程图

实现文本上翻的流程图如图2.4所示。每次执行文本上翻,首先要判断f_tell(&fil)返回值是否等于n,即判断当前是否翻到第一页,如果是,则执行f_lseek(&fil, f_size(&fil)-n)函数将读写指针移到最后一页开头的位置,从而使再次上翻显示到最后一页;否则执行f_lseek(&fil, f_tell(&fil)-2n)将读取指针移到上一页页首的位置。确定好读取指针之后再执行f_gets(Data,n,&fil_1)获取n字节的字符串Data,最后显示Data。

14

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

执行文本上翻Yf_tell(&fil)==nNf_lseek(&fil,f_tell(&fil)-2n)f_lseek(&fil,f_size(&fil)-n)f_gets(Data,n,&fil_1)显示Data

图2.4 文本上翻的程序流程图

2.2.2 文本章节的索引实现

对于SD卡中具有章节概念的txt文本,本文对其章节目录的内容和地址信息进行获取并存储继而根据所获信息对文本章节的目录索引功能进行实现。实现文本章节索引的流程图如图2.5所示,图中n个章节标题在txt文本中均与正文分开,单独占用一段,利用章节标题这种显著特点作为章节识别的依据分别将n个章节的目录名、目录首地址提取出来并将目录名、目录首地址分别存储到、两个文件中。文件、分别用文件指针*fil_1、*fil_2表示,设Len为目录名最大字节数,i从0到n-1,分别对f_gets(Name[i],Length,&fil_1)、f_read(&fil_2,&P[i],sizeof(P[i]),&br)函数各执行n次,从而得到n个章节的目录名Name[0]…Name[n-1]和目录首地址P[0]…P[n-1]。根据某一个章节的目录名假设为Name[i]得到与之对应的目录首地址P[i],执行f_lseek(&fil,P[i]),从而进入第i章节的内容达到目录索引的目的。

15

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

第一章...正文...第二章...正文......第n-1章...正文...第n章...正文...提取目录名提取目录首地址(*fil_1)

(*fil_2)f_gets(Name[i],Len,&fil_1) (-1)f_read(&fil_2,&P[i],sizeof(P[i]),&br)Name[0]P[0]Name[1]...Name[n-2]Name[n-1]P[1]...P[n-2]P[n-1]txt文本(*fil)f_lseek(&fil,P[i])进入第i章

图2.5文本章节索引的程序流程图

2.2.3 阅读书签的定位实现

基于2.2.1中翻页功能的实现,本小结对当前翻到的页面首地址进行获取并以文件的形式保存在SD卡中,当退出文本阅读或关机再次进入到文本阅读的时候,可以根据所保存的地址直接定位到上一次读到的页面。实现阅读书签定位功能的流程图如图2.6所示。在文本阅读状态下,当前读到页面为任意Pagei,基于2.2.1中的定义,获取当前页面首地址P1为f_tell(&fil)-n,假设存放P1的文件为, 用文件指针fil_n表示。执行f_write(&fil_n,&P1,sizeof(P1),&bw) 写函数将P1存入文件中。当退出再次进入该文本阅读时,执行f_read(&fil_n,&P2,sizeof(P2),&br)将中的P1值传递给P2,再执行f_lseek(&fil,P2)将读取指针移位到Pagei首地址,从而进入Pagei实现书签定位的功能。

16

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

当前页面Pagei退出当前页面P1=f_tell(&fil)-nf_write(&fil_n,&P1,sizeof(P1),&bw)再次进入页面阅读f_read(&fil_n,&P2,sizeof(P2),&br)f_lseek(&fil,P2)进入Pagei图2.6 书签定位的程序流程图

2.2.4 文件系统应用测试实验

为了验证以上嵌入式文件系统应用实现流程的可行性,本文从网载资源中下载了一篇中文小说《假如给我三天光明》的文本文件,并在STM32学习开发板上展开对以上实现方法的测试实验。利用以上分析的实现方法将小说内容按页显示在LCD液晶显示屏上,每页显示的字节数设置为26。

为了保证后续应用实现中正常显示汉字,首先需要在VC++平台上对进行预处理,将文本中所有空格符和换行符去掉并对所有单字节字符尾加一个空格符,在预处理的同时进行章节目录提取并获取、两个章节目录信息文件;然后将处理过后的小说文本以及、这3个文件保存到SD卡中;最后将以上实现方法结合按键触发应用到STM32的LCD显示实验中。

章节目录索引功能实现方法的测试示例如图2.7所示,章节目录选择之前的LCD显示如(a)图所示,光标位于头一个标题名。按下选择按键将光标定位到17

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

第五节标题名进行章节选择,选择之后的LCD显示如图(b)所示。再次按确认键进入到第五节正文如图(c)所示。该测试的显示结果表明了该章节目录索引功能实现方法的可行性。

(a)选择前 (b)选择后

(c)第五节首页

图2.7 章节目录索引的测试示例

接下来进行翻页功能实现方法的测试,其测试示例图如图2.8所示,紧接第五节第一页的显示内容继续先后按下翻、上翻的按键,显示结果如图(a)、(b)所示。为了测试全文首尾页的翻页功能,本文通过将读取指针移位到文本首页的方式在实验中设置了一键返回全文首页,从而使LCD显示全文首页如图(c)所示。此时继续先后按下上翻、下翻的按键,显示结果如图(c)、(d)所示。显示18

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

结果表明了闭环翻页功能实现方法的可行性。

(a)第五节首页 (b)第五节第二页

(c)全文首页 (d)全文末页

图2.8 上下翻页的测试示例

书签定位功能实现方法的测试示意图如图2.9所示,当LCD显示到第五节首页时,退回到目录界面。再次进入正文显示前言首页,此时按下书签定位的按键,LCD显示上次读到的页面,即第五节首页。显示结果表明了本文书签定位功能实现方法的可行性。

19

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

图2.9 书签定位的测试示例

2.3 本章小结

本章节主要针对盲文学习机的交互性需求对嵌入式文件系统进行了研究应用,嵌入式文件系统作为应用程序与外设存储器之间的一种通用传输介质,是嵌入式系统中的一个重要组成部分。目前,对于嵌入式文件系统的研究已是十分成熟。本文结合广泛应用于小型嵌入式文件系统的FAT文件系统设计并实现了文本阅读的翻页功能、文本章节的索引功能、阅读数钱的定位功能,实验表明FAT文件系统能很好的对SD卡内部文件进行操作。

20

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

第三章 汉盲翻译算法设计和实现

3.1 汉盲翻译算法设计分析

3.1.1 设计目标

汉盲翻译算法是将中文字符转换成数字化盲文点序的过程。在当下日新月异的互联网信息时代,汉盲翻译算法能将网络上丰富的汉文资源自动转换成可供盲人摸读的盲文,是解决我国广大盲人无障碍获取信息的重要途径[27,28],也是本文盲文学习机设计开发过程中需要研究的关键技术之一。因此,本文根据中国现行盲文转换规则实现出一种汉盲翻译算法,使之能方便地移植到盲文学习机小型嵌入式系统中,并且使盲文学习机所显示的盲文可为盲人正确摸读。

3.1.2 设计原则

中国盲文由汉字拼音转换而来,其摸读理解的过程与中文阅读一样需要有构词的概念并且注重词义的理解而非单个的盲文或汉字。因此,汉文到盲文的机器翻译并不只是简单的逐字转换,而是要先对中文进行分词处理,然后再转换为盲文。此外,从盲人摸读效率考虑,中文分词还要尽量符合盲文分词连写规则[29,30]。

根据盲文点阵的表现形式和盲人的摸读习惯,中国盲文分词连写规则中要符合基本的汉语语法、语言的逻辑性和习惯性,以避免造成语句歧义。此外,考虑到词语所含音节的长短对盲人摸读的影响,汉语词长一般不超过四个字[31,32]。对于四音节及四音节以上的词能按词或语节划分的要适当取短,不用连写,比如“中华|人民|共和国”。而对于一些不同词性搭配的词,要适当取长以减少一些零散的单音节词,比如“高兴得|跳了|起来”,其中“得”、“了”作为助词分别前连“高兴”、“跳”。由于汉语盲文分词连写规则尤其是对各类词和词组的分词连写规则十分繁多,完全使用计算机自动实现盲文的分词连写十分之难。因此,本文拟采用基于词典的中文分词算法,从而可以根据分词结果对词典进行适当有效的删减或者添加词语,使汉盲翻译结果更加符合汉盲分词连写的规则,从而实现一种翻译性能较好的汉盲翻译算法。

基于词典的分词算法依赖于存储丰富词汇量的词典库,其性能好坏在一定程度上取决于该词典库的词汇覆盖率,比如,句子“他|吃得消|如此|炎热|的|夏21

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

季|”中的词汇都能在词典库中找到,则此时词汇覆盖率为百分之百。此外,基于词典的分词算法分词的准确率还与匹配策略和扫描方式有很大的关系,按照匹配策略和扫描方式可将基于词典的分词算法分为正向最大匹配算法、正向最小匹配算法、逆向最大匹配算法和逆向最小匹配算法。对于匹配策略的选择,由于词所传达的信息量往往与本身词长成正相关,一般在与词典的一次遍历匹配中,如果匹配到多个词,则优先选择最大词长的词,即采用最大匹配策略。而对于扫描方式,根据中文里重要信息后置的语法特点,逆向扫描方式的分词效果较好于正向扫描方式[33],比如,对于歧义句“来信里通知说明天下午在南京市长江大桥集合”,逆向最大匹配算法的分词结果为“来信|里|通知|说|明天|下午|在|南京市|长江大桥|集合|”,而正向最大匹配的分词结果为“来信|里|通知|说明|天下|午|在|南京市长|江|大桥|集合”,从该句的分词结果可以看出,逆向匹配的分词准确率要明显高于正向匹配。为了提高盲文分词连写的准确率,本文拟采用逆向最大匹配的中文分词算法。

3.1.2 设计难点

在汉盲翻译算法中,汉字的转换要经过汉字转拼音、拼音转盲文这两个主要环节,其中如何将汉字转拼音是汉盲翻译算法中的难点,也是决定汉盲翻译算法转换性能好坏的关键环节。如果将汉字直接转拼音将会出现很多问题,最为典型的问题就是多音字无法识别、摸读歧义尤为严重。因此,本文在汉盲翻译算法中注重中文分词的设计合理有效地增加汉字在语句中的成词率,由词语转为词语拼音,提高多音字识别率,同时盲文词块的增加能够有效减少摸读歧义。

3.2 汉盲翻译算法实现流程

3.2.1 汉盲转换的总体流程

为了让汉盲翻译结果具有可靠的摸读性能,本文汉盲翻译流程主要包括逆向最大匹配分词算法的实现和汉盲转换的实现。该汉盲转换的总体流程如图3.1所示。图中首先对输入的中文文本进行逆向最大匹配分词,通过字符识别将分词结果分为汉字和非汉字两种字符类型。对于非汉字字符,利用相对应的符盲对照库可直接将非汉字字符转换为盲文点序。对于汉字字符,首先要利用汉字拼音库(针对单字)、词语拼音库(针对词语)对汉字字符进行汉拼转换,然后再利用拼音22

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

盲文对照库(即声母、韵母、单方音节盲文对照库)将汉字字符进行拼盲转换,从而得到盲文点序。最后,根据盲文分词结果结合盲文分词连写规则判断是否要进行词典(即词库以及词语拼音库)修改,如果需要修改,则对词典中的词语进行合理的删除或添加然后重新对文本执行汉盲翻译流程。

开始文本输入添、删词语逆向最大匹配分词字符识别数字、标符、字母盲文对照库符盲转换汉拼转换汉字、词语拼音对照库点序输出拼盲转换拼音盲文对照库Y词典修改N结束

图3.1 汉盲翻译总体流程图

3.2.2 算法实现平台的搭建

Visual C++6.0(简称VC6.0)是微软公司推出的一款基于windows操作系统并且免费公开的C++/C语言编程开发工具,它是由众多组件组成的可视化集成开发工具,除了基本的编辑、编译以及调试功能,还向用户提供了程序向导AppWizard、类向导Class Wizard等开发工具。VC6.0有着友好的编译环境和易于操作的开发界面,非常适合广大c语言学习应用开发者。

本文在VC6.0开发平台下采用C语言来实现汉盲翻译的算法程序。在VC6.023

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

中建立一个Win32 控制应用的工程文件并设置一个空工程的控制台程序,这样就可以向工程文件中建立并添加c语言文件,编写汉盲翻译的算法程序,在程序编写的过程中,利用控制台窗口进行可视化的输出测试,检验算法实现的逻辑性和正确性。

3.3 分词连写处理

3.3.1 逆向最大匹配分词算法的实现

逆向最大匹配的中文分词算法的基本流程是:对待切分的中文句子按照从右到左的顺序进行逐一截取,将每次所截取的字符串与词典中的词按照最大词长优先的原则进行匹配,最后根据匹配结果对句子进行字词的切分。本文在汉盲转换之前采用了逆向最大匹配的中文分词算法对输入的中文文本进行分词处理,并在VC6.0平台上实现了该算法。在分词过程中所采用的分词词库来源于GitHub联合开发平台。以下是该算法的具体实现步骤:

步骤一:输入待切分中文文本,将文本按照段落逐段进入下面的分词步骤,直到文本最后一段分词完毕结束分词;

步骤二:对段落文本进行预处理。首先将段落文本中的所有空格进行清除,再对段落文本字符串挨个扫描进行字符识别。根据字符编码类型从文本中划分出非汉字字符块和纯汉字字符块。在非汉字字符块中,针对标点符号的特殊性将所建立的标符数组作为一个判据,将标点符号与其他非汉字字符区分开来。对于标点符号以及其他非汉字块,将其尾加分隔符直接加入到分词结果NStr中。而对于纯汉字字符块,在此用Str表示,其长度用StrLen表示,对其进行下面的步骤。对Str的逆向最大匹配分词流程如图3.2所示;

步骤三:从Str的末尾开始截取待匹配候选词,将该词设为W,词长设为Len,假设词典中最大词长为MaxLen,比较StrLen与MaxLen的数值大小,以较小的值作为Len的值;

步骤四:对W是否为单字进行判断。如果W为单个汉字,则直接将W尾加分隔符加入到NStr中,Str分词结束,否则转到步骤五;

步骤五:将W与词典中的词进行匹配,如果匹配成功,则将W尾加分隔符加入到NStr中,同时将Str中的W剔除作为新的Str,重新从步骤三开始执行直24

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

到Str为空汉字字符块分词结束;如果匹配不成功,则从W开头减去一个汉字作为新的W,反复执行步骤四直到W减为单个汉字。

输入StrStr为空Str=Str-WNStr=NStr+W+ |

Y输出NStrNYW为单个汉字NStrLen>ManLenNYLen=MaxLenLen=StrLen查找匹配Y匹配成功NW=W-1Len=Len-2

图3.2 Str分词流程图

3.3.2 基于词典的改进策略

在词库匹配中,如果每次都从词库开头进行逐一匹配,匹配次数必定会非常繁多,匹配速率大大降低。为了减少不必要的匹配次数,该算法对词库中的每个词语使用了二维的指针数组进行定位存储,将词库中每个词的第一个字节和最后一个字节作为二维变量,利用结构体二维指针数组把含有相同第一个字节和最后一个字节的多个词串相连起来进行存储。这种存储方式极大地提高了查词典的效率,在查词匹配时利用第一字节和最后一个字节直接定位或者通过几级指针快速检索。

为了便于盲人摸读,本文根据分词结果结合盲文分词连写规则判断是否可以25

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

通过在词典中删去有碍于盲文分词连写的词或者添加有助于盲文分词连写的词,从而对盲文分词结果进行适当的调整。由于词典对整体的分词效果影响非常之大,所以此处对词库的调整方式更多只针对词组内部的分词连写。按照盲文分词连写要求,四音节及四音节以上能按词或语节划分的词不连写,比如四音节词“劳动|模范”、“社会|主义”、“民主|专政”,四音节以上的词“中华|人民|共和国”。类似于这样整体概念的较长词一律通过程序设置的方式从词典中删去。此外,分词结果中如遇到典型的人民地名以及专有名词未被划分出来,则在词典中添加这些未登录词。

对于输入中文文本“中华人民共和国(CHN),是人民民主专政的社会主义国家”,对其进行以上逆向最大匹配分词以及词典改进策略的分词连写处理之后,得到的最终分词结果为“中华|人民|共和国|(|CHN|)|是|人民|民主|专政|社会|主义|国家|”。

3.4 汉字转盲文处理

对于待转换的汉字字符,本文按照中国现行盲文的转换规则对其进行汉盲转换,该转换的概要流程如图3.3所示,先要将汉字转换为拼音,然后再将拼音转换为盲文。

输入汉字汉字转拼音拼音转盲文输出盲文

图3.3 汉盲转换概要流程图

3.4.1 多音字排歧策略

汉字盲文是一种表示拼音的符形,在汉字转盲文过程中,一旦汉字拼音结果出现很大偏差,则汉字盲文的错乱程度是显而易见的。汉字拼音绝大多数都由声母、韵母组成,多音字存在的多个拼音之间的差别有大有小,如多音字“乐”存在“yue”和“le”这两种拼音,其声母韵母都不相同,有些则是声母或韵母半边不相同,如多音字“长”,“便”等。对于这样的多音字,如果不能正确地识别出来,将会使盲人根本无法对其进行正确的摸读,造成很大的摸读歧义。因此,在汉盲转换中,正确定位多音字的拼音从而排除多音字歧义显得尤为重要。

为了避免多音字引发的歧义问题,本文将汉字转拼音环节建立在上一节中文26

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

分词的基础之上,将汉字转拼音分为单字转拼音和词语转拼音两种方式进行处理。

3.4.2 单字转拼音实现

对于单个的汉字,在汉字转拼音的过程中,本文首先将拼音以及与拼音对应的所有汉字构成的汉字串作为结构体数组的两个元素存于结构体中。该结构体的存储形式为:假如存储的拼音元素为“a”,则与其对应的所有汉字构成的汉字串“阿啊呵腌吖锕嗄”作为另一个元素存储。如此,假设需要转换的单字是“啊”,则只需让其与汉字串中的每个字进行匹配,匹配到了,则根据汉字串直接定位到该字的拼音“a”。

单字转拼音的流程图如图3.4所示,图中hz表示待转换的单字字符,PTH表示存储汉字拼音的结构体名称,HZs表示汉字串元素,n表示结构体数组的个数(即汉字串元素的个数),PY表示拼音元素。汉字hz转拼音程序开始,初始化两个自变量i和j,从结构体PTH中第一个结构体数组开始遍历匹配。由PTH[i].HZs定位到第i个结构体数组中的汉字串,执行memcpy(HZ,HZs+j,2)将HZs中的第(j/2+1)个字与hz进行匹配,如果匹配成功,则由PTH[j].HZs→PY定位到第j个结构体数组中的拼音,从而得到最终转换结果;如果匹配不成功,则通过j自加2的方式转到HZs的下一个汉字,并通过j是否等于HZs的字符长度来判断当前的HZs中的每个汉字是否都已遍历匹配,如果是,则通过i是否等于n来判断当前遍历到的结构体数组是否是最后一个并通过i自加的方式定位到下一个结构体数组中的汉字串重复以上匹配过程,否则继续将hz与当前HZs中的下一个汉字重复以上匹配过程。在判断是否遍历到最后一个结构体数组时,如果是则说明hz匹配失败,输出hz不存在的提示。由此实现单字转拼音的过程。

27

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

开始i=0;j=0PTH[i].HZsi++memcpy(HZ,HZs+j,2)YNi=nNYhz与HZ匹配j=strlen(HZs)j=+2N匹配成功YPTH[i].HZs PYhz不存在结束

图3.4 单字转拼音流程图

3.4.3 词语转拼音实现

在词语转拼音环节中,本文首先需要对词语拼音库进行合理的存储,这些词语拼音库也都来源于GitHub联合开发平台,并且与词库中的元素存在一一对应的关系。为了便于在词语转拼音的过程中根据词语直接定位到相应的词语拼音,本文基于3.3.2中词库的存储方式将词语拼音作为字符型元素添加到存词的结构体中,从而与相应词语同步使用二维指针数组进行逐个存储。

该词语转拼音过程可以描述为:假设词语Wd和拼音Py作为两个元素存于结构体LinkWord中,该结构体的二维指针数组命名为WordDict,在中文分词环节中的待匹配词为W,则根据W的首字节firstchar和尾字节lastchar定位到二维结构体指针数组WordDict[firstchar][ lastchar]进行查词匹配,当W与词语Wd匹配上,则可直接由WordDict[firstchar][ lastchar]. LinkWord→Py得到拼音,从而实现词语转拼音的过程。词语转拼音流程图如图3.5所示。

28

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

输入WW与Wd匹配匹配成功Y输出WordDict[firstchar][ lastchar]. LinkWord Py图3.5 词语转拼音流程图

3.4.4 单字拼音转盲文实现

对于汉盲转换而言,汉字拼音划分为单方音节(即整体认读音节)和声韵母结构的两方音节,由此汉拼转换所需要的盲文对照库分别有单方音节盲文对照库、声母盲文对照库和韵母盲文对照库。根据中国盲文相关规则统计,单方音节有43个,声母有23个,韵母有35个,这三种元素及其对应的盲文点序分别存储在3个不同的结构体中。

在单字转拼音环节中,本文首先对单方音节进行遍历匹配,同时对待转换拼音的音节类型进行了判断。单方音节转换流程如图3.6所示,图中PY为待转换的拼音,Df为存储单方音节py及其盲文序列data的结构体数组,n为单方音节个数。初始化i值为0,整个判断过程从Df中第一个单方音节开始遍历匹配。如果Df[i].py与PY匹配成功,则输出Df[i].data得到盲文序列并尾加“000000”的空方;如果匹配不成功,则转到下一个单方音节重复上述匹配。如果匹配到最后一个仍未匹配成功则表示PY为非单方音节,转入声韵母结构的拼盲转换。

29

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

输入PYi=0YNi=nNi++strcmp(PY,Df[i].py)=0YPY为非单方音节输出Df[i].data+空方

图3.6 单方音节转换流程图

对于声韵母结构的拼音,其拼盲转换的流程如图3.7所示。图中PY为待转换的拼音,Len为PY的字符长度,SM为存储声母sm及其盲文序列data的结构体数组,n为声母个数,YM为存储韵母ym及其盲文序列data的结构体数组,m为韵母个数。初始化i,j的值都为0,该转换过程首先从SM中第一个声母开始遍历匹配,再从YM中第一个韵母开始遍历匹配。声母按字节数可分为单字节和3字节两种类型,为了方便匹配,本文将3字节类型的3个声母依次存储在SM的最前面。首先取PY的前三个字节作为待转换声母sm,与SM中前三个声母进行遍历匹配,如果都不匹配,则取PY的前一个字节作为sm与SM中单字节声母进行遍历匹配,如果都不匹配,则说明PY出错。经过声母匹配,如果PY的声母部分为3个字节,则将PY剩下的(Len-3)个字节作为待转换ym,通过j自加的方式将ym依次与YM[j].py匹配,否则将PY剩下的(Len-1)个字节作为ym重复上述韵母匹配过程,如果匹配到YM中最后一个韵母都不匹配,则表示PY出错。如果PY的声、韵母部分都匹配成功,则输出SM[i].data+YM[j].data+空方,将声、韵母盲文序列进行合并,并尾加空方。由此得到单字的拼盲转换结果。

30

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

输入PYi=0,j=0memcpy(sm,PY,3)Ni=3Ymemcpy(sm,PY,1)Ni++Nstrcmp(sm,SM[i].py)=0YYi=nYi++YNj=mmemcpy(ym,PY+3,Len-3)Nstrcmp(sm,SM[i].py)=0Ymemcpy(ym,PY+1,Len-1)Nj++Nstrcmp(ym,YM[j].py)=0YYNj=mNj++strcmp(ym,YM[j].py)=0YPY出错输出SM[i].dataYM[j].data+空方

图3.7 声韵母结构的拼盲转换流程图

3.4.5 词语拼音转盲文处理

词语拼音转盲文的流程如图3.8所示,首先将待转换的拼音串PYs拆分成独立的拼音,然后按照上一小节中单字拼音转盲文的方式将多个拼音py逐个转换成盲文br,并将这些盲文不尾加空方直接进行合并,从而完成整体转换得到盲文串BRs,最后对整体盲文尾加空方。为了方便拼音串拆分成多个独立的拼音,本文对词语拼音库进行了简单的处理使其每个拼音串中每个独立拼音都尾加空格,比如“词语”对应的拼音串为“ci yu ”。

31

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

py1拆分拼音串合并盲文串BRs尾加空方py2单字拼音转盲文...pynbrn

图3.8 词语拼音转盲文流程图

3.5非汉字转盲文处理

非汉字转盲文的过程要比汉盲转换简易得多,应用于该转换环节的符盲对照库存储在结构体数组FTB中。非汉字转盲文的流程如图3.9所示,n为存储的符号个数,将待转换的非汉字字符FH与符盲对照库中的符号元素fh进行遍历匹配,匹配成功得到相应的盲文序列FTB[i]. data。当i等于n 仍未匹配成功,则表示FH不存在。

输入FHi=0YNi=nNi++strcmp(FH,FTB[i].fh)=0YFH不存在输出FTB[i].data

图3.9 非汉字转盲文流程图

根据盲文的摸读习惯,对于标点符号,以上转换所得的盲文序列都不尾加空方。对于其他非汉字字符块,逐个转换所得到的盲文序列合并过程不尾加空方,对整体盲文序列尾加空方。比如非汉字块“H9”,先通过转换分别得到H和9的盲文序列“11”和“”,最后通过合并尾加空方得到“111111”。

3.6 汉盲翻译算法测试结果

为了测试本章节所实现的汉盲翻译算法的逻辑性和正确性,本文选取测试文32

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

本“国际盲人节是10月15日。”进行算法测试,该测试结果的示意图如图3.10所示,分词结果中包含单字、词语、非汉字三种典型类型。根据分词结果的类型分别按照本文汉盲翻译算法对它们逐个进行相应的汉盲转换,每次汉盲转换的结果如图中所示,结合相应的盲文对照库对翻译的盲文序列进行比对,比对结果证明该转换结果没有错误。测试结果中除了标点符号没有尾加空方,其他字串都尾加了空方,尾加空方的情况也都符合算法实现规则。最后对所有盲文点序块进行合并得到最终的汉盲翻译结果如图中所示。

国际盲人节是10月15日。分词结果国际盲人节是10月15日。guo jimang ren jieshiyueriguo jimangrenjie1汉盲翻译结果11111111

图3.10 汉盲翻译测试结果示意图

3.7 本章小结

本章节基于逆向最大匹配的分词算法对汉盲翻译算法进行了具体的设计和33

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

实现,并且有针对性的选取测试文本对该算法的翻译性能进行了测试。

根据本章节汉盲翻译的实现流程可知汉盲翻译的准确率与中文分词的准确与否密切相关,为了提高翻译准确率,中文分词的结果应尽量满足盲文的分词连写规则。本文中文分词采用广泛使用的词典匹配法,其分词结果的校准可以有很大的灵活性,因而可以不需要对冗杂的分词连写规则进行多知识分析就能得到不错的转换效果。

34

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

第四章 盲文学习机系统的设计和开发

4.1 盲文学习机功能需求分析

盲文学习机面向广大盲人用户具有特定的功能需求,对盲文学习机的功能需求进行分析是有一定必要的。依据前两章节中嵌入式文件系统以及汉盲翻译实现方法的可行性,本文基于盲文触点的驱动功能模块对盲文学习内容进行丰富并对盲文阅读体验进行提升。

根据市面上各种阅读设备包括盲用阅读设备[34-36]功能上所具有的一些共性了解到,为了让盲文学习机具有实际的应用价值,盲文学习机中的学习资源必须是可灵活选择的并且是可方便更新的,同时,对于盲文学习机当前所处的状态,必须予以实时的语音提示。针对这样的功能需求,本文盲文学习机系统中需要包括外部数据存取模块、语音播报模块以及按键模块。此外,为了便于明眼人辅助盲人阅读使用,也为了在盲文学习机设计开发中进行可视化测试,盲文学习机系统中还应包括交互界面的显示模块。

本文设计的盲文学习机基于STM32主控芯片的主要功能模块为盲文触点驱动模块、SD卡存取模块、TFTLCD显示模块、语音播报模块和按键驱动模块。根据盲人学习需求,盲文学习机最终所呈现的交互界面流程框图如图4.1所示。图中所有箭头指向为相应功能按键所呈现的跳转选择指向,通过按键操作,可以分别完成一级、二级、三级目录内部的文本选择以及三级目录之间的跳转,最终又通过相应按键将所选内容显示在盲文触摸板上。

35

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

拼音盲文基础学习数字标符诗词1唐诗宋词...盲文诗词n触摸板章节标题1小说1显示

小说阅读......一级目录小说n章节标题n二级目录三级目录

图4.1 交互界面流程框图

4.2 盲文学习机系统主要功能模块设计

4.2.1盲文触点驱动模块设计

盲文触点是盲文学习机将盲文信息传递给盲人的重要传输介质,盲文学习机通过盲文触点的升降显示出相应的盲符。盲文触点驱动模块设计包括盲文触点驱动装置和盲文触点驱动控制电路的设计,根据盲文相关标准尺寸设计出适合盲人摸读的驱动装置,并根据驱动装置的机械结构设计出相应的驱动电路是本小结的设计目标。

综合考虑性能和成本问题[37],本文设计的盲文触点驱动装置采用电磁式通电线圈的驱动机制,通过铁芯线圈在通电状态下产生的电磁吸力来触发连接触点的顶针,从而驱动触点上升。该驱动机制的整体结构图如图4.2(1)所示,所用顶针包括单臂式底座,铁芯线圈位于底座边缘处凸面的上方,顶针与铁芯处于自然分离状态,当线圈通电,由铁芯线圈产生的电磁吸力牵引顶针凸面与铁芯贴合,36

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

顶针整体产生向上的位移,从而驱动盲文触点上升。本文设计的盲文学习机有120个盲文触点,一次显示20方盲文字符。这些盲文触点的点位布局也都按照中国盲文的标准尺寸来设计,为克服盲文点密集驱动单元空间不足的问题,本文设计3层驱动板将120个驱动单元均分成上、中、下三层进行排放,对应的顶针上下长度也剪切为3种不同的尺寸。以单方为例,其三针式点位图如图4.2(2)所示,上层b1层对应盲文触点1、6点位,中间b2层对应盲文触点2、5点位,底层盲文触点b3层对应3、4点位。

(1)驱动机制结构图

(2)三针式点位图

图4.2 盲文触点驱动机制

基于以上3层盲文触点驱动单元的整体布局,本文设计了相应的PCB线路板为触点驱动线圈提供电源的输入输出端口。每层40个驱动线圈的线路板都采用相同的布线方式,其中b1层PCB线路图如图4.3所示,40个驱动线圈采用共阳极连接方式,为避免线路密集造成短路,将该层每方中对应1、6点位的线路分开采用双层布线方式,Vcc分两路电压分别传送给正反面的20个驱动线圈,线圈另一端分别连接20*2规格的排针作为控制端口。

37

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

图4.3 b1层PCB线路图

针对以上3层线路板的控制端口,本文采用Stm32f103ZET6的MCU设计出驱动线圈的控制电路板。该控制电路板需要对120个驱动线圈进行单独控制,考虑到MCU提供不了这么多I/O口,本文采用74HC573锁存器对MCU的I/O口进行扩展。74HC573锁存器是一种拥有8路3态输出的非反转透明锁存器,属于硅栅CMOS高性能器件。该锁存器的功能引脚包括8个D输入引脚,8个Q输出引脚以及输出使能端和锁存使能端LE。其相应的功能真值表如表4.1所示,输出使能端低电平有效,在输出使能状态下,锁存使能端为高电平时,输入输出数据保持一致,反之则使输出数据进入锁存状态,即使输入数据消失,输出数据依然保持原来的Q值。因此,根据锁存器锁存特性可以使用15个锁存器将MCU的8个I/O端口扩展为120(15*8)个独立的I/O端口。

表4.1 74HC573功能真值表

Input

(output enable)

L

L

L

H

Output

LE

(latch enable )

H

H

L

X

D

H

L

X

X

Q

H

L

Q0

Z

此外,由于线圈需要通以足够的电流才能驱动顶针上升,通过所需电流值的具体计算表明,MCU的独立I/O口所能提供的电流值根本无法满足盲文触点的驱动电流值。因此,需要使用合适的电流放大元器件辅助驱动,本文采用常规的线38

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

圈驱动元器件uln2803达林顿管,该驱动器拥有500mA/50V的驱动能力并且同锁存器一样有8路输出,满足以上控制电路要求。驱动电路原理图如图4.4所示,uln2803芯片的8个输入引脚分别与锁存器的每个输出一一对应,其8个输出引脚单独控制每个线圈的驱动。由于uln2803芯片反向输出的特性,当锁存器输出高电平对应uln2803输入高电平时,uln2803输出低电平,线圈导通,从而驱动盲文触点上升。

图4.4 驱动电路原理图

4.2.2 SD卡存取模块设计

SD卡具有安全可靠、存取速率高、实时性好等特点,本文选用SD卡作为盲文学习机的存储外设并设计出SD卡存储模块的驱动电路。SD卡支持的通信模式有SPI总线和SD总线这两种,两种模式的引脚使用情况如表4.2所示,SD总线模式中有4条数据线,而SPI总线通信模式较为简单只有一条数据输入接口,所以采用SD总线模式读写SD卡的效率要比SPI更加快速。本文采用的MCU具有SD卡接口因而选用SD总线模式。

39

浙江理工大学硕士学位论文 基于嵌入式文件系统的盲文学习机的设计和开发

表4.2 两种通信模式引脚对比

SD卡引

脚编号

1

2

3

4

5

6

7

8

9

SD总线模式

名称

DAT3

CMD

VSS1

VDD

CLK

VSS2

DAT0

DAT1

DAT2

描述

数据线3

命令/响应

电源地

电源

时钟线

电源地

数据线0

数据线1

数据线2

SPI总线模式

名称

CS

MOSI

VSS1

VDD

SCK

VSS2

MISO

/

/

描述

片选

数据输入

电源地

电源

时钟线

电源地

数据输出

/

/

SD卡与STM32芯片的接线图如图4.5所示,SD卡的数据传输引脚D0~3分别与MCU的SDIO_D0~3引脚相连,CMD命令引脚连接MCU的SDIO_CMD引脚,

CLK时钟引脚连接MCU的SDIO_CK引脚。从而形成SD卡存储模块的驱动电路。

图4.5 SD卡与STM32芯片的接线图

4.2.3 TFTLCD显示模块设计

在显示模块设计中,本文选取了2.8寸的TFTLCD彩屏作为显示模块的输出设备,以ILI9341作为驱动芯片,并采用MCU内部具备的FSMC接口对TFTLCD显示进行控制。TFTLCD自带2*17的排针与主控板驱动芯片相连接,ILI9341芯片的引脚图如图4.6所示,数据传输引脚 DB1~ DB8和DB10~DB17分别连接MCU40


发布者:admin,转转请注明出处:http://www.yc00.com/news/1705049792a1388685.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信