最大熵工具包的使用
最大熵是自然语言处理中经常用到的一种统计方法。网上也有很多最大熵方面的工具包,目前大家用得最多的应该是张乐博士写的最大熵工具包了。该工具包既可以采用命令行形式运行,也可以直接调用接口函数,为大家的研究工作带来了很大的方便。但是,对于刚接触到该工具包的人来说,使用起来还是有些麻烦的。
一、命令行形式使用方法
1、利用命令行形式,首先要准备好特征文件。特征文件的格式在最大熵工具包的使用说明书(manual20041229.pdf)的P24。
特征文件中,一行就是一个事件(event),其格式首先是该event对应的类别label,然后是特征feature,两者都是string类型的。如果feature后边有“:”,则后边是该feature的值。Label与feature之间,以及feature与feature之间以空格间隔。例如一个事件形式如下:
Outdoor Sunny Sad Humid Outdoor
则,该event的label为Outdoor,特征有四个,包括Sunny,Sad,Humid,Outdoor。该事件中的特征没有给出特征值,如果没有显式给出,则其特征值默认为1。
准备好特征文件之后,可以采用命令进行训练:
maxent –m Modelname –i iteraterNum –v train.txt
例如:maxent –m Modelname –i 30 –v train.txt
则你将会得到一个名字为Modelname的最大熵模型。
测试过程,首先也是利用同样的特征模板抽取特征构成特征文件test.txt作为系统输入,然后测试的命令为:
maxent -p –m Modelname –o output.txt test.txt
将输出对每个事件的预测结果
或者采用命令:
maxent -p –m Modelname –detail –o output.txt test.txt
将输出详细的概率信息
二、调用函数API
n 使用函数接口
l 运行环境:VC7.1
l 加入头文件:#include <maxentmodel.hpp>
l 类名:MaxentModel
l 训练过程:
加入特征事件:
n begin_add_event();
n add_event(const vector< string > &context, const outcome_type &outcome, size_t count=1)
n end_add_event()
l 训练:train(size_t iter=15, const std::string &method="lbfgs", double sigma=0.0, double tol=1E-05)
保存模型:save(const string &model, bool binary=false)
-----------------------------------------------------------------------------------------------------------------
l 测试:
n 加载模型:load (const string &model)
n 加入特征,方法同训练
n 模型估计使用函数:eval_all((const vector< string > &context, std::vector< pair< outcome_type, double > > &outcomes, bool sort_result=true)
三、最大熵工具包下载
张乐博士的最大熵工具包
四、最大熵工具的一个介绍
下面的文档介绍了最大熵理论以及最大熵工具包的使用:
最大熵理论及其应用,下载
来源:http://ir.hit.edu.cn/~taozi/ME.htm
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sptoor/archive/2010/03/31/5437527.aspx
分享到:
相关推荐
东北大学张乐的最大熵工具包及在DOS中的调用指令
张乐最大熵工具包命令行实现工具。手册中第5章详细介绍如何使用命令行来进行模型训练和模型测试
里面大致介绍了最大熵工具包的命令行使用代码以及工具包和说明文档的下载地址
张乐博士编写的maxent工具。这里提供的是已编译好的Windows版exe。直接在cmd下运行,不要删除包内的dll和manifest文件。
最大熵模型工具包 c++代码 还有那个什么phyon
可以自己去gihub下载:https://github.com/lzhang10/maxent
CRF_maxent.rar 东北大学张乐博士的最大熵工具包 很好的资料
维基百科:Apache OpenNLP库是一个基于机器学习的自然语言文本处理的开发工具包,它支持自然语言处理中一些共有的任务,例如:标记化、句子分割、词性标注、固有实体提取(指在句子中辨认出专有名词,例如:人名)、...
acopost是Ingo Schroder于02年在德国汉堡大学完成的一个词性标注工具包。主要实现了基于实例、最大熵、2元隐马、基于转换规则等4种词性标注算法,以及评价和算法融合等。采用的语言是perl和c,代码比较短小,非常...
Java是一种广泛使用的面向对象的编程语言,由Sun ...综上所述,Java凭借其强大的特性和广泛的适用范围,在企业级应用、互联网服务、移动开发等领域均扮演着举足轻重的角色,是现代软件开发不可或缺的重要工具之一。
软学习是一种深度强化学习工具箱,用于在连续域中训练最大熵策略。 该实现相当薄,并且主要针对我们自己的开发目的进行了优化。 对于大多数模型类(例如策略和值函数),它都使用tf.keras模块。 我们使用Ray进行实验...
PyTorch中用于图像分类的深度主动学习工具包 这是用编写的用于图像分类的深度主动学习的代码库。 我想强调的是,该工具包只是最初由Prateek Munjal等人通过电子邮件与我共享的工具包的轻量级衍生产品。 论文“使用...
JVnTextPro是Java开源工具,它基于条件随机字段(CRF)和最大熵(Maxent),用于越南语的自然语言处理(NLP)。 此工具包含多个步骤(或子问题工具),用于越南语预处理和以流水线方式设计的处理,其中一步的输出...
MALLET主题建模工具包包含有效的,基于样本的潜在Dirichlet分配,Pachinko分配和分层LDA的实现。 MALLET中的许多算法都依赖于数值优化。 MALLET包括有限内存BFGS的有效实现以及许多其他优化方法。 除了复
该工具包完全用Java编写,并支持常见的NLP任务,例如标记化,句子分段,词性标记,命名实体提取,分块,解析,共指解析,语言检测等等! 这些任务通常是构建更高级的文本处理服务所必需的。 OpenNLP项目的目标是...
语言:Python创建了一个朴素的贝叶斯文本分类器(nblearn.py,nbclassify.py),并将准确性与两个流行的机器学习工具包进行了比较。 使用两个数据集(电子邮件和IMDB评论)并进行了二进制分类:SPAM或HAM(非垃圾...
MALLET 包括用于文档分类的复杂工具:用于将文本转换为“特征”的高效例程、各种算法(包括朴素贝叶斯、最大熵和决策树),以及使用几种常用指标评估分类器性能的代码。除了分类之外,MALLET 还包括用于应用程序的...
该库基于并提供了适用于这种情况的分类器:岭回归,各种SVM,随机森林,最大熵/逻辑回归和朴素贝叶斯分类器。 不支持深度学习,因为更常见的情况是只有一个小的标签集。 但是,诚然,添加神经词嵌入将是添加到此工具...
libfnl :trade_mark:介绍libfnl是一个API和CLI,通过提供一组易于使用的工具来促进数据和文本挖掘。 该库旨在与Python 3(仅限)一起使用。 它特别适合于挖掘生物医学/科学文本,但是如果需要的话,也可以在其他情况...
功率谱佔计是分析、了解信号所含有用信息的工具,也是信 号内在本质的也一种表现形式,功率谱密度(PSD)两数描述了随 机过程的功率随频礻的分布。其评价指标包括客观度量和统计度 量,谱分辨率特性是客观度量中的重要...