#ngrams #lm #simple

n_gram

用于训练 n-gram 语言模型的简单库

11 个版本

0.1.12 2024年6月10日
0.1.11 2024年5月25日
0.1.9 2024年2月26日

#356文本处理

每月 42 次下载

MIT 许可协议

19KB
262

信息

用于训练 n-gram 语言模型的简单工具。灵感来源于 此课程

用法

use n_gram::*;

fn main() {
    // Initializing model
    let config = Config::default();
    let mut model = Model::new(config);

    // Loading and tokenizing corpus
    let corpus = tiny_corpus()
          .iter()
          .map(|t| sos(eos(tokenize(t.to_owned()))))
          .collect::<Vec<_>>();

    model.train(corpus);

    // Now you are ready to generate something
    let mut tokens = sos(tokenize("The quick".to_owned()));
    let max = 10; // max number of generated tokens
    model.generate(&mut tokens, max);

    // Save model
    model.save("model.json").unwrap();

    // Reset model
    model.reset();

    // Load model back
    model.load("model.json").unwrap();
}

示例

我在 Tiny Stories 数据集的 20000 个样本上训练了一个三元组模型。以下是生成的文本示例

  • "__sos__ 从前有个妈妈、一个爸爸、一个姐姐和一个小女孩在下面喊道,“看妈妈!一个会说话的云!”小女孩打开手,猴子高兴地一天之内全吃光了。她太善良了,他说好并给他看别的东西。“我用这个戳了你。这是一场风暴。波浪又高又宽,它似乎在召唤她最终结束。他们都有一只了不起的夜莺。比利很高兴并兴奋。__eos__”
  • "__sos__ 从前有个带篮子的光女孩。然后她把篮子送到洗衣机里。当所有的衣服都挂在晾衣绳上时,黛西和她的家人正在准备飞走它,它突然飞走了!狮子因为无礼而感到难过。他说,“我很高兴。记住原谅是很重要的。__eos__”
  • "__sos__ 从前有一家人住在一个有很多石头在地上流淌的小溪里,它在阳光下闪闪发光。从那天起,他们总是和她在一起,和她一起学习,向妈妈挥手告别。公交车司机很高兴地飞走了。蒂米为他们感到自豪。__eos__”

安装

cargo add n_gram

如果您想保存和加载模型

cargo add n_gram --features=saveload

如果您想加载用于训练的小型语料库

cargo add n_gram --features=corpus

链接

依赖项

~0.6–1.4MB
~31K SLoC