Dictionary
從 DICT 格式的字典中獲取詞表
我想要一個用於研究/參考目的的拉丁單詞列表。(喜歡
/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
並享受與源打交道的樂趣……
- 從 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