1 音标的提取和输入
系统设计首先考虑音标字库问题。windows自带的音标符号不全且不方便引入,而一些商用软件,如金山公司的kingsoft phonetic音标字体则包含了英式音标所需要的基本符号,可在开发中引入该字体。当然,要以合法方式获得。其方法是在装有金山词霸的系统中找到ksphonet.ttf,将其拷贝到开发系统中,安装此字体即可。开发时,将窗口缺省字体设置为kingsoft phonetic;最后,在程序发布安装过程中自动为目标机安装该字体。
由于无论是建立样例数据库还是系统运行时进行查询,都涉及到音标的录入,而通过键盘进行录入显然不方便。所以在程序窗口中设置一个音标输入面板,通过点击面板中的按钮来录入对应的音标;还应对面板中的按键排列做规划,例如,双元音按钮排列在一个区,方便录入,见图2。
2 样例数据库的设计
本电子词典系统利用ms access 2000建立了一个含500个单词左右的样例词库,并使用ms visual c++6.0作为前端工具,采用dao技术实现对样例数据库的访问。
虽然本词库的规模较小,但应当体现出词典在词语分布上的特点。所以,特根据《郎文英汉双解词典》做粗略统计,得出数据如表1所示。其中,x、z按所占比例算不足一词,均按一词计。
表1 单词选取分布表
| 首字母
|
所占百分比(%)
|
词库中单词数(个)
|
首字母
|
所占百分比(%)
|
词库中单词数(个)
|
| a
|
5.12
|
26
|
n
|
2.15
|
11
|
| b
|
6.07
|
30
|
o
|
2.09
|
10
|
| c
|
9.99
|
50
|
p
|
2.09
|
44
|
| d
|
5.69
|
28
|
q
|
0.44
|
2
|
| e
|
3.48
|
17
|
r
|
5.57
|
28
|
| f
|
5.63
|
28
|
s
|
11.70
|
59
|
| g
|
3.54
|
18
|
t
|
5.00
|
25
|
| h
|
3.92
|
20
|
u
|
1.58
|
8
|
| i
|
3.61
|
18
|
v
|
1.58
|
8
|
| j
|
0.76
|
4
|
w
|
3.61
|
18
|
| k
|
3.29
|
16
|
y
|
0.25
|
1
|
| m
|
5.12
|
26
|
z
|
0.13
|
1
|
数据库字段设计如下:
其中,yinbiao存放单词的音标,并作为主关键字;eword为英文单词;cword为单词的中文释义。
3 模糊查询处理
3.1 实时匹配的处理
系统可以以两种方式进行查询:按词查询和按音标查询。限于篇幅,本文只讨论后者。样例数据库中以音标字段作为主键,对于每一输入,系统都进行匹配,将相近的结果显示出来。例如,用户输入:a:则列表提示:art,arm,army,artist,article…等;若用户输入:a:t,则列表提示:art,artist,article…等。如用户的输入无法完全匹配,则从列表中选择第一个匹配作为查询结果或提示用户手动选择相近的词条。
3.2 重音的处理
英语中多音节单词都有各类重音,在音标中用重音符号标记。重音符号完全可以参加匹配查询,但考虑到查询复杂度和实用性,不将重音符号作为查询的一部分,即输入的重音符号在音询时经过预先处理过滤掉重音号。重音符号只用于建立样例数据库中的音词条目,以便在查询结果中正确地显示单词的完整音标。对于音标相同重音不同的单词,同时给出释义。

3.3 模糊查询处理
基于音标的模糊查询,类似于很多输入法提供的“南方模糊音”功能,即以用户潜在的由于音标读音相似产生的输入错误为基础,对无法直接匹配的输入进行相似的代换并对每一种代换进行查找。例如对于音标tr很容易与音标t∫混淆,因此对于可能出现的习惯上的错误对音标进行查询的等价类划分,本系统做了如下划分:

需要说明的是,这种划分只是来源于实际的经验,衡量任何一种划分成功与否必须通过音标的错误使用统计和用户的反馈来确定。对于正常查询无法查得的音标,用户可以有选择地应用以上的等价代码重新进行查找。但应用等价代换会非常显著地降低查询效率,因此必须对查询的规模进行限制,如最多开启三个等价集或者进行重新等价划分等。
另外对于比较长的音标输入,可以将音标输入的前一半或者1/3长度作为模糊查询的输入依据