Como posso buscar palavras aleatórias de um banco de dados de dicionário eletrônico ou arquivo de texto?

4

Existe uma maneira de obter palavras aleatórias dos bancos de dados do dicionário, como os pacotes dict-wn ou do freedict? Estou procurando uma maneira de fazer isso usando um script bash ou tente uma ferramenta de comando, se disponível.

    
por precise 07.07.2014 / 18:07

3 respostas

11

Se a lista de palavras for um arquivo de texto simples com uma palavra por linha, uma opção será o comando shuf , por exemplo,

$ shuf -n5 /usr/share/dict/american-english
resuscitated
Lawson
concatenate
nonsmoker's
balmiest

Veja man shuf

SHUF(1)                          User Commands                         SHUF(1)

NAME
       shuf - generate random permutations

SYNOPSIS
       shuf [OPTION]... [FILE]
       shuf -e [OPTION]... [ARG]...
       shuf -i LO-HI [OPTION]...

DESCRIPTION
       Write a random permutation of the input lines to standard output.
    
por steeldriver 07.07.2014 / 18:29
5

Eu prefiro shuf para extrair linhas de um arquivo. Também precisamos ter cuidado com as palavras, porque é um arquivo delimitado por tabulações, não apenas espaço em branco.

$ shuf -n5 /usr/share/dictd/wn.index | cut -d$'\t' -f1
table game
parsi
tetraneuris grandiflora
synonymously
decimal digit

shuf leva 0,011s aqui. sort -R (mesmo sem o awk ) leva 2.427s. Isto é porque o shuf está apenas procurando através do arquivo n vezes enquanto a ordenação está lendo e processando cada linha ... Neste caso, são 147311 linhas.

    
por Oli 07.07.2014 / 18:34
1

Existem muitas maneiras de obter uma palavra aleatória. Exemplo para recuperar cinco palavras:

$ sort -R /usr/share/dictd/freedict-nld-eng.index | awk 'NR <= 5 { print  }'
verslappen
sport
libretto
golf
kerk

Veja man sort para o significado da opção -R (sugestão: Aleatório). A expressão awk filtra os cinco primeiros registros (linhas) e imprime o primeiro campo (não as outras colunas).

    
por Lekensteyn 07.07.2014 / 18:17