使用 openNLP maxent 训练模型

2023-12-02

我有黄金数据,其中注释了多个文档中的所有房间号。我想使用 openNLP 来训练一个使用这些数据并对房间号进行分类的模型。我不知道从哪里开始。我阅读了 openNLP maxent 文档,查看了 opennlp.tools 中的示例,现在查看了 opennlp.tools.ml.maxent - 看起来它是我应该使用的东西,但我仍然不知道如何使用。有人可以给我一些关于如何使用 openNLP maxent 以及从哪里开始的基本想法吗?任何帮助将不胜感激。


这是一个最小的工作示例,演示了 OpenNLP Maxent API 的用法。

它包括以下内容:

  • 根据文件中存储的数据训练 maxent 模型。
  • 将训练好的模型存储到文件中。
  • 从文件加载经过训练的模型。
  • 使用模型进行分类。
  • 注意:结果是每个训练样本中的第一个元素
  • 注意:这些值可以是任意字符串,例如xyz=s0methIng

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.GZIPInputStream;

import opennlp.maxent.GIS;
import opennlp.maxent.io.GISModelReader;
import opennlp.maxent.io.SuffixSensitiveGISModelWriter;
import opennlp.model.AbstractModel;
import opennlp.model.AbstractModelWriter;
import opennlp.model.DataIndexer;
import opennlp.model.DataReader;
import opennlp.model.FileEventStream;
import opennlp.model.MaxentModel;
import opennlp.model.OnePassDataIndexer;
import opennlp.model.PlainTextFileDataReader;

...

String trainingFileName = "training-file.txt";
String modelFileName = "trained-model.maxent.gz";

// Training a model from data stored in a file.
// The training file contains one training sample per line.
// Outcome (result) is the first element on each line.
// Example:
// result=1 a=1 b=1
// result=0 a=0 b=1
// ...
DataIndexer indexer = new OnePassDataIndexer( new FileEventStream(trainingFileName)); 
MaxentModel trainedMaxentModel = GIS.trainModel(100, indexer); // 100 iterations

// Storing the trained model into a file for later use (gzipped)
File outFile = new File(modelFileName);
AbstractModelWriter writer = new SuffixSensitiveGISModelWriter((AbstractModel) trainedMaxentModel, outFile);
writer.persist();

// Loading the gzipped model from a file
FileInputStream inputStream = new FileInputStream(modelFileName);
InputStream decodedInputStream = new GZIPInputStream(inputStream);
DataReader modelReader = new PlainTextFileDataReader(decodedInputStream);
MaxentModel loadedMaxentModel = new GISModelReader(modelReader).getModel();

// Now predicting the outcome using the loaded model
String[] context = {"a=1", "b=0"};
double[] outcomeProbs = loadedMaxentModel.eval(context);
String outcome = loadedMaxentModel.getBestOutcome(outcomeProbs);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 openNLP maxent 训练模型 的相关文章

  • 如何让 BlazeDS 忽略属性?

    我有一个 java 类 它有一个带有 getter 和 setter 的字段 以及第二对 getter 和 setter 它们以另一种方式访问 该字段 public class NullAbleId private static final
  • 不同帐户上的 Spring Boot、JmsListener 和 SQS 队列

    我正在尝试开发一个 Spring Boot 1 5 应用程序 该应用程序需要侦听来自两个不同 AWS 帐户的 SQS 队列 是否可以使用 JmsListener 注解创建监听器 我已检查权限是否正确 我可以使用 getQueueUrl 获取
  • Junit:如何测试从属性文件读取属性的方法

    嗨 我有课ReadProperty其中有一个方法ReadPropertyFile返回类型的Myclass从属性文件读取参数值并返回Myclass目的 我需要帮助来测试ReadPropertyFile方法与JUnit 如果可能的话使用模拟文件
  • 如何循环遍历所有组合,例如48 选择 5 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在java中从大小为n的集合中迭代生成k个元素子集 https stackoverflow com questions 4504974 how to iteratively generate k
  • .properties 中的通配符

    是否存在任何方法 我可以将通配符添加到属性文件中 并且具有所有含义 例如a b c d lalalala 或为所有以结尾的内容设置一个正则表达式a b c anything 普通的 Java 属性文件无法处理这个问题 不 请记住 它实际上是
  • 动态选择端口号?

    在 Java 中 我需要获取端口号以在同一程序的多个实例之间进行通信 现在 我可以简单地选择一些固定的数字并使用它 但我想知道是否有一种方法可以动态选择端口号 这样我就不必打扰我的用户设置端口号 这是我的一个想法 其工作原理如下 有一个固定
  • 如何在java中将一个数组列表替换为另一个不同大小的数组列表

    我有两个大小不同的数组列表 如何从此替换 ArrayList
  • 过滤两次 Lambda Java

    我有一个清单如下 1 2 3 4 5 6 7 和 预期结果必须是 1 2 3 4 5 6 7 我知道怎么做才能到7点 我的结果 1 2 3 4 5 6 我也想知道如何输入 7 我添加了i gt i objList size 1到我的过滤器
  • 如何获取之前的URL?

    我需要调用我的网络应用程序的 URL 例如 如果有一个从 stackoverflow com 到我的网站 foo com 的链接 我需要 Web 应用程序 托管 bean 中的 stackoverflow 链接 感谢所有帮助 谢谢 并不总是
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • jdbc mysql loginTimeout 不起作用

    有人可以解释一下为什么下面的程序在 3 秒后超时 因为我将其设置为在 3 秒后超时 12秒 我特意关闭了mysql服务器来测试mysql服务器无法访问的这种场景 import java sql Connection import java
  • 内部类的构造函数引用在运行时失败并出现VerifyError

    我正在使用 lambda 为内部类构造函数创建供应商ctx gt new SpectatorSwitcher ctx IntelliJ建议我将其更改为SpectatorSwitcher new反而 SpectatorSwitcher 是我正
  • 当 OnFocusChangeListener 应用于包装的 EditText 时,TextInputLayout 没有动画

    不能比标题说得更清楚了 我有一个由文本输入布局包裹的 EditText 我试图在 EditText 失去焦点时触发一个事件 但是 一旦应用了事件侦听器 TextInputLayout 就不再对文本进行动画处理 它只是位于 editText
  • 如何对不同的参数类型使用相同的java方法?

    我的问题 我有 2 个已定义的记录 创建对象请求 更新对象请求 必须通过实用方法进行验证 由于这两个对象具有相同的字段 因此可以对这两种类型应用相同的验证方法 现在我只是使用两种方法进行重载 但它很冗长 public record Crea
  • 如何访问JAR文件中的Maven资源? [复制]

    这个问题在这里已经有答案了 我有一个使用 Maven 构建的 Java 应用程序 我有一个资源文件夹com pkg resources 我需要从中访问文件 例如directory txt 我一直在查看各种教程和其他答案 但似乎没有一个对我有
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • Cucumber 0.4.3 (cuke4duke) 与 java + maven gem 问题

    我最近开始为 Cucumber 安装一个示例项目 并尝试使用 maven java 运行它 我遵循了这个指南 http www goodercode com wp using cucumber tests with maven and ja
  • Eclipse 启动时崩溃;退出代码=13

    I am trying to work with Eclipse Helios on my x64 machine Im pretty sure now that this problem could occur with any ecli
  • 双枢轴快速排序和快速排序有什么区别?

    我以前从未见过双枢轴快速排序 是快速排序的升级版吗 双枢轴快速排序和快速排序有什么区别 我在 Java 文档中找到了这个 排序算法是双枢轴快速排序 作者 弗拉基米尔 雅罗斯拉夫斯基 乔恩 本特利和约书亚 布洛赫 这个算法 在许多数据集上提供
  • 如何防止在Spring Boot单元测试中执行import.sql

    我的类路径中有一个 import sql 文件 其中包含一些 INSERT 语句 当使用 profile devel 运行我的应用程序时 它的数据被加载到 postgres 数据库中 到目前为止一切正常 当使用测试配置文件执行测试时 imp

随机推荐

  • 获取 PHP 中常量的定义类

    我想使用反射来获取 PHP 中的类定义的常量列表 目前使用反射我可以获得常量列表 但这也包括在继承类中声明的常量 有没有一种方法我可以使用 给定一个类 仅获取该类定义的常量 给定一个常量和一个类 检查该常量是否由该类定义 不是继承或扩展的父
  • 如何防止 Eclipse 在启动时挂起?

    我正在使用 Eclipse 3 3 Europa 有时 Eclipse 需要花费非常长的时间 也许永远 来启动 我在 Eclipse 日志中唯一能看到的是 ENTRY org eclipse core resources 2 10035 2
  • 船不会发射子弹蟒蛇速成课程第二版

    您好 我将不胜感激您提供有关为什么子弹没有发射的帮助 我按照书中的所有步骤操作 但它不起作用 Bullet py文件是新编写的 settings py中的 bullet settings 也是新编写的 并且alien invasion py
  • iOS测量网页加载时间

    我搜索了很多 但找不到用 iOS 测量网页加载时间的方法 在应用程序中 我想显示特定的页面加载时间 iOS sdk 或第三方 sdk 是否可以 Thanks 您可以加载 URL 请求并使用 NSDate 来查看花费了多长时间 假设您使用 U
  • 转换为 JSON 时对象属性消失[重复]

    这个问题在这里已经有答案了 这是我的班级 export class Patient constructor public id number public name string public location string public
  • 有连续的 Future.find 吗?

    我有一些副作用功能 def f Future Int val n Random nextInt println s Generated n Future n 我想重复执行它 直到谓词返回 true def success n Int Boo
  • 访问 R 中的零元素有什么作用?

    如果我有一个向量a lt c 3 5 7 8 and run a 1 毫不奇怪我会得到 3 但如果我会跑a 0 我基本上得到numeric 0 这是什么意思 这有什么作用 出于正常原因我该如何使用它 其他人已经回答了什么x 0 确实如此 所
  • 在 Angular js 的控制器中绑定 Twitter Bootstrap datepicker 的模型值

    我正在使用 Angular js 和 Twitter Bootstrap 构建一个应用程序 HTML div div
  • 从字符串数组中提取数字

    我有一个字符串数组 scala gt tokens res34 Array String Array The value of your profile is 234 2 You have potential to gain 8 3 mor
  • 从 C# WinForms 应用程序打开 VC++ 表单时出现选项卡导航问题

    我有一个 C 应用程序 具有各种输入控件 文本框 组合框 按钮等 以及选项卡控件 在其中一个选项卡中 我嵌入了一个非托管 C 窗口 C 窗口也几乎没有输入控件 使用 Tab 键 我可以导航到 C 控件 不会出现任何问题 但是 当我在 C 窗
  • 如何使用 PHP 查找序列中缺失的值?

    假设您有一个数组 value gt timestamp 这些值随着时间的推移而增加 但可以随时重置 例如 array array 1 gt 6000 2 gt 7000 3 gt 8000 7 gt 9000 8 gt 10000 9 gt
  • 函数必须只有一个参数

    我已经很长时间没有用 C 编写代码了 我正在尝试修复一些旧代码 我收到错误 TOutputFile TOutputFile operator lt lt TOutputFile T must have exactly one argumen
  • sympy autowrap(cython):参数数量的限制,数组形式的参数?

    我有以下问题 我想使用 autowrap 生成 sympy 矩阵的编译版本 其中单元格包含 sympy 表达式 根据我的问题的具体说明 参数的数量可能会变得非常大 我遇到了以下两个问题 autowrap 接受的参数数量似乎限制为 509 即
  • 生成最多一定数量的素数列表

    我正在尝试生成 10 亿以下的素数列表 我正在尝试这个 但这种结构非常糟糕 有什么建议么 a lt 1 1000000000 d lt 0 b lt for i in a for j in 1 i if i j 0 d lt c d i 乔
  • 防止 Apache 对 gzip 内容进行分块

    当在 Apache2 中使用 mod deflate 时 Apache 将对 gzip 内容进行分块 设置 Transfer encoding chunked 标头 虽然这会加快下载时间 但我无法显示进度条 如果我自己在 PHP 中处理压缩
  • 如何从 Javascript 中删除tinymce编辑器按钮?

    我正在使用 TinyMCE4 3 10 作为 Wordpress 4 5 4 的一部分 我使用以下代码创建一个自定义的tinymce编辑器 tinyMCE execCommand mceAddEditor false captionId t
  • 可以使用动态 html 表作为源数据吗?

    如果我有一个 html 表 其中包含根据文件中的过滤器计算的值 我是否可以根据这些值读取并生成绘图 我不确定回答这个问题是否重要 但我主要使用 R 并使用 r 代码块从我使用创建的共享数据对象名称shared ert计算总和crosstal
  • 对静态成员的未定义引用

    我正在使用交叉编译器 我的代码是 class WindowsTimer public WindowsTimer frequency QuadPart 0ull private static LARGE INTEGER frequency 我
  • 使用 DatePicker 记录 Espresso 测试

    测试记录器生成的代码在记录后运行时立即失败 原因是 在录制时 我点击年份 年份旋转器弹出 我向后滚动 然后选择其中一个年份 记录器不捕获滚动 在 Xcode 中 他们添加了一种滚动到项目的方法 我在浓缩咖啡中找不到类似的东西 使用Andro
  • 使用 openNLP maxent 训练模型

    我有黄金数据 其中注释了多个文档中的所有房间号 我想使用 openNLP 来训练一个使用这些数据并对房间号进行分类的模型 我不知道从哪里开始 我阅读了 openNLP maxent 文档 查看了 opennlp tools 中的示例 现在查