java opennlp_OpenNLP中语言检测模型训练和模型的使用
因为项目的原因,需要使用到NLP的相关技术。语言检测模型cld3是python要与项目集成也不太方便,后来找到OpenNLP,发现它相对来说,对于亚洲的语言有一些支持。
下面是OpenNLP的训练相关的东西,在项目里如果检测对象过短,对于检测结果也容易出现偏差的情况。所以语料要充足。
一 、文档准备
我们先从文档入手,在官网上的文档是很规范的,先找到Language Detector这个title,然后往下看到training,我们根据文档提示,发现其实我们的语料按照如下规范就可以
注意几点:
1.文本文件中的一行就是一条语料,第一列是语种对应的ISO-639-3码,第二列是tab缩进,第三列就是语料文本
2.对于长文本,不要人为的去加换行
3.训练语料必须要有多个不同的语料信息,否则在训练时会报错
二 、模型训练
有了以上的语料文件,就可以通过几行简单的代码就能将其训练成我们需要的语言检测了
InputStreamFactory inputStreamFactory = new MarkableFileInputStreamFactory(new File("corpus.txt"));
ObjectStream lineStream = newPlainTextByLineStream(inputStreamFactory, StandardCharsets.UTF_8);
ObjectStream sampleStream = newLanguageDetectorSampleStream(lineStream);
TrainingParameters params=ModelUtil.createDefaultTrainingParameters();
params.put(TrainingParameters.ALGORITHM_PARAM, PerceptronTrainer.PERCEPTRON_VALUE);
params.put(TrainingParameters.CUTOFF_PARAM,0);
LanguageDetectorFactory factory= newLanguageDetectorFactory();
LanguageDetectorModel model=LanguageDetectorME.train(sampleStream, params, factory);
model.serialize(new File("langdetect.bin"));
}
最后运行一下,就能在你的本地生成一个langdetect.bin的语料文件了,以后就在程序里用上就好了。
三、模型使用
public void langdetect() {
try (InputStream modelIn = new FileInputStream("/resources/langdetect.bin")) {
LanguageDetectorModel m = new LanguageDetectorModel(modelIn);
LanguageDetector languageDetectorME = new LanguageDetectorME(m);
Language bestLanguage = languageDetectorME.predictLanguage("测试语言嗅探器");
System.out.println("Best language: " + bestLanguage.getLang()); // 预测语言
System.out.println("Best language confidence: " + bestLanguage.getConfidence()); // 语言置信度
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
四、实验结果
对多国语言进行训练后的结果:
原始句子识别情况
长度限制后识别情况
opennlp重新训练模型(括号为去掉对应语料内明显是英文的句子)
opennlp(java)
cld3(python)
opennlp(java)
cld3(python)
opennlp(custom)
ar
71%
64%
100%
85%
100%
de
24%
35%
46%(修正83%)
33%
46%(修正91%)
en
63%
60%
80%
69%
93%
es
66%
66%
95%
94%
100%
fr
9%
12%
28%(修正58%)
28%
44%(修正85%)
it
44%
49%
54%
54%
85%
ja
100%
100%
100%
100%
100%
ms
65%
81%
77%
94%
0%
pl
78%
76%
83%
82%
84%
pt
88%
91%
90%
90%
94%
ru
17%
36%
31%
50%
100%
th
96%
100%
99%
100%
100%
tr
55%
17%
60%
44%
66%
zh
100%
100%
100%
100%
100%
整体
62%
57%
80%
76%
90.4%(未统计ms)
java opennlp_OpenNLP中语言检测模型训练和模型的使用相关推荐
- Pytorch模型训练和模型验证
文章目录 前言 模型训练套路 1.准备数据集 2.训练数据集和测试数据集的长度 3.搭建网络模型 4.创建网络模型.损失函数以及优化器 5.添加tensorboard 6.设置训练网络的一些参数 7. ...
- YOLOV3 模型训练及模型部署(YOLO动态链接库的封装和调用)
YOLOV3 模型训练及模型部署(YOLO动态链接库的封装和调用) 一. 配置环境 windows10 + VS2017 community cuda10.0.130_411.31 cunn-10.0 ...
- tensorflow精进之路(二十四)——Object Detection API目标检测(中)(COCO数据集训练的模型—ssd_mobilenet_v1_coco模型)
1.概述 上一讲简单的讲了目标检测的原理以及Tensorflow Object Detection API的安装,这一节继续讲Tensorflow Object Detection API怎么用. 2 ...
- Spark MLlib中支持二次训练的模型算法
在Spark MLlib中可以做二次训练的模型 大家好,我是心情有点低落的一拳超人 今天给大家带来我整理的Spark 3.0.1 MLlib库中可以做二次训练的模型总结,首先给大家介绍一下什么是二次训 ...
- python模型训练_python模型训练与预测练习
python模型训练与预测练习 发布时间:2018-03-09 17:49, 浏览次数:368 , 标签: python 我是照着YouTube上的机器学习视频做的,视频里讲的比较简洁,下来自己做遇到 ...
- Kaggle经典数据分析项目:泰坦尼克号生存预测!1. 数据概述与可视化2. 数据预处理3. 模型训练4. 模型优化(调参)
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习 ,不错过 Datawhale干货 作者:陈锴,中山大学,Datawhale成员 最近有很多读者留言,希望 ...
- 一文实现yolov5实例分割(数据标注、标签转换、模型训练、模型推理)
前言 本文记录一下yolov5实例分割的完全过程,包括制作自己的数据集,标签转换,然后训练模型,测试模型效果. 本文更推荐在电脑端阅读~
- 如何用java语言调用tensorflow训练好的模型
1.TensorFlow的训练模型在Android和Java的应用及调用 2.tensorflow的python离线训练java在线预测方案 3.tensorflow训练的模型在java中的使用 4. ...
- Java 并发编程解析 | 如何正确理解Java领域中的多线程模型,主要用来解决什么问题?
苍穹之边,浩瀚之挚,眰恦之美: 悟心悟性,善始善终,惟善惟道! -- 朝槿<朝槿兮年说> 写在开头 我国宋代禅宗大师青原行思在<三重境界>中有这样一句话:" 参禅之初 ...
最新文章
- The key of C# 学习笔记I-II
- 生物识别技术在我们日常生活中的应用
- linux grep sed awk
- jsp中文件下载的实现
- Linux内核调试技术——kprobe使用与实现
- shell脚本详解(六)——数组简介和排序算法
- 深入理解Android 卷I 提供预定
- javascript中数组的22种方法
- 在servlet中或者在filter中获取spring容器中的bean
- Leetcode每日一题:1095.find-in-mountain-array(山脉数组中查找目标值)
- DataRowView 笔记
- 【附源码】计算机毕业设计SSM汽车租赁系统
- 51单片机之红外通信
- 华盛顿大学计算机专业gpa,华盛顿大学计算机专业相关介绍
- 2017年2月16日-----------乱码新手自学.net 之MVC模型
- grub4dos引导Linux失败,Grub4dos引导Ubuntu
- 经典ps教程600例 打造ps高手
- 使用”网上办税厅”节约大厅办税时间的技巧
- 用canvas实现一个简易绘图工具
- JS的正则表达式 (转载) 真好 学习下
热门文章
- 数据流图软件_软件工程导论知识点梳理之概念题
- PHP去除换行符的方法小结(PHP_EOL变量的使用)
- php pdf 加密 签名 时间戳,在现有PDF签名上添加签名时间戳
- 怎么返回404_seo如果出现404页面怎么办?如何解决?
- java file类详解_Java File类详解及IO介绍及使用
- linux path在哪个文件夹,linux PATH环境变量全解析
- ios 自定义拍照页面_无需解锁也能使用的iOS实用小组件
- python适配器模式角色_Python设计模式之适配器模式原理与用法详解
- linux dns chroot,系统运维|在 CentOS7.0 上搭建 Chroot 的 Bind DNS 服务器
- mybatis plus generator配置