Obtendo uma lista de palavras de um dicionário formatado DICT

4

Eu quero uma lista de palavras latinas para fins de pesquisa / referência. (Como /usr/share/dict/words )

Parece não haver essa lista de palavras ( apt-file search /usr/share/dict | sort | uniq | grep latin ), mas há um dicionário latino inglês DICT: dict-freedict-eng-lat .

Existe uma maneira fácil de obter uma lista de palavras a partir disso?

Eu tentei uma análise manual rápida do .dz usando sed , mas o formato parece complicado o suficiente para que seja necessária uma pequena análise. Eu tentei o comando dictunformat , no entanto, ele produz um banco de dados c5 que parece ser um formato binário. Não consigo encontrar ferramentas para interagir com esses arquivos.

    
por Att Righ 16.03.2017 / 13:08

3 respostas

2

Se bem me lembro, .dz é uma variante do gzip que permite gunzip apenas os pedaços necessários. Experimente:

zcat dict-freedict-eng-lat.dz

A maioria dos ".dz" são gerados a partir de formatos mais compreensíveis (no caso o formato é TEI) usando freedict-tools.

ATUALIZAÇÃO: (eu gosto de soluções de hackers, mas) agora a maneira "não é tão hacker":

1) Se você quiser latim, obtenha as fontes do freedict Lat-Eng (o dicionário inverso):

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

2) descompacte:

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

e aproveite o prazer de lidar com as fontes ...

3) obter entrada em latim (orth xml tag) da fonte XML-TEI (lat-eng / lat-eng.tei):

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

Uma última sugestão: use o dicionário latino-alemão (mais completo)

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)
    
por 16.03.2017 / 20:44
4
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;'

para descomprimir arquivos, pular todas as linhas em inglês que contêm / pronouncia / , pular linhas com caracteres estranhos DLE, pular todas as linhas de cabeçalho até chegarmos à primeira palavra real "abecedarium" , remova números, pontos e espaços, divida as conjugações separadas por ";" e adicione cada palavra a um hash para ter entradas únicas. no final, imprime todas as palavras separadas por $, definido como nova linha \ n

exemplo de saída:

ager
agere
agna
agnellina
agnina
    
por 16.03.2017 / 21:39
-1

Eu escrevi um artigo sobre como copiar e converter os dicionários do Aspell para a lista de palavras e depois para o banco de dados MySQL / MariaDB:

link

    
por 13.02.2018 / 18:12

Tags