【问题标题】:How to pick a random english word from a list [closed]如何从列表中选择一个随机的英文单词[关闭]
【发布时间】:2009-02-27 10:45:47
【问题描述】:

要获得一个返回随机英文单词(最好是名词)的函数,而不事先在文件中保存所有可能单词的列表,最好的方法是什么?

【问题讨论】:

  • 这不是一个明智的问题。您能否提供一些有关您正在尝试做的事情的额外背景或线索。在没有英文字典的情况下生成英文单词是一个逻辑矛盾。请澄清这一点。
  • 从任何旨在提供随机单词的在线资源中获取单词似乎是个好主意。 :-)
  • @joshhunt:什么是“大规模”?英语拼写检查词典大约有 400K。请参阅aspell.net 了解一个好的。

标签: python random word-list


【解决方案1】:

单词列表不需要占用那么多空间。

这是JSON wordlist with 2,465 words, all nouns。它的时钟频率低于 50K,相当于中型 jpeg 图像的大小。

我将随机选择一个作为练习供读者参考。

【讨论】:

  • 这确实是最好的选择。您可以轻松地将整个列表保存在内存中,并且您可以完全控制源 - 没有意外更改、没有连接问题、没有安全问题,并且总体上应该更容易实现。
  • 而且您甚至不需要将其全部保存在内存中。
【解决方案2】:

你不能。没有生成有意义的词的算法。您只能生成听起来像英语的单词,但它们没有任何意义。

【讨论】:

  • 虽然三分熟,但你仍然可以收获一分。
【解决方案3】:

您可以让该函数尝试解析在线资源,例如:

http://www.zokutou.co.uk/randomword/

【讨论】:

  • 请修复损坏的链接
【解决方案4】:

另一种理论方法:您可以抓取random wikipedia article 页面并返回文章的第N 个单词。

【讨论】:

  • 这是个好主意,但您可能需要过滤掉日期和数字以及非英语单词。
  • 结果不会很随机——你会经常得到相同的几个词,以及各种其他问题。
  • @Whatsit 我猜你是对的。另一方面:des random 英文单词的真正含义是什么?如果你问某人一个随机词,那将是一个类似的统计分布
【解决方案5】:

只需使用 setgetgo 的随机词 api。它是免费的,很容易,而且很震撼。

http://randomword.setgetgo.com/

【讨论】:

  • 响应返回真实单词,但是并返回非真实单词
【解决方案6】:

有一个随机单词生成器here - 它不是英语,而是类似于英语,即单词与语言足够相似,用户可以阅读这些单词并将它们存储在短期记忆中。

源代码用 C# 编写,有点杂乱无章,但您可以在 Python 中使用类似的方法来生成大量单词,而无需存储大量列表。

或者,您可以直接在演示页面上调用 Web 服务 - 但它托管在 GoDaddy 上,因此不能保证它可以在生产中运行!

【讨论】:

    【解决方案7】:

    您可以从http://www.math.toronto.edu/jjchew/scrabble/lists/ 下载“SOWPODS 和 TWL 常用词”列表。我将这些文件中的所有单词放在一起,列表的重量约为 642k。以任何标准衡量都不算大。不过,这些列表确实包含很多晦涩难懂的词,因为它们是供比赛拼字游戏使用的。好消息是这些列表构成了英语语言的一个重要子集。

    【讨论】:

      【解决方案8】:

      嗯,你有三个选择:

      • 硬编码单词列表并用它初始化一个数组。
      • 从 Internet 位置而不是文件中获取列表。
      • 在文件中保留可能的单词列表。

      避免上述情况的唯一方法是,如果您不关心单词是否真实:您可以生成随机长度的字符串。 (如果没有字典列表,就无法以编程方式生成单词。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-21
        • 1970-01-01
        • 2015-01-26
        • 1970-01-01
        • 2016-12-24
        • 2012-04-30
        相关资源
        最近更新 更多