Java 使用openNLP maxent的训练模型

Java 使用openNLP maxent的训练模型,java,machine-learning,classification,opennlp,maxent,Java,Machine Learning,Classification,Opennlp,Maxent,我有黄金数据,我注释了几个文件中的所有房间号。我想使用openNLP来训练一个使用这些数据的模型,并对房间号进行分类。我不知道从哪里开始。我阅读了openNLP maxent文档,查看了openNLP.tools中的示例,现在又看了openNLP.tools.ml.maxent——这似乎是我应该使用的东西,但我仍然不知道如何使用。有人能告诉我一些关于如何使用openNLP maxent以及从哪里开始的基本想法吗?任何帮助都将不胜感激。这是一个演示OpenNLP Maxent API用法的简单示例

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

这是一个演示OpenNLP Maxent API用法的简单示例

它包括以下内容:

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

导入java.io.File;
导入java.io.FileInputStream;
导入java.io.IOException;
导入java.io.InputStream;
导入java.util.zip.gzip输入流;
导入opennlp.maxent.GIS;
导入opennlp.maxent.io.GISModelReader;
导入opennlp.maxent.io.SuffixSensitiveGISModelWriter;
导入opennlp.model.AbstractModel;
导入opennlp.model.AbstractModelWriter;
导入opennlp.model.DataIndexer;
导入opennlp.model.DataReader;
导入opennlp.model.FileEventStream;
导入opennlp.model.MaxentModel;
导入opennlp.model.OnePassDataIndexer;
导入opennlp.model.PlainTextFileDataReader;
...
字符串trainingFileName=“training file.txt”;
String modelFileName=“trained model.maxent.gz”;
//从存储在文件中的数据训练模型。
//培训文件每行包含一个培训样本。
//结果(result)是每行的第一个元素。
//例如:
//结果=1A=1B=1
//结果=0 a=0 b=1
// ...
DataIndexer indexer=新的OnePassDataIndexer(新的FileEventStream(trainingFileName));
MaxentModel trainedMaxentModel=GIS.trainModel(100,索引器);//100次迭代
//将经过训练的模型存储到文件中供以后使用(gzip)
文件输出文件=新文件(modelFileName);
AbstractModelWriter=新的后缀敏感模型编写器((AbstractModel)trainedMaxentModel,outFile);
writer.persist();
//从文件加载gzip模型
FileInputStream inputStream=新的FileInputStream(modelFileName);
InputStream decodedInputStream=新的GZIPInputStream(InputStream);
DataReader modelReader=新的明文文件DataReader(decodedInputStream);
MaxentModel loadedMaxentModel=新的GISModelReader(modelReader).getModel();
//现在使用加载的模型预测结果
字符串[]上下文={“a=1”,“b=0”};
double[]outcomeProbs=loadedMaxentModel.eval(上下文);
字符串结果=loadedMaxentModel.GetBestOutput(outcomeProbs);

这篇文章应该有帮助,谢谢。你能告诉我如何将eHOST注释转换成openNLP格式吗?对不起,我不知道。。。从未与ehost合作过。但是我的直觉告诉我,如果ehost格式可以用regex或其他什么来解析,那么您应该能够将这些标记转换为opennlp标记扫描,您提供了详细的实现示例吗?以及训练数据集和模型。您还可以帮助解决这个问题吗OpenNLP Maxent分类器需要一个文本输入文件,其格式如下:(1)每行一个样本,(2)每个特征用空格分隔,(3)写为“key=value”。请参阅代码段内的示例“//example:…”@ViliamSimko Do
value
result
必须是数字,也可以是任何字符串(不带空格)?@这些值可以是任意字符串。我曾经使用过这样一个示例:
wprefix:4=borr sppos=NNP pos=:
@ViliamSimko谢谢!你能回答我的另一个问题吗?