如何从电子词典数据库或文本文件中获取随机单词?

如何从电子词典数据库或文本文件中获取随机单词?

有没有办法随机的我从字典数据库dict-wn(例如 freedict 的软件包)中找到了单词?我正在寻找一种方法来做到这一点,方法是使用 bash 脚本或尝试使用命令工具(如果可用)。

答案1

如果单词表是每行一个单词的纯文本文件,则一个选项是命令,shuf例如

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

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.

答案2

我倾向于shuf从文件中提取行。我们还需要小心单词,因为这是一个制表符分隔的文件,而不仅仅是空格。

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

shuf这里需要 0.011 秒。sort -R(即使没有awk)需要 2.427 秒。这是因为 shuf 只是在文件中查找n排序读取和处理每一行时的次数...在本例中是 147311 行。

答案3

获取随机单词的方法有很多种。示例:获取五个单词:

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

请参阅man sort了解选项的含义-R(提示:随机)。awk 表达式筛选前五条记录(行)并打印第一个字段(而不是其他列)。

相关内容