当前位置: 首页 > news >正文

最大熵工具包的使用

最大熵工具包的使用

    最大熵是自然语言处理中经常用到的一种统计方法。网上也有很多最大熵方面的工具包,目前大家用得最多的应该是张乐博士写的最大熵工具包了。该工具包既可以采用命令行形式运行,也可以直接调用接口函数,为大家的研究工作带来了很大的方便。但是,对于刚接触到该工具包的人来说,使用起来还是有些麻烦的。

一、命令行形式使用方法

       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)

 

三、最大熵工具包下载

    

  张乐博士的最大熵工具包
 

四、最大熵工具的一个介绍

下面的文档介绍了最大熵理论以及最大熵工具包的使用:

  最大熵理论及其应用,下载

相关文章:

  • iptables开启,通过nginx无法访问php程序
  • 在linux系统(CentOS)上安装中文支持包
  • Android -- Glide框架详解(一)
  • win7下开启web服务器
  • Graylog2+Elasticsearch+Nxlog
  • 初到51CTO
  • iOS多线程与网络开发之小文件上传
  • sqlserver 语句
  • 动态规划 List
  • A useful UrlBuilder class
  • 图解面向对象中的聚合与耦合概念
  • Linux工具使用(5)——FTP
  • Linux下高并发socket最大连接数所受的各种限制
  • 基础研究与国家目标——国家重点基础研究发展计划[转自科学社]
  • java 设计模式 -- 责任链模式
  • 收藏网友的 源程序下载网
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 【译】理解JavaScript:new 关键字
  • CSS实用技巧
  • DOM的那些事
  • ESLint简单操作
  • Java 最常见的 200+ 面试题:面试必备
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Node项目之评分系统(二)- 数据库设计
  • NSTimer学习笔记
  • PHP CLI应用的调试原理
  • Swoft 源码剖析 - 代码自动更新机制
  • vue脚手架vue-cli
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 第2章 网络文档
  • 分享一份非常强势的Android面试题
  • 复杂数据处理
  • 基于web的全景—— Pannellum小试
  • ------- 计算机网络基础
  • 开源SQL-on-Hadoop系统一览
  • 利用jquery编写加法运算验证码
  • 小程序开发中的那些坑
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (ZT)薛涌:谈贫说富
  • (一)80c52学习之旅-起始篇
  • (转)jQuery 基础
  • *Django中的Ajax 纯js的书写样式1
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .CSS-hover 的解释
  • .htaccess配置常用技巧
  • .NET 8.0 中有哪些新的变化?
  • .Net 中Partitioner static与dynamic的性能对比
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .net6使用Sejil可视化日志
  • .NET企业级应用架构设计系列之开场白
  • .net与java建立WebService再互相调用