数字词典A到Z

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


Stardict


让我们自己为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.indexdict-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_infolexicon


 <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。


  1. 某某
  2. somedict.idx或somedict.idx.gz
  3. somedict.dict或somedict.dict.dz
  4. somedict.syn(可选)

文件复制到/ysr/share/stardict/dic目录,仅此/ysr/share/stardict/dic


PS对于Android移动平台, GoldenDict突然成为付费用户,但是您仍然可以在Internet上找到最新的免费版本。

Source: https://habr.com/ru/post/zh-CN421075/


All Articles