hunspell: adiciona palavras ao dicionário da linha de comando

4

De página do manual do hunspell :

...
    When in the -a mode, hunspell will also accept lines  of  single
    words  prefixed  with  any of '*', '&', '@', '+', '-', '~', '#',
    '!', '%', ''', or '^'.  A line starting with '*' tells  hunspell
    to  insert the word into the user's dictionary (similar to the I
    command).
...

Eu tentei algo como: echo "* my_word" | hunspell -a , mas a palavra não está no meu dicionário, pois o arquivo de amostra de análise mostra novamente como palavra incorreta

Como isso funciona, como posso adicionar palavras personalizadas?
Ou com o Aspell, ou qualquer programa "comum" que grava em dicionários compatíveis lidos pelo Hunspell / Aspell?

    
por zetah 10.04.2012 / 02:26

2 respostas

3

Acho que, em vez de (similar to the I command) , deve ser (similar to the A command) :

A

Accept the word for the rest of this hunspell session. 

Vamos verificar novamente a página man :

The -a option is intended to be used from other programs through a pipe.
In this mode, hunspell prints a one-line version identification message,
and then begins reading lines of input.

Então, quando em -a mode , hunspell session termina depois de ler e processar a última linha de entrada. Além disso,

When in the -a mode, hunspell will also accept lines of single words prefixed
with any of '*', '&', '@', '+', '-', '~', '#', '!', '%', ''', or '^'. A line
starting with '*' tells hunspell to insert the word into the user's dictionary
(similar to the I command)[........] A line prefixed with '#' will cause the
personal dictionary to be saved.

O prefixo de uma única linha de palavra com * (note que não deve haver espaço entre palavra e prefixo) adicionará essa palavra ao dicionário do usuário, mas somente à sessão hunspell atual, pois, de acordo com o man página, apenas uma linha prefixada com # fará com que o dicionário pessoal seja salvo (o arquivo em disco, isto é). Daí correr

echo "*goosfraba" | hunspell -a

não faz absolutamente nada. hunspell adiciona goosfraba ao dicionário para esta sessão e sai (sem outras linhas para processar). Você precisa adicionar uma segunda linha com prefixo # para salvar as palavras adicionadas recentemente:

echo -e "*goosfraba\n#" | hunspell -a

Vamos ver:

:: verificação ortográfica goosfraba :

echo -e "goosfraba" | hunspell -a
@(#) International Ispell Version 3.2.06 (but really Hunspell 1.3.2)
& goosfraba 1 0: goofball

& = Word não está no dicionário, existe um próximo erro: goofball .

:: adicionando o goosfraba ao dicionário e depois a verificação ortográfica durante a mesma hunspell session (duas linhas):

echo -e "*goosfraba\ngoosfraba" | hunspell -a
@(#) International Ispell Version 3.2.06 (but really Hunspell 1.3.2)
*

* = Word está no dicionário.

:: verificação ortográfica goosfraba novamente (nova hunspell sessão):

echo -e "goosfraba" | hunspell -a
@(#) International Ispell Version 3.2.06 (but really Hunspell 1.3.2)
& goosfraba 1 0: goofball

& = Novamente, word não está no dicionário (nada foi salvo durante a sessão anterior)

:: adicionando goosfraba ao dicionário e salvando durante o mesmo hunspell session (duas linhas):

echo -e "*goosfraba\n#" | hunspell -a
@(#) International Ispell Version 3.2.06 (but really Hunspell 1.3.2)

:: verificação ortográfica goosfraba novamente (nova hunspell sessão):

echo "goosfraba" | hunspell -a
@(#) International Ispell Version 3.2.06 (but really Hunspell 1.3.2)
*

* = Word está no dicionário.

    
por 19.06.2013 / 02:32
2

Descobri que a solução mais fácil é usar o Aspell e criar um arquivo personalizado na pasta pessoal, chamado . Aspell.lang.pws , com conteúdos como:

personal_ws-1.1 en 0
my_word

para o idioma "en", que parece ser uma ótima maneira de compartilhar "dicionário portátil", BTW

    
por 10.04.2012 / 04:31