因为项目的原因,需要使用到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中语言检测模型训练和模型的使用相关推荐

  1. Pytorch模型训练和模型验证

    文章目录 前言 模型训练套路 1.准备数据集 2.训练数据集和测试数据集的长度 3.搭建网络模型 4.创建网络模型.损失函数以及优化器 5.添加tensorboard 6.设置训练网络的一些参数 7. ...

  2. YOLOV3 模型训练及模型部署(YOLO动态链接库的封装和调用)

    YOLOV3 模型训练及模型部署(YOLO动态链接库的封装和调用) 一. 配置环境 windows10 + VS2017 community cuda10.0.130_411.31 cunn-10.0 ...

  3. tensorflow精进之路(二十四)——Object Detection API目标检测(中)(COCO数据集训练的模型—ssd_mobilenet_v1_coco模型)

    1.概述 上一讲简单的讲了目标检测的原理以及Tensorflow Object Detection API的安装,这一节继续讲Tensorflow Object Detection API怎么用. 2 ...

  4. Spark MLlib中支持二次训练的模型算法

    在Spark MLlib中可以做二次训练的模型 大家好,我是心情有点低落的一拳超人 今天给大家带来我整理的Spark 3.0.1 MLlib库中可以做二次训练的模型总结,首先给大家介绍一下什么是二次训 ...

  5. python模型训练_python模型训练与预测练习

    python模型训练与预测练习 发布时间:2018-03-09 17:49, 浏览次数:368 , 标签: python 我是照着YouTube上的机器学习视频做的,视频里讲的比较简洁,下来自己做遇到 ...

  6. Kaggle经典数据分析项目:泰坦尼克号生存预测!1. 数据概述与可视化2. 数据预处理3. 模型训练4. 模型优化(调参)

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习 ,不错过 Datawhale干货 作者:陈锴,中山大学,Datawhale成员 最近有很多读者留言,希望 ...

  7. 一文实现yolov5实例分割(数据标注、标签转换、模型训练、模型推理)

    前言 本文记录一下yolov5实例分割的完全过程,包括制作自己的数据集,标签转换,然后训练模型,测试模型效果. 本文更推荐在电脑端阅读~

  8. 如何用java语言调用tensorflow训练好的模型

    1.TensorFlow的训练模型在Android和Java的应用及调用 2.tensorflow的python离线训练java在线预测方案 3.tensorflow训练的模型在java中的使用 4. ...

  9. Java 并发编程解析 | 如何正确理解Java领域中的多线程模型,主要用来解决什么问题?

    苍穹之边,浩瀚之挚,眰恦之美: 悟心悟性,善始善终,惟善惟道! -- 朝槿<朝槿兮年说> 写在开头 我国宋代禅宗大师青原行思在<三重境界>中有这样一句话:" 参禅之初 ...

最新文章

  1. The key of C# 学习笔记I-II
  2. 生物识别技术在我们日常生活中的应用
  3. linux grep sed awk
  4. jsp中文件下载的实现
  5. Linux内核调试技术——kprobe使用与实现
  6. shell脚本详解(六)——数组简介和排序算法
  7. 深入理解Android 卷I 提供预定
  8. javascript中数组的22种方法
  9. 在servlet中或者在filter中获取spring容器中的bean
  10. Leetcode每日一题:1095.find-in-mountain-array(山脉数组中查找目标值)
  11. DataRowView 笔记
  12. 【附源码】计算机毕业设计SSM汽车租赁系统
  13. 51单片机之红外通信
  14. 华盛顿大学计算机专业gpa,华盛顿大学计算机专业相关介绍
  15. 2017年2月16日-----------乱码新手自学.net 之MVC模型
  16. grub4dos引导Linux失败,Grub4dos引导Ubuntu
  17. 经典ps教程600例 打造ps高手
  18. 使用”网上办税厅”节约大厅办税时间的技巧
  19. 用canvas实现一个简易绘图工具
  20. JS的正则表达式 (转载) 真好 学习下

热门文章

  1. 数据流图软件_软件工程导论知识点梳理之概念题
  2. PHP去除换行符的方法小结(PHP_EOL变量的使用)
  3. php pdf 加密 签名 时间戳,在现有PDF签名上添加签名时间戳
  4. 怎么返回404_seo如果出现404页面怎么办?如何解决?
  5. java file类详解_Java File类详解及IO介绍及使用
  6. linux path在哪个文件夹,linux PATH环境变量全解析
  7. ios 自定义拍照页面_无需解锁也能使用的iOS实用小组件
  8. python适配器模式角色_Python设计模式之适配器模式原理与用法详解
  9. linux dns chroot,系统运维|在 CentOS7.0 上搭建 Chroot 的 Bind DNS 服务器
  10. mybatis plus generator配置