pynnlms
1.0.0
这是一个神经网络语言模型(NNLMS)工具包,该工具包支持馈送前向神经网络(FNN),复发性神经网络(RNN),长期短期内存(LSTM)RNN,双向RNN和BIDIRECTIONALLECTICTALLAL LSTM。具有多数隐藏图层的神经网络语言模型也可以使用此工具包构建,并且隐藏图层的体系结构可能不同。在此工具包中采用了一种基于类的方法,以加快神经网络语言模型的训练和运行。该工具包已使用C ++重写,可以在此处找到。
NNLM的配置参数如下:
| 姓名 | 描述 | 类型 | 必需的 | 默认 |
|---|---|---|---|---|
| AC_FUN 1 | 隐藏层的激活功能 | str | Tanh | |
| 阿尔法 | 学习率 | 漂浮 | 0.01 | |
| alpha_cut | 当改进小于minimun时,按这个比率截止学习率 | 漂浮 | 0.75 | |
| beta | 正则化参数 | 漂浮 | 1E-6 | |
| en_bias | 启用偏见条款 | 布尔 | 错误的 | |
| en_direct | 启用直接连接 | 布尔 | 错误的 | |
| file_type | 输入文件的类型,支持二进制文件和文本,二进制文件的“ b”和文本的“ t” | str | t | |
| gate_fun | LSTM RNN中门的激活功能 | str | 乙状结肠 | |
| gram_order | fnn的n-gram顺序 | int | 5 | |
| hidden_layers 2 | 隐藏层的名称和大小 | 列表 | √ | |
| input_unit 3 | 输入,支持单词或字符的单位,“ w” for Word和字符的“ C” | str | w | |
| 迭代4 | 最大迭代次数 | int | 50 | |
| min_improve 4 | 验证数据的熵改善率 | 漂浮 | 1.003 | |
| model_name | 指定语言模型的名称 | str | - | |
| output_path | 保存输出文件的路径 | str | √ | - |
| Random_seed | 随机发电机的种子 | int | 1 | |
| 句子_end | 标记句子的结尾 | str | < s> | |
| stone_start | 标记句子的开始 | str | ||
| test_files | 存储测试文件的路径 | str | √ | - |
| train_files | 存储培训文件的路径 | str | √ | - |
| Unknown_word | 标记未知词 | str | OOV | |
| 有效_Files | 存储验证文件的路径 | str | √ | - |
| vector_dim | 单词或字符的特征向量的维度 | int | 30 | |
| vocab_size 5 | 从训练数据中学到的词汇大小 | int | 10000 |
注意: 1。隐藏层的激活函数可能是tanh , sigmoid , hard_sigmoid , relu和gaussian 。
2。隐藏层可以是FNN , RNN , LSTM , BiRNN和BiLSTM的一个或几个,它们应作为包含每个层的名称及其大小的元组列表,例如[('rnn',30),('fnn',20)]。当只有一个隐藏层时,只有一个元组还可以。隐藏层的大小应彼此重合。
3。对于语言,例如英语,法语,其单词被空白的字符隔开,例如白空间,可以将INPUT_UNITE设置为'W'或'c'。其他语言,例如中文,仅INPUT_UNITE = 'C'确实有效。
4.培训将终止时,当达到最大迭代次数或验证数据的熵改进时,培训将终止两次。
5。如果从训练数据中学到的单词或字符数量超过了词汇的指定大小,则频率低的单词或字符不会添加到词汇中。相反,词汇量的大小将重置为学习单词的数量。
这些示例是在此工具包中给出的。有关此工具包中构建的Languagel模型的更多详细信息,请参考我的帖子。
根据MIT许可条款,该模块可作为开源。