java opennlp_使用opennlp进行文档分类
序
本文主要研究下如何使用opennlp进行文档分类
DoccatModel
要对文档进行分类,需要一个最大熵模型(Maximum Entropy Model),在opennlp中对应DoccatModel
@Test
public void testSimpleTraining() throws IOException {
ObjectStream samples = ObjectStreamUtils.createObjectStream(
new DocumentSample("1", new String[]{"a", "b", "c"}),
new DocumentSample("1", new String[]{"a", "b", "c", "1", "2"}),
new DocumentSample("1", new String[]{"a", "b", "c", "3", "4"}),
new DocumentSample("0", new String[]{"x", "y", "z"}),
new DocumentSample("0", new String[]{"x", "y", "z", "5", "6"}),
new DocumentSample("0", new String[]{"x", "y", "z", "7", "8"}));
TrainingParameters params = new TrainingParameters();
params.put(TrainingParameters.ITERATIONS_PARAM, 100);
params.put(TrainingParameters.CUTOFF_PARAM, 0);
DoccatModel model = DocumentCategorizerME.train("x-unspecified", samples,
params, new DoccatFactory());
DocumentCategorizer doccat = new DocumentCategorizerME(model);
double[] aProbs = doccat.categorize(new String[]{"a"});
Assert.assertEquals("1", doccat.getBestCategory(aProbs));
double[] bProbs = doccat.categorize(new String[]{"x"});
Assert.assertEquals("0", doccat.getBestCategory(bProbs));
//test to make sure sorted map's last key is cat 1 because it has the highest score.
SortedMap> sortedScoreMap = doccat.sortedScoreMap(new String[]{"a"});
Set cat = sortedScoreMap.get(sortedScoreMap.lastKey());
Assert.assertEquals(1, cat.size());
}
这里为了方便测试,先手工编写DocumentSample来做训练文本
categorize方法返回的是一个概率,getBestCategory可以根据概率来返回最为匹配的分类
输出如下:
Indexing events with TwoPass using cutoff of 0
Computing event counts... done. 6 events
Indexing... done.
Sorting and merging events... done. Reduced 6 events to 6.
Done indexing in 0.13 s.
Incorporating indexed data for training...
done.
Number of Event Tokens: 6
Number of Outcomes: 2
Number of Predicates: 14
...done.
Computing model parameters ...
Performing 100 iterations.
1: ... loglikelihood=-4.1588830833596715 0.5
2: ... loglikelihood=-2.6351991759048894 1.0
3: ... loglikelihood=-1.9518912133474995 1.0
4: ... loglikelihood=-1.5599038834410852 1.0
5: ... loglikelihood=-1.3039748361952568 1.0
6: ... loglikelihood=-1.1229511041438864 1.0
7: ... loglikelihood=-0.9877356230661396 1.0
8: ... loglikelihood=-0.8826624290652341 1.0
9: ... loglikelihood=-0.7985244514476817 1.0
10: ... loglikelihood=-0.729543972551105 1.0
//...
95: ... loglikelihood=-0.0933856684859806 1.0
96: ... loglikelihood=-0.09245907503183291 1.0
97: ... loglikelihood=-0.09155090064000486 1.0
98: ... loglikelihood=-0.09066059844628399 1.0
99: ... loglikelihood=-0.08978764309881068 1.0
100: ... loglikelihood=-0.08893152970793908 1.0
小结
opennlp的categorize方法需要自己先切词好,单独调用不是很方便,不过如果是基于pipeline设计的,也可以理解,在pipeline前面先经过切词等操作。本文仅仅是使用官方的测试源码来做介绍,读者可以下载个中文分类文本训练集来训练,然后对中文文本进行分类。
doc
java opennlp_使用opennlp进行文档分类相关推荐
- 使用opennlp进行文档分类
序 本文主要研究下如何使用opennlp进行文档分类 DoccatModel 要对文档进行分类,需要一个最大熵模型(Maximum Entropy Model),在opennlp中对应DoccatMo ...
- ML之K-means:基于K-means算法利用电影数据集实现对top 100 电影进行文档分类
ML之K-means:基于K-means算法利用电影数据集实现对top 100 电影进行文档分类 目录 输出结果 实现代码 输出结果 先看文档分类后的结果,一共得到五类电影: 实现代码 # -*- c ...
- ML之H-Clusters:基于H-Clusters算法利用电影数据集实现对top 100电影进行文档分类
ML之H-Clusters:基于H-Clusters算法利用电影数据集实现对top 100电影进行文档分类 目录 输出结果 实现代码 输出结果 先看输出结果 实现代码 # -*- coding: ut ...
- 《机器学习实战》学习笔记之第四章朴素贝叶斯进行文档分类
朴素贝叶斯有两个假设: 1."朴素":特征之间相互独立,单词出现的概率相同,当然这个假设不合理 2."权重相同":每个特征等同重要,这个假设也不太合理 尽管如此 ...
- java进行文档类型转换PDF
使用jacob进行文档类型转换支持PPT.Excel.Word转为PDF模式 本方法对Windows部署的项目友好,最后需要在jdk/bin目录下导入与jar包版本一致的.dll文件 文件地址 链接: ...
- python文件查重_文件查重 我使用的是面向局部敏感的最小哈希签名的方法进行文档查重 联合开发网 - pudn.com...
文件查重 所属分类:其他 开发工具:Python 文件大小:39KB 下载次数:7 上传日期:2017-12-20 16:45:32 上 传 者:lala_ 说明: 我使用的是面向局部敏感的最小哈希 ...
- 企业怎样有效地进行文档管理
企业文件涵盖了企业的核心知识.文化内涵.商业经验等无形资产.越来越多的管理者意识到文档管理在企业管理中的重要性.企业文档管理是一项必须做好的系统工作.然而,如何提高企业文档管理水平是许多管理者应该考虑 ...
- Linux系统通过FTP进行文档基本操作【华为云分享】
[摘要] Linux系统里通过FTP可以对文档进行上传,更改权限和基本的文档管理. 获得Linux系统后,不熟悉命令操作的情况下,可以通过FTP工具进行文档操作,下面以WinSCP工具为例进行讲解: ...
- 利用YAKE进行文档关键词提取
利用YAKE!进行文档关键词提取 现记录一种基于关键词统计.无监督.单文档关键词提取算法YAKE!(Yet Another Keyword Extractor)的使用笔记. YAKE!基于5种指标:是 ...
最新文章
- 用好 Java 中的枚举,真的没有那么简单!
- KRPano JS 场景编辑器源码
- python关于七巧板的代码_Css打造一个简单的静态七巧板
- [转]常用Delphi开发资料网址
- linux 的间隔定时器函数setitimer
- 控制台——EventLog实现事件日志操作
- c语言头文件及形式,C语言头文件作用及写法
- 浙大PAT考试经验/考前必看/日常刷题总结(经验只写了一点点
- 贴片电阻的功率与封装对照表
- java毕业生设计web人力资源管理系统计算机源码+系统+mysql+调试部署+lw
- 小说阅读,原生小说APP源码出售,可二次开发 四端互通:android端,ios端,h5端,公众号端
- com.homelink.android,链家-新房二手房租房
- ffmpeg一些基本用法
- dotnet 基于 debian 创建一个 docker 的 sdk 镜像
- php 保持内容换行符,PHP 将内容写入word pdf 换行符不生效咋办
- 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java大学生学科竞赛管理系统t16zl
- C# .Net通过pythonnet调用python pyd文件
- 简单的学生网页作业源码 基于html css javascript仿淘宝购物商城设计毕业论文源码
- Python爬虫抓取基金数据
- GAN学习总结一 GAN基本概念理解
热门文章
- 视频光流估计综述:从算法原理到具体应用
- 使用VA助手如何快速添加注释(按doxygen注释规范)
- 天数换算月份_Js 计算指定月份的天数
- Warning: React.createElement: type is invalid -- expected a string (for built-in components) or a cl
- Java线程---休眠问题来看并发执行
- LeetCode 116. 填充每个节点的下一个右侧节点指针
- matplotlib.pyplot中add_subplot方法参数的含义
- RDKit | 基于随机森林(RF)预测SARS-CoV 3CL蛋白酶抑制剂的pIC50
- Nat. Methods | ilastik:为生物图像分析而生的交互式机器学习平台
- RDKit:基于RDKit的溶解度预测的机器学习模型