据我了解,PC和智能手机上最有用的程序之一就是电子词典。 在古代,当我学习一门外语时,我不得不在纸质词典中寻找每个单词。 我做了数百次微不足道的操作,而且我不得不一次又一次地观看一些恶意的单词,因为我有时间忘记它们的含义。 多么侮辱! 无论是现在还是现在,都可以在监视器屏幕上快速移动并翻译。 搜索历史,以防搜索词没有从短期记忆域移到长期记忆域。

让我们自己为StarDict / GoldenDict程序创建一个电子词典。 为此,您可能需要很多或几个工时,具体取决于原始材料的质量。
第一步:OCR
与登山相反,数字化词典中最困难的步骤不是最后一步,而是第一步。 如果您必须运行纸质词典的OCR,且褪色的页面打印得过于精细,粗心使用各种人工制品或使用外来语言,那么即使FineReader也无济于事。 在某些页面上,手动键入和带错误校正的OCR之间的时间长度差异可以忽略不计。
我建议您将所有内容保存在简单的文本文件中,因为对于二进制文件而言 ,使用文本数组进行高级搜索和纠错,标记,排序转换以及其他操作是不可想象的 。
在此步骤中,重要的是确定字典条目的结构。 在最简单的情况下,将只有两个字段: 键和值 。 这足够了,但是如果您需要突出显示文章的各种元素,那么您将需要以某种方式标记所有这些元素。
现在该讨论格式了。 电子词典有多种格式,下面是它们的列表。
我们不会在这里分析所有格式,因为大多数格式都是专有的。 我们对开放标准和开放源代码软件感兴趣。
切块
如今,在网络TCP / IP协议自由增加和增加的时代里出现的考古问题才引起人们的注意。 这是使用RFC 2229中定义的TCP端口2628的客户端服务器协议。
字典的源文件格式如下。
::
例如这样的字典
:catalysis: "increase in the rate of a chemical reaction due to the participation of an additional substance called a catalyst, which is not consumed in the catalyzed reaction and can continue to act repeatedly. " <a href="is.gd/v6a22Q">ref</a>. :deconstruction: :rendered: eg. "rendered irrelevant." :reading: cf. 'reading of' :minor: a minor reading.
字典的完成文件由dictfmt
命令创建。
dictfmt --utf8 -s " " -j dict-name < mydict.txt
结果,形成了两个文件: dict-name.index
和dict-name.dict
。 其中,第一个显然是索引文件,您无需对其进行任何操作,第二个可以使用dictzip
命令压缩。 此命令使用gzip
实用程序压缩* .dict文件。 问题立刻出现:为什么要有常规的gzip
呢?
事实是dictzip
在存档文件的标题中使用了额外的字节,以提供对该文件的伪随机访问。
最后,将文件放置在配置文件目录中, /usr/lib/dict
,我们重新启动了dictd
服务,瞧。 搜索语法很简单,只需键入
字典字。
在dictd链接上慢跑就像是90年代互联网网络上的一个野生动物园,还活着,而且还在踢!
Sdict
在微软尚未改变Linux和开放源代码社区以及ABBYY Lingvo盗版者是词典的主要来源的时候, Alexei Semenov做出了大胆的尝试,借助Perl魔术来使世界变得更好。
源词典文件的标题。
<header> title = Sample 1 test dictionary - dictionary name; copyright = GNU Public License - copyright information; version = 0.1 - version; w_lang = en - language for words; a_lang = fi - language for articles. For further information about language codes refer 'C:\Sdict\share\doc\iso639.htm' file; # charset = ... - use if your source file is not in UTF-8 encoding. </header>
正文的格式如下:
word___article
您可以下载适用于Symbian OS的版本。 该项目不再有效,甚至字典本身也只能从Time Machine中学习 。
Xdxf
嗯,所有事情,我们都与考古联系在一起,并转向适用于使用IRL的字典格式和程序。
XDXF具有XML格式的所有优点和缺点。 所有格式语法和示例都可以在此处查看。
字典文件的框架如下所示,由两部分组成: meta_info
和lexicon
。
<xdxf ...> <meta_info> : , . </meta_info> <lexicon> <ar> 1</ar> <ar> 2</ar> <ar> 3</ar> <ar> 4</ar> ... </lexicon> </xdxf>
有大量这种格式的词典。 该格式的最大优点是无需进一步转换任何内容。 GoldenDict可以识别XDXF文件以及许多其他受支持的格式。
TSV / StarDict
StarDict及其复制品与电子词典格式无关,而与用于查看,转换和创建它们的高质量软件有关。
要使用StarDict创建电子词典, TSV文件就足够了,我选择了该文件作为亚美尼亚语-俄语词典的数字副本。
但是,可以对字典文件进行一些格式化和标记,但是不能与XDXF
进行比较。
a 1\n2\n3 b 4\\5\n6 c 789
在将文章分为段落的情况下,格式定义换行符\n
。
第二步:调整
第一步之后,很可能会有数十甚至数百个拼写,语法和各种其他错误,奇怪的字符以及其他OCR伪像。
词典的特殊之处在于,同时需要两种语言的拼写。 即使在现在的2018年,令人惊讶的是很少有文本编辑器甚至办公套件能够执行此简单操作。
不适合使用,我建议将Teska加工成Vim来生产。 如果您喜欢的文字编辑器做的还不错,那就很好。 有了Vim,一个团队就足够了。
:setlocal spell spelllang=en,ru
检查两个字典的拼写,在本例中为俄语和英语。 以下是耙的列表。
- 文本排序无论如何都适用于非拉丁语言环境,特别是在写字母需要多个字符的情况下,例如亚美尼亚语
ու = ո + ւ
,这尤其糟糕。 在这种情况下,有必要使用简单的Perl或其他脚本自己对单词列表进行排序。 - 即使文本本身和控制台在UTF-8中,模式匹配也可能在某些语言环境中无法正常工作。
- 在数字化印刷字典时,不仅要准备数字化错误,还要准备印刷字典本身的错误。 它们可能包含很多!
- 如果文章标题用大写字母书写,则在数字化时也许应该将其转换为小写。 并非所有字母都具有大写字母;实际上,并非所有语言环境都具有大写字母。
第三步:词典编译
如前所述,对于XDXF
格式,不需要此步骤。 只需将文件放在/usr/share/goldendict
,程序即可在其中找到它。
对于TSV文件,使用StarDict工具包随附的stardict-editor
实用程序。

在输出中,程序将创建以下文件,例如古代Dict。
- 某某
- somedict.idx或somedict.idx.gz
- somedict.dict或somedict.dict.dz
- somedict.syn(可选)
文件复制到/ysr/share/stardict/dic
目录,仅此/ysr/share/stardict/dic
。
PS对于Android移动平台, GoldenDict突然成为付费用户,但是您仍然可以在Internet上找到最新的免费版本。