5个版本

0.1.4 2023年4月25日
0.1.3 2021年2月28日
0.1.2 2021年2月28日
0.1.1 2021年2月23日
0.1.0 2021年2月23日

编码类别下排名 872

自定义许可证

70KB
1.5K SLoC

namegen

这个库提供了高性能的随机名称生成,即使在较旧的计算机上也能在亚微秒内生成完整的名称。我的使用场景是一个网站,但我将它设计得足够通用,以至于它可以适应其他程序生成系统。

特性

  • serde支持,带有功能标志serde
  • wasm_bindgen支持。GitHub仓库有一个用于构建它的项目。

示例

格式

名称格式具有特殊语法。它们描述了如何从部分构建完整的名称。这些标记在花括号内,它们的含义如下。

  • {first_name}:生成名为 first_name 的部分。
  • {=stuff}:返回单词 "stuff"。
  • {first_name|=Unnamed}:一个 | 表示在项目之间随机选择。这里它将生成 first_name 部分或仅生成单词 Unnamed。
  • {:full_name}: 前缀表示一个格式。它只能引用之前添加的格式,这既是为了优化,也是为了避免无限递归。

以下是一些示例。

  • {first_name} {last_name}:带有空格分隔的引用名称部分。
  • {first}'{clan} {=vas|=nar} {ship}:第三个 {...} 是这两个中的任意一个。
  • {:full_name|:first_name}, the {title}: 第一个 {...}在这两种格式之间进行选择。

生成器

markov

使用二阶马尔可夫链生成名称。这不是一个简单的实现,但为了生成更忠实于真实名称的名称,已经做出了一些限制。

  • 开头、中间和结尾不被视为相同类型的节点,名称的长度在生成开始时选择。
  • 可以对它施加一个标记频率限制,以防止生成的名称中的标记出现频率高于任何样本。

cfgrammar

使用上下文无关文法生成名称,并有一些限制以保持符号频率在可接受范围内并处理那些讨厌的 y

  • 深度是固定的,因此结果规则分解成标记规则,然后获取标记。

wordlist

一个简单的词表生成器,适用于输出应为样本之一的场景。样本可以加权。

依赖关系

~0.5–1MB
~19K SLoC