多语言语言建模工具包
项目描述
langdist是一个用于试验字符级多语言语言建模的 Python 项目,该项目旨在了解学习一种语言的字符级语言模型如何有助于学习另一种语言的另一种字符级语言模型。该项目仍在开发中,可以提供有限的功能。
特征
下载和预处理多语言并行语料库([Multilingual Bible Parallel Corpus]( http://christos-c.com/bible/ ))
训练单语语言模型 - 这是用一种语言训练的语言模型
训练双语语言模型 - 这是在另一种语言模型之上训练的语言模型(参数使用另一种语言模型的参数进行初始化)
使用经过训练的语言模型生成文本
安装
此存储库可以在 Ubuntu 14.04 LTS 和 Mac OSX 10.x 上运行(未在其他操作系统上测试)
仅在 Python 3.5 上测试
langdist依赖于 [NumPy 和 Scipy]( https://www.scipy.org/install.html ),用于科学计算的 Python 包。您可能需要在安装langdist之前安装它们。
您可以通过以下方式安装langdist:
`pip install langdist`
这会将langdist包以及langdist命令安装到您的 Python 中,并将其添加到您的PATH中。
langdist也依赖于tensorflow包。默认情况下,它会尝试安装仅 CPU 版本的tensorflow。如果要使用 GPU,则需要自行安装支持 GPU 的tensorflow。(参见 [安装 Tensorflow]( https://www.tensorflow.org/install/ ))
用法
安装后,langdist –help将打印如何使用langdist命令的帮助。
### 1. 下载并预处理语料库
langdist实现了一个命令来从[多语言圣经平行语料库]( http://christos-c.com/bible/ ) 下载和预处理语料库。以下命令将下载英文语料库并将其保存到./en_corpus.pkl。
`langdist下载圣经en_corpus.pkl`
注意这里的en是英文的语言代码。指定无效的语言代码将引发显示有效语言代码的错误消息。
### 2. 为语料库中使用的字符安装编码器
在训练语言模型之前,您需要为语料库中使用的字符安装编码器。请注意,当您在另一种语言模型(多语言语言模型)之上训练新语言模型时,将使用相同的编码器。因此,您需要为您将训练多语言语言模型的所有语料库安装一个编码器。
以下命令将使编码器适合英语、法语和日语语料库,并将其保存到./en_fr_ja_encoder.pkl:
`langdist fit-encoder en_fr_ja_encoder.pkl en_corpus.pkl fr_corpus.pkl ja_corpus.pkl`
注意xx_corpus.pkl是一个语料库的pickle文件,可以通过langdist download-bible命令生成。您也可以自己创建文本列表并将其保存到 pickle 文件中。(根据您的目的,列表中的每个元素都对应一个段,例如句子、段落、文章等。)
### 3. 从头开始训练一个语言模型(单语语言模型)
以下命令将训练法语模型并将其保存到./fr_model目录:
`langdist train fr_corpus.pkl en_fr_ja_encoder.pkl fr_model --patience=819200 --logpath=fr.log`
请注意,使用不适合语料库的编码器会引发异常。–patience选项指定要保持训练的迭代次数,–logpath选项指定记录训练进度的日志文件的路径(如果不指定该选项,则不会创建日志文件)。
在训练期间,各种统计信息被转储到path_to_model_dir/tensorboard.log目录。您可以通过tensorboard –logdir=path_to_model_dir/tensorboard.log使用tensorboard可视化它们。该模型每次计算验证困惑度后都会保存,并且在完成训练之前可以使用。
检查langdist –help的输出以了解可用于训练语言模型的其他选项。
### 4. 在另一种语言模型(多语言语言模型)上训练一个新的语言模型
以下命令将在我们训练的法语模型之上训练一个英语模型并将其保存到fr2en_model目录:
`langdist retrain fr_model en_corpus.pkl fr2en_model --patience=819200 --logpath=langdist.log`
请注意,您不必指定编码器的路径,因为fr_model中的模型包含它。如果训练fr_model时使用的编码器不适合 en_corpus.pkl 中的字符,则会引发异常。
在训练期间,各种统计信息被转储到path_to_model_dir/tensorboard.log目录。您可以通过tensorboard –logdir=path_to_model_dir/tensorboard.log使用tensorboard可视化它们。该模型每次计算验证困惑度后都会保存,并且在完成训练之前可以使用。
检查langdist –help的输出以了解可用于训练语言模型的其他选项。
### 5. 使用经过训练的语言模型生成文本
训练语言模型后,以下命令将使用训练后的语言模型生成文本:
`langdist 生成 fr2en_model --sample-num=50`
--sample-num选项决定要生成的文本数量。请注意,每个文本都是由语言模型独立生成(采样)的。
检查langdist –help的输出以了解可用于训练语言模型的其他选项。
### 使用Python中的langdist
通过导入langdist包,可以将langdist用作普通的 Python 包,该包通过pip install langdist安装到您的 Python 环境中。阅读langdist/cli.py是了解如何使用该包的好方法。
TODO:添加博客文章双语字符级神经语言建模的链接