热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

srilm的安装与使用(标贝科技)

一、简介简单且概括的来说,SRILM是一个构建和应用统计语言模型的开源工具包,主要用于语音识别,统计标注和切分,以及机器翻译,可运行在UNIX及Windows平台上。(具体概念都能

一、简介

简单且概括的来说,SRILM是一个构建和应用统计语言模型的开源工具包,主要用于语音识别,统计标注和切分,以及机器翻译,可运行在UNIX及Windows平台上。(具体概念都能搜索出来,不再赘述,主讲安装和简单使用。)

SRILM的主要目标是支持语言模型的估计和评测。


二、安装

在此,为解决大家下载版本不一致,导致安装出错的问题,提供压缩包下载链接,如下所示:

SRILM:链接:https://pan.baidu.com/s/18T474NLSqlBL_xhMKEivnA

提取码:adsl

TCL:链接:https://pan.baidu.com/s/1E-0E_IrY5rLnfKAepoY5BA

提取码:adsl

在此,大家肯定会疑问SRILM工具包的安装,为什么还要放一个TCL 的压缩包,这是因为我门SRILM的安装需要依赖在TCL工具上(脚本解释工具),因此在安装过程中需要先安装TCL,再安装SRILM。

获取到的两个压缩包都为tar压缩包,下面我们讲述具体的安装步骤:

1、TCL安装

在这里插入图片描述

解压:

tar -xf tcl8.7a5-src.tar.gz

在这里插入图片描述

然后进入解压后的目录,进入unix目录(目录结构如下图):

在这里插入图片描述

没有root权限方法:

执行命令 :./configure

在这里插入图片描述

打开Makefile文件,将其中的/usr/local 替换成 /home/个人目录/tcl (以/home/shimengtong/tcl为例)。替换完成后执行命令:make(root权限可以直接运行命令,过程中会出现很多日志,等待运行完。)

在这里插入图片描述

运行完成并出现上图所示内容,执行命令:make install

在这里插入图片描述

出现上图所示即为成功,/home/个人目录/tcl 目录如下图所示:

在这里插入图片描述

2、SRILM安装

在/home/个人目录/ 创建一个srilm的文件夹,在该文件夹下解压SRILM的压缩包。

命令:tar -xf srilm-1.7.1.tar.gz

如图所示

在这里插入图片描述

打开Makefile文件,修改参数:

第七行:

在这里插入图片描述

修改成:

在这里插入图片描述

第十三行:

在这里插入图片描述

修改成:

在这里插入图片描述

进入common文件夹,如下所示:

在这里插入图片描述

找到上述第十三行修改的文件名Makefile.machine.i686-m64 并打开:

该文件第五十四行:

在这里插入图片描述

修改成:

在这里插入图片描述

回到srilm目录下:

执行命令:make World (接着等待...)

在这里插入图片描述

显示上图即编译成功,进行测试:

环境变量:

export PATH=/home/个人目录/srilm/path/bin/:/your/srilm/path/bin:$PATH

测试命令:

make test

在这里插入图片描述

测试完成如上图所示。

至此全部安装成功,皆大欢喜。


三、使用方法

(1)小数据训练

  估计是从训练数据(训练集)中得到一个模型,包括最大似然估计及相应的平滑算法;而评测则是从测试集中计算其困惑度(MIT自然语言处理概率语言模型有相关介绍)。其最基础和最核心的模块是n-gram模块,这也是最早实现的模块,包括两个工具:ngram-count和ngram,相应的被用来估计语言模型和计算语言模型的困惑度。

  1、从语料库中生成n-gram计数文件,即统计词频:

   ngram-count -text train.txt -order 3 -write out.count

   -text指向输入文件,此处为train.txt;

在这里插入图片描述

-order指向生成几元的n-gram,即n,此处为3元;-write指向输出文件,此处为out.count,输出内容为:

在这里插入图片描述

第一列为n元词,第二列为相应的频率。一元词one在语料库中的频率统计为9次;二元词one two在语料库中的频率统计为3次;三元one two three在语料库中的频率统计为1次。

  

2、从上一步生成的计数文件中训练语言模型:

  ngram-count -read out.count -order 3 -lm out.lm -interpolate -kndiscount

  -read指向输入文件,此处为 out.count

-order与上同

-lm 指向训练好的语言模型输出文件,此处为out.lm

最后两个参数为所采用的平滑方法,-interpolate为插值平滑,-kndiscount为 modified Kneser-Ney 打折法,这两个是联合使用的。

补充:一般我们训练语言模型时,上述两步是合并成一步进行的,上述是为了介绍n-gram语言模型训练细节。

  语言模型europarl.en.lm的文件格式如下,为 ARPA文件格式。

  在这里插入图片描述

  注:概率显示为log(概率)以10为底。

3、利用上一步生成的语言模型计算测试集的困惑度:

  ngram -ppl dev.txt -order 3 -lm out.lm -debug 2 > out.ppl

  测试集dev.txt

在这里插入图片描述

参数-ppl为对测试集句子进行评分(logP(T),其中P(T)为所有句子的概率乘积)和计算测试集困惑度的参数

out.ppl为输出结果文件,其他参数同上。

在这里插入图片描述

第15行文件dev.txt 的基本信息:2句,4个单词,0个未登录词;

  第16行为评分的基本情况:无0概率;logP(T)=-3.33985,ppl==3.60281, ppl1= 6.83852,均为困惑度。其公式稍有不同,如下:

  ppl=10^{-{logP(T)}/{Sen+Word}};

ppl1=10^{-{logP(T)}/Word}

  其中Sen和Word分别代表句子和单词数。

注:上述步骤可以解决大部分小数据的训练。

上述简单训练,部分内容借鉴 “我爱自然语言处理”:www.52nlp.cn

(2)大数据(BigLM)

对于大文本的语言模型训练不能使用上面的方法,主要思想是将文本切分,分别计算,然后合并。步骤如下:

1、切分数据

split -l 10000 trainfile.txt filedir/

即每10000行数据为一个新文本存到filedir目录下。

2、对每个文本统计词频

make-bath-counts filepath.txt 1 cat ./counts -order 3

其中filepath.txt为切分文件的全路径,可以用命令实现:ls $(echo $PWD)/* > filepath.txt,将统计的词频结果存放在counts目录下

3、合并counts文本并压缩

merge-batch-counts ./counts

不解释

4、训练语言模型

make-big-lm -read ../counts/*.ngrams.gz -lm ../split.lm -order 3

用法同ngram-counts

5、测评(计算困惑度)

ngram -ppl filepath.txt -order 3 -lm split.lm -debug 2 > file.ppl

注:因自有一套训练工具,因此大数据训练部分未曾实验,如有问题请进行详细搜索。

大数据训练部分转自:http://www.leexiang.com/building-a-large-lm-with-srilm



推荐阅读
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • Win10下游戏不能全屏的解决方法及兼容游戏列表
    本文介绍了Win10下游戏不能全屏的解决方法,包括修改注册表默认值和查看兼容游戏列表。同时提供了部分已经支持Win10的热门游戏列表,帮助玩家解决游戏不能全屏的问题。 ... [详细]
  • 如何在联想win10专业版中修改账户名称
    本文介绍了在联想win10专业版中修改账户名称的方法,包括在计算机管理中找到要修改的账户,通过重命名来修改登录名和属性来修改显示名称。同时指出了windows10家庭版无法使用此方法的限制。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
author-avatar
手机用户2502875691_190
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有