Solução para conversão correta de BGL para StarDict

Iniciado por boladegude, 03 de Janeiro de 2014, 23:33

tópico anterior - próximo tópico

boladegude

Solution to correct BGL StarDict conversion
Convert .bgl to StarDict format

(language portuguese - to read use Google Translate in the web)

Ao final da conversão são gerados os arquivos
dicionario.dict.dz
dicionario.idx
dicionario.ifo
dicionario.syn

[ Editado 2014/01/28:
Conversão de dicionários .BGL para StarDict versão 2.
Agora substitui também as sequências ISO &#xhh...h,
não é mais necessário substituição manual dessas sequências.
]


====================================================
Conversão de dicionários .BGL como Aurélio, Houaiss, etc.,
e qualquer outro dicionário para o StarDict. E é compatível com StarDictEasy.
É o tutorial com os programas que faltavam para conversão de
dicionários .BGL ou .babylon para StarDict.
Todos os problemas de conversão são resolvidos.
Consiste de três filtros a serem utilizados com stardict-editor.
====================================================

StarDict e StarDictEasy são programas muito versáteis.
Por isso escrevi essas ferramentas para uma correta conversão de seus dicionários.
Com stardict-editor o arquivo .babylon é gerado com certos erros que são corrigidos aqui.

(Obs.:
Testado apenas no Ubuntu 12.04,
mas deve funcionar bem em outros sistemas Linux
pois os programas foram escritos em bash
)

(Obs.:
O programa de substituição replaceISO utiliza a página de código Europeu Ocidental CP1252.
Caso queira adaptar o programa replaceISO para sua página de código
veja uma extensa lista de outros caracteres uniconde
no link http://www.codetable.net/unicodecharacters?page=1
)

-------------------------
DOWNLOAD e INSTALAÇÃO:
-------------------------
Crie a pasta ~/bin se ainda não existir.
Dê reboot no computador.

[ Editado 2014/12/28 2h BRST:

Os links das versões anteriores do arquivo...
converting_BGL_StarDict.zip
http://www.divshare.com/download/24995940-86a
;
converting_BGL_StarDict_v.2.zip
http://www.divshare.com/download/25102599-2d1
;
converting_BGL_StarDict_v.3.zip
http://www.divshare.com/download/25585964-707
e
converting_BGL_StarDict_v.4.zip
http://www.divshare.com/download/26528606-916
... estão aqui apenas como referência.

Nova versão 5.:
Nas versões anteriores à versão 4 o programa no_rep_terms eliminava incorretamente termos repetidos mas com definições diferentes, o que foi resolvido na versão 4. Porém, na versão 4 ainda haviam ficado alguns 'termo/definição' repetidos que não eram eliminados...
Isso foi resolvido na versão 5, agora TODOS os 'termo/definição' repetidos idênticos são eliminados.
Para quem tinha as versões anteriores, recompile apenas seus dicionários com termos repetidos com essa nova versão 5, seguindo as instruções no post #7 logo abaixo.
Refaça o download, agora do arquivo converting_BGL_StarDict_v.5.zip do link
https://www.dropbox.com/s/v70l1n3mm53gou1/converting_BGL_StarDict_v.5.zip?dl=0
[ warning 2015/06/20: the divshare.com's site is passing for troubles, it may take some time for their servers to be up and running, follow the above link ]
http://www.divshare.com/download/26616516-39f
(the last link has been unavailable)
]

Descompacte o arquivo recém baixado e mova os arquivos para a pasta ~/bin
[ Editado 2014/12/28: substitua os arquivos da versão anterior
]

Abra o arquivo stardict_LEIA-me.txt na pasta ~/bin e siga as instruções detalhadamente.

DEU CERTO!
Mas se encontrar algum problema, poste aí :)

===================================
Uma amostra simples de uma definição antes e depois da correção:
===================================

(antes)
Citarsoeiras
<FONT COLOR="0066FF"> [De <I>soer</I>.]</FONT><BR><BR><B><FONT COLOR="FF0000">Substantivo feminino plural. </FONT></B><BR><BR><FONT COLOR="333399"><B>1.</B></FONT> <FONT COLOR="339933">Ant. </FONT>Usos, usanças, costumeiras. <FONT COLOR="993300">[Cf. <I>sueiras</I>, pl. de <I>sueira</I>.]</FONT>

(depois)
Citarsoeiras
[De soer.]

Substantivo feminino plural.

1. Ant. Usos, usanças, costumeiras. [Cf. sueiras, pl. de sueira.]


Conteúdo do arquivo converting_BGL_StarDict.zip:
stardict_LEIA-me.txt
tutorial.babylon.txt
removetags
no_rep_terms
replaceISO
[ Editado: 2014/01/28: (novo programa auxiliar)
show_rep_terms
]

Referências:
http://ubuntuforum-pt.org/index.php?topic=72328.0
http://zeribeiropena.wordpress.com/2011/03/21/dicionario-houaiss-e-babylon-no-kindle/
http://opensuse.lt/index.php?option=com_content&view=article&id=89:stardictgoldendict-odyn-krimas-su-stardict-editor&catid=20:programos&Itemid=2
(e mais alguns que não lembro)
Become an Ubuntu user. Don't just use it as a virtual machine.
If you have some space in your HD then dual boot it with Windows or Mac.
It's a fine system. You shall be willing to study a little, but is worth your effort.

boladegude

#1
Olá,

Há uma nova versão do conversor de arquivos .BGL para StarDict no post inicial.
Releia o post inicial e siga as novas instruções nos trechos onde diz [ Editado ] em azul.

Na nova versão 2 as sequências ISO &#xhh...h também são substituídas,
não é mais necessário substituição manual dessas sequências.

Foi incluído um programa auxiliar (show_rep_terms) para mostrar os termos repetidos num dicionário no formato .babylon se existirem.

As instruções do tutorial para correção do arquivo .babylon também foram melhoradas.
Become an Ubuntu user. Don't just use it as a virtual machine.
If you have some space in your HD then dual boot it with Windows or Mac.
It's a fine system. You shall be willing to study a little, but is worth your effort.

boladegude

Become an Ubuntu user. Don't just use it as a virtual machine.
If you have some space in your HD then dual boot it with Windows or Mac.
It's a fine system. You shall be willing to study a little, but is worth your effort.

boladegude

Olá,

Há outra nova versão do conversor de arquivos .BGL para StarDict no post inicial.
Releia o post inicial e siga as novas instruções nos trechos onde diz [ Editado ] em azul.

Na nova versão 3 o programa replaceISO está 65% mais rápido.
Foram também atualizadas, melhoradas e corrigidas algumas informações no tutorial.
Become an Ubuntu user. Don't just use it as a virtual machine.
If you have some space in your HD then dual boot it with Windows or Mac.
It's a fine system. You shall be willing to study a little, but is worth your effort.

boladegude

#4
Para colocar seus dicionários gerados por esse conversor BGL/Stardict a funcionar no Colordict do Android faça o seguinte:
1)
Crie uma pasta e copie para ela todos os seus dicionários no formato stardict (dict.dz, ifo, etc.)
2)
Entre nessa pasta pelo terminal do Linux
3)
Digite:
dictzip -d *.dict.dz
(assim os arquivos .dict.dz serão convertidos para .dict)
4)
Copie todos os arquivos para a pasta dictdata do Colordict no Android.
Become an Ubuntu user. Don't just use it as a virtual machine.
If you have some space in your HD then dual boot it with Windows or Mac.
It's a fine system. You shall be willing to study a little, but is worth your effort.

boladegude

#5
O passo 5 do tutorial.babylon.txt com o programa replaceISO exige bastante processador e deixa a máquina lenta.
Caso necessite realizar algum processamento enquanto está realizando esse passo, por favor realize os seguintes comandos para pausar e depois reiniciar o programa replaceISO:
ctrl+alt+t
killall -STOP replaceISO
killall -CONT replaceISO
Become an Ubuntu user. Don't just use it as a virtual machine.
If you have some space in your HD then dual boot it with Windows or Mac.
It's a fine system. You shall be willing to study a little, but is worth your effort.

boladegude

BUG:
2014/12/07
ATUALIZAÇÃO OBRIGATÓRIA!

[
IMPORTANTE, este post precisa ser lido por TODOS os usuários do conversor BGL/Stardict:

Este bug ocorre apenas na versão 3 e anteriores do conversor, ou seja, antes de 2014/12/07.
Quem tem estas versões deve atualizar o conversor para a versão 4 do conversor e seguir as instruções aqui descritas.

Para quem instalou a versão 4 do conversor, a partir do dia 2014/12/07 às 5 horas BRST, apenas e obrigatoriamente leia este post como informação do que foi corrigido.
]

Nas versões anteriores à versão 4 há um pequeno erro lógico no programa no_rep_terms que faz com que termos repetidos, mas com definições diferentes, sejam eliminados.
Isso não deveria estar ocorrendo.

Um exemplo desse problema que ocorre é a palavra cimeira no dicionário Aurélio que tem 3 definições diferentes.

( Informação técnica: O bug ocorreu na linha 161, coluna 32 do programa no_rep_terms, da versão 3, simplesmente por eu ter colocado um AND lógico ao invés de um OU lógico.
Em bash isso significa que coloquei um -a ao invés de um -o. )

=================================
Para corrigir o problema há outra nova versão do conversor de arquivos .BGL para StarDict no post inicial (versão 4).
Releia o post inicial e siga as novas instruções nos trechos onde diz [ Editado ] em azul.
=================================

[ Procedimento obrigatório para quem tinha a versão 3 ou anterior: ]

Após você ter extraído a nova versão 4 na pasta ~/bin, recompile qualquer dicionário seu que por ventura tivesse termos repetidos, o que particularmente é o caso do dicionário Aurélio.
Os dicionários que não tinham termos repetidos não precisam ser recompilados!

Para realizar isso, refaça (agora com a versão 4) todos os passos do tutorial.babylon.txt que acompanha o conversor BGL/Stardict, mas APENAS para dicionários que contenham termos repetidos.
Para saber se um dicionário contém termos repetidos conclua até o passo 3 do tutorial.
Aí digite o seguinte comando:
show_rep_terms 2.babylon > repeated_terms.txt
Somente prossiga para o passo 4 até o final do tutorial se forem mostrados termos repetidos em repeated_terms.txt, e ao concluir copie os arquivos...

dicionario.dict.dz
dicionario.idx
dicionario.ifo
dicionario.syn

... para a pasta indicada no tutorial.

Pronto, não haverá mais definições diferentes incorretamente eliminadas!

Para verificar o que é explicado sobre as palavras a seguir utilize StarDict ou ColorDict pois StarDictEasy mostra apenas a primeira definição encontrada (é uma limitação do sdcv).

Observe que os casos simples de repetições de termo/definição foram todos resolvidos, como por exemplo a palavra autocarro no dicionário Aurélio.

Porém, um segundo problema que continua ocorrendo com alguns termos repetidos é a repetição posterior de cada um dos termos.
Como por exemplo, você poderá observar esse problema na mesma palavra citada acima, cimeira, no dicionário Aurélio onde, após três definições diferentes, as mesmas três definições são repetidas posteriormente.

Para resolver esse problema mais complicado, preciso amadurecer um pouco o algorítimo no_rep_terms o que pretendo fazer tão logo eu possa.

Após eu realizar essa correção na versão 5 no futuro será necessário recompilar os dicionários com termos repetidos mais uma vez.

Não se aborreça, e observe que as versões do dicionário Aurélio e outras distribuídas por aí, para o Colordict e afins, contém todas as repetições de termos referidas aqui, mesmo as mais simples...

Basta digitar as palavras citadas acima, autocarro e cimeira, na versão do Aurélio disponibilizada para Colordict na web para observar o problema.

Me deparo momentaneamente com problemas de saúde que dificultam a minha manutenção e atualização dos softwares que publico. Solicito a paciência e a compreensão de todos.

Mas observem que, com a correção desse bug, já há um avanço notável na compilação dos dicionários BGL mesmo na fase atual do conversor:
De 60.410 termo/definição repetidos no dicionário Aurélio, restam, por enquanto, após a recompilação da versão 4, algo em torno de umas 4.000 repetições.
Espero que na versão 5 todas as redundâncias estejam resolvidas.

( Apenas como informação:
Foram corrigidos outros dois bugs do conversor:
Esses bugs eram cosméticos pois apenas afetavam a indicação correta das linhas com problemas no arquivo original.
Nos programas no_rep_terms e show_rep_terms a contagem das linhas dos arquivos .babylon originais continha erros.
Agora esses programas indicam as linhas corretas do arquivo original quando necessário.
Os bugs corrigidos nesses dois programas não afetavam a correção do dicionário final nas versões anteriores.
)

Abraço,
Boladegude.
Become an Ubuntu user. Don't just use it as a virtual machine.
If you have some space in your HD then dual boot it with Windows or Mac.
It's a fine system. You shall be willing to study a little, but is worth your effort.

boladegude

Nova versão 5.
2014/12/28
ATUALIZAÇÃO OBRIGATÓRIA!


Agora TODOS os 'termo/definição' idênticos repetidos são removidos.
Todas as redundâncias foram eliminadas.

[
IMPORTANTE, este post precisa ser lido por TODOS os usuários do conversor BGL/Stardict:

Para quem tinha uma versão anterior, deve atualizar para versão 5 e seguir as instruções aqui descritas.

Para quem instalou a versão 5 do conversor, a partir do dia 2014/12/28 às 2 horas BRST, apenas e obrigatoriamente leia este post como informação do que foi corrigido.
]

Na versão 5 TODOS os 'termo/definição' repetidos são removidos na conversão do dicionário.
Ou seja, quando ambos o termo e a definição são repetidos eles são eliminados.

Por exemplo, o problema da repetição posterior dos termos, que era o caso da palavra cimeira no dicionário Aurélio, foi corrigido. Após recompilar seu dicionário verifique que os termos não são mais repetidos nem nessa palavra e nem nas demais...
O que é um problema que continua ocorrendo nas outras versões do dicionário Aurélio para ColorDict disponibilizadas na web.

E as repetições simples como autocarro no mesmo dicionário também são resolvidas.


=================================
Para eliminação completa de todos os 'termo/definição' repetidos há outra nova versão do conversor de arquivos .BGL para StarDict no post inicial (versão 5).
Releia o post inicial e siga as novas instruções nos trechos onde diz [ Editado ] em azul.
=================================

[ Procedimento obrigatório para quem tinha a versão 4 ou anterior: ]

Após você ter extraído a nova versão 5 na pasta ~/bin, recompile qualquer dicionário seu que por ventura tivesse termos repetidos, o que particularmente é o caso do dicionário Aurélio.
Os dicionários que não tinham termos repetidos não precisam ser recompilados!

Para realizar isso, refaça (agora com a versão 5) todos os passos do tutorial.babylon.txt que acompanha o conversor BGL/Stardict, mas APENAS para dicionários que contenham termos repetidos.
Para saber se um dicionário contém termos repetidos conclua até o passo 3 do tutorial.
Aí digite o seguinte comando:
show_rep_terms 2.babylon > repeated_terms.txt
Somente prossiga para o passo 4 até o final do tutorial se forem mostrados termos repetidos em repeated_terms.txt, e ao concluir copie os arquivos...

dicionario.dict.dz
dicionario.idx
dicionario.ifo
dicionario.syn

... para a pasta indicada no tutorial.

Pronto, não haverá mais nenhum 'termo/definição' idêntico repetido no dicionário!
Become an Ubuntu user. Don't just use it as a virtual machine.
If you have some space in your HD then dual boot it with Windows or Mac.
It's a fine system. You shall be willing to study a little, but is worth your effort.