如何解析freedict文件(*.dict和*.index)

9
我在寻找免费的翻译词典。Freedict (freedict.org) 提供了我所需的内容,但我不知道如何解析 *.index 和 *.dict 文件。我也不知道应该搜索哪些关键词来获取有关这些格式的有用信息。
*.index 文件的格式如下:
00databasealphabet  QdGI    l
00databasedictfmt1121   B   b
00databaseinfo  c   5o
00databaseshort 6E  u
00databaseurl   6y  c
00databaseutf8  A   B
a   BHO M
a bad risc  BHa u
a bag of nerves BII 2
[...]

以及 *.dict 文件:

[Lot of info stuff]
German-English FreeDict Dictionary ver. 0.3.4
Pipi machen /piːpiːmaxən/
 to pee; to piss
(Aktien) zusammenlegen /aktsiːəntsuːzamənleːgən/
 to merge (with)
[...]

我很乐意看到一些示例项目(最好是用Python编写的,但Java、C、C++也可以),以了解如何处理这些文件。

请解释一下为什么会有踩票(downvote)? - DiKorsch
你有没有真正阅读你提供的链接页面中的任何信息? - ekhumoro
1
是的,但它并没有真正帮助到我... DICT 服务器对于我的任务来说有些过度了。我所需要的只是从文件中创建一种查找方式,以便我可以在两种语言之间翻译单词。 - DiKorsch
你的意思是,我应该使用TEI-XML文件来工作吗? - DiKorsch
2个回答

3

0

dictd认为其格式的.index和.dict[.dz]是私有的,以保留未来更改的权利。

如果您仍然想直接处理它,索引包含词头,.dict[.dz]则包含定义。它可选择使用特殊修改过的gzip算法进行压缩,提供几乎随机访问,而gzip通常没有这种功能。索引每行包含3列,以制表符分隔:

  1. 用于查找定义的词头。
  2. .dict[.dz]文件中定义的绝对字节位置,base64编码。
  3. 定义字节长度,base64编码。

有关详细信息,请参见您在提问之前应该找到的dict(8) man page数据库格式部分)。要正确处理词头,您必须考虑编码和字符排序。

最好使用现有库来读取dictd数据库。但这实际上取决于库是否好用(我没有经验)。

最后,正如您自己所指出的,XML 正是为了易于处理而设计的。您可以使用 XPath 提取单词和翻译,省略所有语法内容,无需麻烦地解析任何东西。

在完成这一步之后,下一个问题将是不同语言中的单词之间没有一对一的映射...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接