Chunker

分块是将文章的内容分成句法相关的词组,如名词组、动词组,但不指定它们的内部结构,也不说明它们在主句中的作用。
训练数据的输入格式如下:
Rockwell NNP B-NP
International NNP I-NP
Corp. NNP I-NP
's POS B-NP
Tulsa NNP I-NP
unit NN I-NP
said VBD B-VP
it PRP B-NP
signed VBD B-VP
a DT B-NP
tentative JJ I-NP
agreement NN I-NP
extending VBG B-VP
its PRP$ B-NP
contract NN I-NP
with IN B-PP
Boeing NNP B-NP
Co. NNP I-NP
to TO B-VP
provide VB I-VP
structural JJ B-NP
parts NNS I-NP
for IN B-PP
Boeing NNP B-NP
's POS B-NP
747 CD I-NP
jetliners NNS I-NP

标注说明:
用chunker分块后的标志由两部分组成:块在原句中的位置-词性
如B-NP的B表示该词在句子开始的位置,NP表示名词;I-NP的I表示该词在句中中间的位置,NP表示名词。

  1. \B 标注开始
  2. \I 标注的中间
  3. \E 标注的结束
  4. NP 名词块
  5. VB 动词块

模型训练

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.chunker.ChunkSample;
import opennlp.tools.chunker.ChunkSampleStream;
import opennlp.tools.chunker.ChunkerEvaluator;
import opennlp.tools.chunker.ChunkerFactory;
import opennlp.tools.chunker.ChunkerME;
import opennlp.tools.chunker.ChunkerModel;
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;
import opennlp.tools.util.eval.FMeasure;public class ChunkerTrain {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 + "chunker.txt";//训练后模型的保存路径String modelPath = modelResourcesDir + "en-chunker-my.bin";//按行读取数据InputStreamFactory inputStreamFactory = new MarkableFileInputStreamFactory(new File(filePath));ObjectStream<String> lineStream = new PlainTextByLineStream(inputStreamFactory, StandardCharsets.UTF_8);//按行读取数据ObjectStream<ChunkSample> sampleStream = new ChunkSampleStream(lineStream);ChunkerFactory factory =new ChunkerFactory();//训练模型ChunkerModel model =ChunkerME.train("en",sampleStream, TrainingParameters.defaultParams(), factory);//保存模型FileOutputStream fos=new FileOutputStream(new File(modelPath));OutputStream modelOut = new BufferedOutputStream(fos);model.serialize(modelOut);  //模型评估ChunkerEvaluator evaluator=new ChunkerEvaluator(new ChunkerME(model));FMeasure fm=evaluator.getFMeasure();System.out.println("FMeasure:"+fm.getFMeasure()+";precision="+fm.getPrecisionScore()+";recall"+fm.getRecallScore());      }
}

词句分块


```java
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import opennlp.tools.chunker.ChunkerME;
import opennlp.tools.chunker.ChunkerModel;
import opennlp.tools.util.Sequence;public class ChunkerPredit {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 + "en-chunker.bin";InputStream modelIn = new FileInputStream(modelPath) ;//加载模型ChunkerModel model = new ChunkerModel(modelIn);//实例化模型ChunkerME chunker = new ChunkerME(model);//分块检测String sent[] = new String[] { "Rockwell", "International", "Corp.", "'s","Tulsa", "unit", "said", "it", "signed", "a", "tentative", "agreement","extending", "its", "contract", "with", "Boeing", "Co.", "to","provide", "structural", "parts", "for", "Boeing", "'s", "747","jetliners", "." };String pos[] = new String[] { "NNP", "NNP", "NNP", "POS", "NNP", "NN","VBD", "PRP", "VBD", "DT", "JJ", "NN", "VBG", "PRP$", "NN", "IN","NNP", "NNP", "TO", "VB", "JJ", "NNS", "IN", "NNP", "POS", "CD", "NNS","." };String tag[] = chunker.chunk(sent, pos);//获取概率参数double chunkerProbs[] = chunker.probs();for(String str:tag){System.out.print(str+",");} System.out.println();for(double pro:chunkerProbs){System.out.print(pro+",");}Sequence[] sentens = chunker.topKSequences(sent, pos);System.out.println();for(Sequence se:sentens){System.out.print(se+",");}}
}

[NLP]OpenNLP块检测器(Chunker)的使用相关推荐

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

    目录 Sentence Detector 模型训练 语句检测 Sentence Detector 语句检测器,OpenNLP语句检测器可以检测标点字符是否标记了句子的结尾.在这个意义上,句子被定义为两 ...

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

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

  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. 斯坦福全球AI报告:人才需求两年暴增35倍,中国机器人部署量涨500%

    来源:量子位 作者:安妮 栗子 乾明 一璞 刚刚,斯坦福全球AI报告正式发布. 从去年开始,斯坦福大学主导.来自MIT.OpenAI.哈佛.麦肯锡等机构的多位专家教授,组建了一个小组,每年发布AI i ...

  9. 基于spaCy的领域命名实体识别

    基于spaCy的命名实体识别 ----以"大屠杀"领域命名实体识别研究为例 作者: Dr. W.J.B. Mattingly Postdoctoral Fellow at the ...

最新文章

  1. 图像处理 100 问!!
  2. 自定义AlertView
  3. VS.Net 开发 MSN一样缓慢出来的提示信息的方法
  4. 《绅士》Typecho个人博客模板主题
  5. redis连接数据库进行操作
  6. python replace替换多个字符_「Python 秘籍」字符串忽略大小写的搜索替换
  7. inno setup 打包工具介绍
  8. Labwindows_cvi基于C语言程控矢量网络分析仪
  9. ps_裁剪出圆形区域并将多余透明去掉
  10. 敏捷史话(一):用一半的时间做两倍的事——Scrum之父Jeff Sutherland的传奇人生
  11. Python3.6-Flask:制作一个语音对话问答机器人系统(网页版)
  12. imperva 默认策略添加例外
  13. 单片机毕业设计 stm32智能路灯设计与实现
  14. Idea 打包JAVA项目
  15. 数据结构 期末复习主观题练习题(答案版)
  16. NGNIX在CENTEROS 下部署
  17. SAAS云平台搭建札记: (一) 浅论SAAS多租户自助云服务平台的产品、服务和订单
  18. 将idea设置为中文
  19. 2021年福建省安全员B证(项目负责人)考试试题及福建省安全员B证(项目负责人)作业模拟考试
  20. Linux下c语言文本方式文件读取

热门文章

  1. MYSQL数据库表操作pdf
  2. K近邻模型(k-NN)
  3. python【第十四篇】HTML基础
  4. 和我一起打造个简单搜索之ElasticSearch入门
  5. 聊聊spring cloud gateway的SetStatusGatewayFilter
  6. git push本地代码到github出错
  7. 深入探讨运维驱动的可监控性设计
  8. [转]mysql慢查询日志
  9. 过滤HTML标记、HTML注释、“!@#¥%”等非法字符
  10. 给在校大学生的三点学习建议^