目录

Part-of-Speech Tagger

模型训练

词性标注


Part-of-Speech Tagger

词性标记器根据词本身和词的上下文标记单词的类型。OpenNLP POS标记器使用概率模型来预测标签集中词的类型。为了限制词的类型范围,可以使用字典来提高标记器的标记和运行时效率。

常用的词性简写参考:

https://www.ling.upenn.edu/courses/Fall_2003/ling001/penn_treebank_pos.html

训练可以用以下带标签格式的语料进行;词和词性用下划线”_”连接,词和词之间用空格分开。

 About_IN 10_CD Euro_NNP ,_, I_PRP reckon_VBP ._.
That_DT sounds_VBZ good_JJ ._.

模型训练

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.postag.POSEvaluator;import opennlp.tools.postag.POSModel;import opennlp.tools.postag.POSSample;import opennlp.tools.postag.POSTaggerFactory;import opennlp.tools.postag.POSTaggerME;import opennlp.tools.postag.WordTagSampleStream;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 PartOfSpeechTaggingTrain {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 + "part-of-speech-taggin.txt";//训练后模型的保存路径String modelPath = modelResourcesDir + "en-pos-maxent-my.bin";//按行读取数据InputStreamFactory inputStreamFactory = new MarkableFileInputStreamFactory(new File(filePath));ObjectStream<String> lineStream = new PlainTextByLineStream(inputStreamFactory, StandardCharsets.UTF_8);//按行读取数据ObjectStream<POSSample> sampleStream = new WordTagSampleStream(lineStream);POSTaggerFactory factory =new POSTaggerFactory();//训练模型POSModel  model =POSTaggerME.train("en",sampleStream,  TrainingParameters.defaultParams(),  factory);//保存模型FileOutputStream fos=new FileOutputStream(new File(modelPath));OutputStream modelOut = new BufferedOutputStream(fos);model.serialize(modelOut);//评估模型POSEvaluator evaluator = new POSEvaluator(new POSTaggerME(model),null);evaluator.evaluate(sampleStream);Double result = evaluator.getWordAccuracy();System.out.println("正确标记的次数:"+result.toString());}}

词性标注

import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import opennlp.tools.postag.POSModel;import opennlp.tools.postag.POSTaggerME;public class PartOfSpeechTaggingPredit {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-pos-maxent.bin";InputStream modelIn = new FileInputStream(modelPath) ;//加载模型POSModel model = new POSModel(modelIn);//实例化模型POSTaggerME tagger = new POSTaggerME(model);//词性检测,返回的是一个概率数组String sent[] = new String[]{"Most", "large", "cities", "in", "the", "US", "had","morning", "and", "afternoon", "newspapers", "."};      String tags[] = tagger.tag(sent);for(String str:tags){System.out.print(str+",");}System.out.println();//返回概率double probs[] = tagger.probs();for(double str:probs){System.out.print(str+",");}}}

[NLP]OpenNLP词性标注器的使用相关推荐

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

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

  2. 放弃幻想,全面拥抱Transformer:NLP三大特征抽取器(CNN/RNN/TF)比较

    作者 | 张俊林,中国中文信息学会理事,目前在新浪微博 AI Lab 担任资深算法专家.在此之前,张俊林曾经在阿里巴巴任资深技术专家,以及在百度和用友担任技术经理及技术总监等职务.同时他是技术书籍&l ...

  3. NLP三大特征抽取器(CNN/RNN/TF)比较:全面拥抱Transformer

    作者 | 张俊林,中国中文信息学会理事,目前在新浪微博 AI Lab 担任资深算法专家.在此之前,张俊林曾经在阿里巴巴任资深技术专家,以及在百度和用友担任技术经理及技术总监等职务.同时他是技术书籍&l ...

  4. python学到哪知道baseline_Python NLTK学习6(创建词性标注器)

    Python NLTK学习6(创建词性标注器) 发表于: 2017年1月5日  阅读: 6487 除特别注明外,本站所有文章均为小杰Code原创 本系列博客为学习<用Python进行自然语言处理 ...

  5. NLTK学习之三:文本分类与构建基于分类的词性标注器

    1 有监督的分类 1.1 分类相关概念 分类是为给定输入选择正确的类标签的任务.比如判断一封Email是否是垃圾邮件,确定一篇新闻的主题. 如果分类需要人工标准的标签进行训练,则称为有监督分类.有监督 ...

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

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

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

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

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

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

  9. NLP大杀器BERT模型解读

    谷歌研究人员通过新的BERT模型在11项NLP任务中夺得STOA结果,这在自然语言处理学界以及工业界都引起了不小的热议.作者通过在33亿文本的语料上训练语言模型,再分别在不同的下游任务上微调,这样的模 ...

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

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

最新文章

  1. 根据类名与字段名称取值(可用于循环取实体所有值非常好用)
  2. 破windows xp登陆密码
  3. 使用logminer分析日志文件
  4. helm安装postgres_Helm 入门介绍 Kubernetes 上的包管理软件
  5. 烂泥:perl中CPAN的安装
  6. 【华为云技术分享】使用CloudIDE快速体验基于华为云ModelArts SDK的AI开发
  7. XmlDocument,XDocument相互转换
  8. NNIE-lite 为算法工程师而生
  9. 基于SOM算法的Iris数据分类
  10. 学python为何不好找工作呢?
  11. 中国软件:10个人 , 20年坎坷路!
  12. 安装JDK7和Tomcat8.5后,Tomcat服务启动不了
  13. 自适应控制设计(二)
  14. 骨传导耳机哪个牌子好?最值得买的骨传导耳机
  15. 正则计算器版中版之最后一版!
  16. 【计算机网络】抓取路由器包
  17. echarts 地图去除点击事件_echarts 地图 鼠标移出地图后的事件要怎么写
  18. 2022校招百度内推码 oi4rhj
  19. 使用mock进行数据拦截实战感悟
  20. RFID生产现场管理解决方案产生背景

热门文章

  1. Go切片(slices)
  2. 202101汇率换算
  3. 团队管理,领导的“无为”就是最大“有为”
  4. RestTemplate 下载文件
  5. Flink在流处理上的Source和sink操作、Flink--sink到kafka
  6. 【WEB】web www http html hypermedia hypertext 技术名词的意思
  7. 【Windows系统资源】​​​​​​​iexplore.exe命令行参数解释
  8. texmacs转到latex(winEdt)
  9. Playrix Codescapes Cup (Codeforces Round #413, rated, Div. 1 + Div. 2) F. Beautiful fountains rows
  10. Django使用manager.py 运行项目,或者uWSGI进行部署项目,使用Nginx进行负载均衡