目录

Sentence Detector

模型训练

语句检测


Sentence Detector

语句检测器,OpenNLP语句检测器可以检测标点字符是否标记了句子的结尾。在这个意义上,句子被定义为两个标点符号之间最长的空白字符序列。第一句和最后一句是对这条规则的例外。第一个非空白字符被假定为句子的开头,最后一个非空白字符被假定为句子的结尾。

通常句子检测是在文本被分词之前完成的,但是也可以先执行分词,让句子检测器处理已经分词的文本。OpenNLP语句检测器无法根据句子内容识别句子边界。如文章中的标题被误认为是第一句话的第一部分。OpenNLP中的大多数组件都期望输入被分割成句子。

Sentence Detector的输入是一段文字,输出为每个句子一行。

模型训练

import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.nio.charset.StandardCharsets;import opennlp.tools.sentdetect.SentenceDetectorFactory;import opennlp.tools.sentdetect.SentenceDetectorME;import opennlp.tools.sentdetect.SentenceModel;import opennlp.tools.sentdetect.SentenceSample;import opennlp.tools.sentdetect.SentenceSampleStream;import opennlp.tools.util.InputStreamFactory;import opennlp.tools.util.MarkableFileInputStreamFactory;import opennlp.tools.util.ObjectStream;import opennlp.tools.util.PlainTextByLineStream;import opennlp.tools.util.TrainingParameters;public class SentenceDetectorTrain {public static void main(String[] args) throws IOException {// TODO Auto-generated method stubString rootDir = System.getProperty("user.dir") + File.separator;String fileResourcesDir = rootDir + "resources" + File.separator;String modelResourcesDir = rootDir + "opennlpmodel" + File.separator;//训练数据的路径String filePath = fileResourcesDir + "sentenceDetector.txt";//训练后模型的保存路径String modelPath = modelResourcesDir + "da-sent-my.bin";InputStreamFactory inputStreamFactory = new MarkableFileInputStreamFactory(new File(filePath));ObjectStream<String> lineStream = new PlainTextByLineStream(inputStreamFactory, StandardCharsets.UTF_8);//按行读取数据ObjectStream<SentenceSample> sampleStream = new SentenceSampleStream(lineStream);SentenceDetectorFactory sentenceFactory=new SentenceDetectorFactory();SentenceModel model = SentenceDetectorME.train("en", sampleStream, sentenceFactory, TrainingParameters.defaultParams());OutputStream modelOut = new BufferedOutputStream(new FileOutputStream(modelPath));model.serialize(modelOut);} }

语句检测

import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import opennlp.tools.sentdetect.SentenceDetectorME;import opennlp.tools.sentdetect.SentenceModel;public class SentenceDetectorPredit {public static void main(String[] args) throws IOException {// TODO Auto-generated method stubString rootDir = System.getProperty("user.dir") + File.separator;String modelResourcesDir = rootDir + "opennlpmodel" + File.separator;String modelPath = modelResourcesDir + "da-sent.bin";InputStream modelIn = new FileInputStream(modelPath) ;//加载模型SentenceModel model = new SentenceModel(modelIn);//实例化模型SentenceDetectorME sentenceDetector = new SentenceDetectorME(model);//语句检测String sentences[] = sentenceDetector.sentDetect("First sentence. Second sentence. ");for(String str:sentences){System.out.println(str);}}}

[NLP]OpenNLP语句检测器的使用相关推荐

  1. [NLP]OpenNLP语言检测器的使用

    目录 Language Detector 模型训练 语言类型预测 Language Detector 语言检测器,属于分类范畴.即OpenNLP语言检测器根据模型的能力用ISO-639-3(国际语种代 ...

  2. [NLP]OpenNLP块检测器(Chunker)的使用

    Chunker 分块是将文章的内容分成句法相关的词组,如名词组.动词组,但不指定它们的内部结构,也不说明它们在主句中的作用. 训练数据的输入格式如下: Rockwell NNP B-NP Intern ...

  3. [NLP]OpenNLP词形还原器(Lemmatizer)的使用

    Lemmatizer 词形还原,把用POS tagger标注格式的词还原为标注前的格式.如 输入: Rockwell_NNP International_NNP Corp._NNP 's_POS Tu ...

  4. [NLP]OpenNLP命名实体识别(NameFinder)的使用

    目录 Name Finder 模型训练 命名识别 Name Finder 命名查找器可以检测文本中的命名实体和数字.为了能够检测到实体,命名查找器需要一个模型.模型依赖于它被训练的语言和实体类型.Op ...

  5. [NLP]OpenNLP标记器的使用

    目录 Tokenizer 模型训练 句子分词 Tokenizer OpenNLP标记器将输入字符序列分段为标记.标记通常是单词.标点符号.数字等.标记化是一个两阶段的过程:首先,确定句子边界,然后识别 ...

  6. [NLP]OpenNLP Maven工程的依赖

    目录 OpenNLP Tools依赖 OpenNLP UIMA Annotators 依赖 OpenNLP Morfologik AddOn依赖 OpenNLP Brat Annotator依赖 Op ...

  7. Apache OpenNLP

    Apache OpenNLP库是一种基于机器学习的工具包,用于处理自然语言文本. 它支持最常见的NLP任务,如标记化,句子分割,词性标记,命名实体提取,分块,解析和参考解析. 通常需要这些任务来构建更 ...

  8. 小米自然语言处理工程师招聘条件与自己的对应整理

    昨天就发布了,看的人挺多,自己看了一下发现直接放整理有点莫名其妙,先把招聘条件整体图片放上来吧,会持续更新. ​​​​​​​ 计算机或数学相关专业,硕士及以上学历 熟悉自然语言处理领域基础理论和常用方 ...

  9. Python 利用数据分布直方图来确定合适的阈值

    背景 在数据分析中总会碰见 阈(yu)值 这个问题,有人可能就是拍脑袋,根据自己的经验随便确定一个值,而且效果还不错.但既然是在分析数据,那就要确定一个合适的值来作为阈值,这样比较有说服力,更 mak ...

最新文章

  1. 自动写作、RNN基本原理以及LSTM的基本原理
  2. 《从问题到程序:用Python学编程和计算》——第2章 计算和编程初步 2.1 数值表达式和算术...
  3. 2021.4.7 美团买菜后端开发实习生(二面)(含总结)(已oc)
  4. 【Android 插件化】Hook 插件化框架 ( 通过反射获取 “宿主“ 应用中的 Element[] dexElements )
  5. 【MORE协议】基于MORE的改进协议设计的MATLAB仿真
  6. CTF Re-Python z3库的使用
  7. 计算机二级vb考试查分,全国计算机二级考试VB程序设计复习试题
  8. C++使用位操作将数字乘以7的算法实现(附完整源码)
  9. 携程基于Quasar协程的NIO实践
  10. python3.6字典有序_为什么Python3.6字典变得有序了?
  11. Vagrant 构建 LNMP 一致环境
  12. 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛 E. Half-consecutive Numbers
  13. 10. 大型网站核心架构要素
  14. 37. customer payment(1)
  15. R语言使用mean函数计算dataframe指定数据列的均值
  16. linux格式化硬盘fat32,linux格式化硬盘教程 linux格式化硬盘教程是什么
  17. 设计模式之里氏宗青出于蓝而胜于蓝
  18. springboot冷链物流信息调度系统毕业设计源码210951
  19. 写毕业论文更新目录时,如何让格式不会变?
  20. 搜狗拼音输入法2015 v7.2f 官方版

热门文章

  1. template模板函数
  2. transform子元素,绝对定位失效
  3. DatePicker 和 DatePickerDialog的基本使用方法
  4. 银联接口的一些加密方式
  5. 互联网寒冬,程序员该怎样突破重围?
  6. 在Vue.js中使用Mixin
  7. [NOI2015Day1]解题报告
  8. unity, StartCoroutine and StopCoroutine
  9. 使用mfc修改窗口背景,图表
  10. Android开源库--Gson谷歌官方json解析库