KenLM语言模型工具包
KenLM公司估计,过滤器,以及查询语言模型。由于本文中解释的流算法,估计速度快且可扩展
可伸缩的修正Kneser-Ney语言模型估计
肯尼思·希菲尔德伊万·波兹列夫斯基(Ivan Pouzyrevsky)、乔纳森·克拉克(Jonathan H.Clark)和菲利普·科恩(Philipp Koehn)。国际计算语言学协会2013年8月4日至9日,保加利亚索非亚。
[纸类][幻灯片] [BibTeX公司]
查询是快速低内存,如论文所示KenLM:更快、更小的语言模型查询
肯尼思·希菲尔德.EMNLP的WMT2011年7月30日至31日,英国苏格兰爱丁堡。
[纸类] [幻灯片][BibTeX公司]
用法
Moses、cdec、Joshua、Jane和Phrasal已经发布了KenLM并将其与解码器一起构建。请参阅他们的文档,了解在哪里可以找到程序。估计和筛选要求促进至少1.36.0和zlib。我还推荐tcmallocgperf工具、bzlib(读取.bz2文件)和xz-utils(读取.xz文件)。如果您的发行版有“devel”包,请安装这些包。有关更多帮助,请参阅依赖关系.按标准编制克马克
流程,我们建议为其单独构建目录:如果依赖关系太难,您只需要查询,请使用./compile_query_only.sh
这只取决于g++和bash。程序将位于垃圾桶/
.估算
使用改进的Kneser-Ney平滑算法(无需修剪)从文本中估计语言模型。它是在磁盘上完成的,可以构建更大的模型。bin/lmplz-o 5<文本>文本.arpa
请参阅上的页面估计了解更多信息。正在查询
二进制文件格式使加载速度更快。运行bin/build_binary文本.arpa文本.二进制
然后传球文本二进制
而不是文本.arpa
。请参阅数据结构有关选择数据结构的更多信息。构建二进制文件后,查询它:
- 摩西
- 在较新版本中,使用例如。
KENLM因子=0顺序=5路径=文件名.arpa
。在旧版本或遗留脚本中,使用语言模型8.
- cdec公司
- KenLM是唯一受支持的语言模型。
- 约书亚
- joshua.config中的lm行应该以开头
lm=肯姆
.
- 短语的
- 放置
肯姆:
在文件名之前。
- 克利亚
- 默认值。支持SRILM需要编辑源代码。
- 高FST
- 违约。还包括用于KenLM的OpenFST包装器。
- 命令行
bin/query text.binary<数据
- 蟒蛇
猫蟒蛇/example.py
并查看自述文件.
- 您的代码
- 下载源代码并阅读开发人员文档.
特征
“最好使用kenlm而不是srilm。”--菲利普·科恩
“语言行业最大的进步是增加了新的语言模型KenLM,它速度快、内存效率高,最重要的是,它允许在开源许可证下使用多核处理器。”--TAUS阿奇姆·鲁普
- 更快、更低的内存而不是SRILM和IRSTLM。
- On-disk估算使用用户特定的RAM。
- 用于时空权衡的两种数据结构。
- 使用mmap的二进制格式。或者直接加载ARPA文件。
- 如果您安装了适当的库,它还可以读取用gzip、bzip2或xz压缩的文本和ARPA文件。
- 线程安全。
- 假设重组的机会更多。如果模型后退,State只存储匹配的单词。FullScore函数还返回与模型匹配的n-gram的长度。
- 查询几乎没有依赖性:C++编译器和POSIX系统调用。过滤和估计是多线程的,因此它们依赖于Boost。
- 支持任何大于1的订单模型(订单>=7时需要重新编译)。
- 彻底的错误处理。例如,ARPA解析错误包括消息、有问题的字符串、字节偏移量和文件名。与IRSTLM进行比较。
- 正在加载进度条。
- 测验。这些取决于Boost。
- 查询支持包含<unk>标记的n-gram;这些都出现在使用受限词汇表构建的模型中。
- 许可许可证这意味着您可以与SRILM不同地进行分发。在你填之前没有表格要填下载.
支持的平台
在Linux上表现最佳。还支持Mac OS X、Cygwin和Windows。在x86、x86_64、ppc64和ARM上进行了测试。ARM端口由NICT提供。Windows用户
我不会在Windows上主动维护Visual Studio生成文件或测试。在上标记了适用于Windows的版本github。请参阅windows目录以获取基于Cong Duy Vu Hoang贡献的Visual Studio项目文件。在build_binary和ngram_query项目之前编译kenlm项目,最好使用x64发布模式。
Cygwin也能工作。然而,请注意,即使在64位Windows上,Cygwin也是32位的,所以您不应该期望Cygvin能够与超过2 GB的型号一起工作。
许可证
我的代码是LGPL,但也有其他来源的文件。请参阅许可证文件了解详细信息。困惑
不要混淆荷兰皇家航空公司或CMU-Cambridge统计语言建模工具包.Hieu Hoang给出了名字肯姆.
此实现是提到在我2010年1月发表的MT Marathon论文中,早期的源代码已经公开。融入摩西已公开宣布2010年10月18日。这些都早于伯克利LM论文2010年12月17日的提交截止日期以及2011年6月20日的公开发布。Adam Pauls在2011年5月进行的测试表明,KenLM的速度是4.49倍。他在论文和2011年6月20日的演讲中忽略了KenLM,声称SRILM是最快的方案。演讲后,他报告的4.49倍数字中发现了一个错误,但修正后的结果仍然表明KenLM更快;请参阅基准.