Dictionary

從 DICT 格式的字典中獲取詞表

  • February 13, 2018

我想要一個用於研究/參考目的的拉丁單詞列表。(喜歡/usr/share/dict/words

似乎沒有這樣的單詞列表 ( apt-file search /usr/share/dict | sort | uniq | grep latin),但有一本 DICT 英語拉丁詞典:dict-freedict-eng-lat.

有沒有一種簡單的方法可以從中獲取單詞列表?

我嘗試了一些.dz使用的快速手動解析,sed但格式看起來很複雜,需要一點解析。我嘗試了該dictunformat命令,但是它生成了一個看起來是二進制格式的*c5 數據庫。*我找不到與此類文件互動的工具。

如果我沒記錯的話,.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

並享受與源打交道的樂趣……

  1. 從 XML-TEI 源 (lat-eng/lat-eng.tei) 獲取拉丁條目(或 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)
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;'

解壓縮文件,跳過所有包含*/pronounciation/的英文行,跳過帶有奇怪 DLE 字元的行,跳過所有標題行直到我們到達第一個真正的單詞“abecedarium”,刪除數字、點和空格,拆分由“;”分隔的共軛* 並將每個單詞添加到雜湊中以具有唯一條目。最後,列印所有以 $ 分隔的單詞,設置為換行符*\n*

樣本輸出:

ager
agere
agna
agnellina
agnina

引用自:https://unix.stackexchange.com/questions/351858