从 DICT 格式的词典中获取单词列表

从 DICT 格式的词典中获取单词列表

我想要一个用于研究/参考目的的拉丁单词列表。 (喜欢/usr/share/dict/words

似乎没有这样的单词列表(apt-file search /usr/share/dict | sort | uniq | grep latin),但有一个 DICT 英语拉丁词典:dict-freedict-eng-lat

有没有一种简单的方法可以从中获取单词列表?

我尝试了一些快速的手动解析使用.dzsed但格式看起来足够复杂,需要一点解析。我尝试过dictunformat命令,但是它产生了c5数据库这看起来是二进制格式。我找不到与此类文件交互的工具。

答案1

zcat /usr/share/dictd/freedict-eng-lat.dict.dz | perl -e 'my %dict; $start=0; $/="\n"; while (<>) { next if $_ =~ m/(\/|\x90)/; chomp; $_ =~ s/[0-9\. ]*//g; $start = 1 if $_ eq 'abecedarium'; next if $start==0; @words=split(/\;/,$_); foreach my $word (@words) { $dict{$word}=1;} }; $,="\n"; print sort keys %dict;'

要解压缩文件,请跳过包含以下内容的所有英文行/发音/,跳过带有奇怪 DLE 字符的行,跳过所有标题行,直到到达第一个真正的单词“基础”,删除数字、点和空格,拆分用 分隔的词形变化“;”并将每个单词添加到哈希中以获得唯一的条目。最后,打印所有以 $ 分隔的单词,设置为换行符\n

示例输出:

ager
agere
agna
agnellina
agnina

答案2

如果我没记错的话,.dz这是 gzip 的一个变体,它允许仅压缩必要的块。尝试:

zcat dict-freedict-eng-lat.dz

大多数“.dz”是使用 freedict-tools 从更易于理解的格式(在格式为 TEI 的情况下)生成的。

更新:(我喜欢黑客解决方案,但是)现在“不那么黑客”的方式:

1)如果你想要拉丁语,请获取 freedict Lat-Eng(逆字典)的来源:

wget "https://sourceforge.net/projects/freedict/files/Latin%20-%20English/0.1.1/freedict-lat-eng-0.1.1.src.tar.bz2"

2)解压:

tar -xvjf freedict-lat-eng-0.1.1.src.tar.bz2

并享受与来源打交道的乐趣......

3) 从 XML-TEI 源 (lat-eng/lat-eng.tei) 获取拉丁语条目(orth xml 标签):

xidel -e "//orth" lat-eng/lat-eng.tei

最后一个建议:使用拉丁语-德语词典(更完整)

https://sourceforge.net/projects/freedict/files/Latin%20-%20German/0.4/freedict-lat-deu-0.4.src.tar.bz2
tar ...
xidel -e //orth lat-deu/lat-deu.tei |  sort -u | wc        (9730)

答案3

我写了一篇关于如何将 Aspell 字典转储和转换为单词列表,然后转换为可搜索的 MySQL/MariaDB 数据库的文章:

https://www.joe0.com/2018/02/13/how-to-dump-and-convert-aspell-dictionary-to-wordlist-or-searchable-mysql-mariadb-database/

相关内容