#markov-chain #name #syllable #generate #random #place #pronunciation

name-engine

一个基于发音生成随机名称的 Markov 链的 Rust 库

1 个不稳定版本

0.1.0 2024 年 2 月 20 日

887算法

MPL-2.0 许可证

33KB
277

name-engine

预览:生成英语地名 examples/england_evaluated.rs

placename-generation

name-engine 是一个基本的库,用于计算 Markov 链以基于发音生成名称。

这可以用于各种目的,但主要用于生成地名。

算法

此库从名称数据集计算 Markov 链。名称必须按照某些用户定义的规则分隔,例如音节。每个分隔的单元被视为 Markov 链的一个状态。

转移被定义为发音之间的连接。例如

  • ŋ -> wRingwood /ˈrɪŋwʊd/ [(Ring /ˈrɪŋ/) (wood /wʊd/)]

  • k -> əBeccles /ˈbɛkəlz/ [(Becc /ˈbɛk/) (les /əlz/)]

  • k -> əm -> sBerkhamsted /ˈbɜːrkəmstɛd/ [(Berk /ˈbɜːrk/) (ham /əm/) (sted /stɛd/)]

根据上述数据,模型可以通过跟踪转换 k -> ə,从 (Berk /ˈbɜːrk/)(les /əlz/) 生成 Berkles

转换的概率是根据数据集中连接的频率计算的。

特性

这个库可以

  • 从分词的名字数据集中创建名字生成器
  • 使用马尔可夫链生成名字。

这个库不能

  • 从文件中读取和解析数据。
  • 自动根据特定规则(如音节)将原始名字分开。您必须自行准备数据集。
  • 评估名字。如果您想生成更好的名字,您必须自行实现评估函数和过滤过程。
  • 组合其他参数。如果您想这样做,NameGenerator::generate_verbose 是有用的。

这个库只做生成名字所必需的最小处理。要创建更实用的名字生成器,还需要进行一些如上所述的额外处理。

文档

运行 cargo doc --open 查看文档。

如果您想试试,请查看 examples/ 中的示例。对于第一步,examples/japanese.rs 是适合阅读的。

安装

[dependencies]
name-engine = "0.1.0"

示例

生成100个北海道的地名

$ cargo run --example hokkaido
中富 nakatomi
初威冠 shoikappu
上沢 kamizawa

生成100个英格兰的地名

$ cargo run --example england
Stoneon /ˈstəʊnən/
Thatchingworth /ˈθætʃɪŋwɜːθ/
Brentgomley /ˈbrɛntɡʌmli/

生成100个英格兰的地名(提取更好的名字)

$ cargo run --example england_evaluated
Oltham Abbey /ˈoʊlθəm ˈæbi/
Downbury /ˈdaʊnbəri/
Farhead /ˈfɑːrhɛd/

生成100个美国的地名(提取更好的名字)

$ cargo run --example us_evaluated
Winfield /ˈwɪnfiːld/
Perton /ˈpɛrtən/
Kinbridge Falls /ˈkɪnbrɪdʒ fɔːlz/

关于示例中的英文和美国地名数据

对于英文和美国地名数据,为了获得更好的结果,添加了一些符号。

  • 空格被替换为 + 并被处理为独立的音节。
  • 对于带有大写字母的音节,在发音的开头添加一个星号 *,使其成为名字的第一个音节或 + 的下一个音节。
  • 对于 + 的上一个音节的发音,在发音的末尾添加一个星号 *,使其成为 + 的上一个音节。

示例

Tunbridge Wells /ˈtʌnbrɪdʒ ˈwɛlz/
(Tun, /*ˈtʌn/) (bridge, /brɪdʒ*/) (+, /+/) (Wells, /*ˈwɛlz/)
  • (Tun /ˈtʌn/) -> (Tun /*ˈtʌn/) [2]
  • (bridge /brɪdʒ/) -> (bridge /brɪdʒ*/) [3]
  • (+ /+/) [1]
  • (Wells /ˈwɛlz/) -> (Wells /*ˈwɛlz/) [2]

此外,一些后缀被视为独立的音节,例如 minsterbridge

数据源

examples/assets/hokkaido.csv:北海道政府公开数据 CC-BY4.0(https://creativecommons.org/licenses/by/4.0/deed.ja) 基于原始数据修改。

来源: https://www.pref.hokkaido.lg.jp/link/shichoson/aiueo.html

许可证

本项目采用 Mozilla Public License v2.0 许可。详情请参阅 LICENSE 文件。

依赖项

~280–740KB
~17K SLoC