R+openNLP︱openNLP的六大可实现功能及其在R语言中的应用
每每以为攀得众山小,可、每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~
———————————————————————————
openNLP是NLP中比较好的开源工具,R语言中有openNLP packages,但是呢,貌似对中文的支持并不好,笔者试了试,发现结果并不如意。但是也算认识了一番,就来介绍一下。
一些内容转载于白宁超老师:OpenNLP:驾驭文本,分词那些事
————————————————————————————————————————
一、openNLP简介
维基百科:Apache OpenNLP库是一个基于机器学习的自然语言文本处理的开发工具包,它支持自然语言处理中一些共有的任务,例如:标记化、句子分割、词性标注、固有实体提取(指在句子中辨认出专有名词,例如:人名)、浅层分析(句字分块)、语法分析及指代。这些任务通常都需要较为先进的文字处理服务功能。
官方文档:Apache的OpenNLP库是自然语言文本的处理基于机器学习的工具包。它支持最常见的NLP任务,如断词,句子切分,部分词性标注,命名实体提取,分块,解析和指代消解。这些任务通常需要建立更先进的文字处理服务。OpenNLP还包括最大熵和基于感知机器学习。该OpenNLP项目的目标是创造上述任务的成熟工具包。一个附加的目的是提供一种大量预建模型为各种语言,以及这些模型衍生自注释文本资源。
- 开发者: Apache Software Foundation
- 稳定版本: 1.5.2-incubating(2011年11月28日,5年前)
- 开发状态: Active
- 编程语言: Java
- 类型: 自然语言处理
- 网站: http://incubator.apache.org/opennlp/
————————————————————————————————————————
二、六大功能——openNLP packages
R中的openNLP主要有以下几个功能:
序列标注(maxent chunker)、实体命名识别(maxent entity annotator)、词性标注器(ops tag annotator)、句子探测器(sent toen annotator)、解析器(parse annotator)、标记生成器(maxent word token annotator)
1、序列标注(maxent chunker)
文本分块由除以单词句法相关部分,如名词基,动词基的文字,但没有指定其内部结构,也没有其在主句作用。
R语言中函数名称:Maxent_Chunk_Annotator()——Apache OpenNLP Maxent chunker.
2、实体命名识别(maxent entity annotator)
名称查找器可检测文本命名实体和数字。为了能够检测实体名称搜索需要的模型。该模型是依赖于语言和实体类型这是训练。所述OpenNLP项目提供了许多这些各种免费提供的语料库训练有素预训练名取景模式。后面会提到如何下载。
根据不同的模型可以查找人名、地名等实体名。
R语言中函数名称:Maxent_Entity_Annotator—— Apache OpenNLP Maxent namefinder.
3、词性标注器(ops tag annotator)
语音标记器的部分标记符号与基于符号本身和符号的上下文中它们的相应字类型。符号可能取决于符号和上下文使用多个POS标签。该OpenNLP POS标注器使用的概率模型来预测正确的POS标记出了标签组。为了限制可能的标记的符号标记字典可以使用这增加了捉人者的标记和运行时性能。
R语言中函数名称:pos_tag_annotator——Apache OpenNLP MaxentPart of Speech tagger.
4、句子探测器(sent toen annotator)
功能介绍:
句子检测器是用于检测句子边界。
句子探测器返回一个字符串数组。
R语言中函数名称:sent_token_annotator——Apache OpenNLP Maxentsentence detector
5、解析器(parse annotator)、针对english
尝试解析器最简单的方法是在命令行工具。该工具仅用于演示和测试。请从我们网站上的英文分块解析器模型,并用以下命令启动解析工具。
R语言中函数名称:Parse_Annotator—— Apache OpenNLPchunking parser for English
6、标记生成器/断句/分词(maxent word token annotator)
OpenNLP断词段输入字符序列为标记。常是这是由空格分隔的单词,但也有例外。例如,“isn't”被分割为“is”与“n't",因为它是AA简要格式”isn't“我们的句子分为以下标记:符号通常是词语,标点符号,数字等OpenNLP提供多种标记生成器的实现:
- 空白标记生成器 - 一个空白标记生成器,非空白序列被确定为符号
- 简单的标记生成器 - 一个字符类标记生成器,同样的字符类的序列标记
- 可学习标记生成器 - 一个最大熵标记生成器,检测基于概率模型符号边界
R语言中函数名称:word_token_annotator——e Apache OpenNLP Maxenttokenizer
————————————————————————————————————————
三、openNLP在R中的实现以及使用心得
1、使用前预加载
openNLP基于众多语料训练了很多已有的实体词、取词场景等,在R中需要到指定网址下载(http://datacube.wu.ac.at/),这里笔者也附上openNLP的官方链接(http://opennlp.sourceforge.net/models-1.5/)
![]() |
openNLPmodels.da_1.5-2.tar.gz | 2015-04-08 09:56 | 1.2M | 基于conllx ddt 数据的分词、句子探测器、POS标注 |
![]() |
openNLPmodels.de_1.5-2.tar.gz | 2015-04-08 09:56 | 8.0M | tiger data数据集分词、句子探测器、POS标注 |
![]() |
openNLPmodels.en_1.5-1.tar.gz | 2015-04-08 09:57 | 74M | opennlp training data分词、句子探测器、POS标注、命名实体识别、解析器、序列标注 |
![]() |
openNLPmodels.es_1.5-1.tar.gz | 2015-04-08 09:57 | 3.8M | conll02 shared task data的命名实体识别 |
![]() |
openNLPmodels.it_1.5-1.tar.gz | 2015-04-08 09:57 | 25M | |
![]() |
openNLPmodels.nl_1.5-2.tar.gz | 2015-04-08 09:57 | 4.1M | conllx alpino data的分词、命名实体、POS标注 |
![]() |
openNLPmodels.pt_1.5-2.tar.gz | 2015-04-08 09:57 | 2.1M | conllx bosque data的POS标注、句子探测、分词 |
![]() |
openNLPmodels.sv_1.5-2.tar.gz | 2015-04-08 09:57 | 2.4M |
其中词性标注有:最大熵模型(Part of Speech Tagger)、感知器模型Perceptron model(pos标注),R只有前者。
从大小来看也知道en是最全面的,所以要下载。
下载的方式跟调用包一样方便:
install.packages("foo", repos = "http://datacube.wu.ac.at/", type = "source")
其中foo代表着你要下载内容的名称,比如:openNLPmodels.en
2、R语言实践——官方案例
(1)先得到序列:
s <- paste(c("Pierre Vinken, 61 years old, will join the board as a ", "nonexecutive director Nov. 29.\n", "Mr. Vinken is chairman of Elsevier N.V., ","the Dutch publishing group."), collapse = "") s <- as.String(s) #library(NLP)
(2)设置分词器以及句子探测器:
sent_token_annotator <- Maxent_Sent_Token_Annotator() word_token_annotator <- Maxent_Word_Token_Annotator() pos_tag_annotator <- Maxent_POS_Tag_Annotator()
(3)解析分词、词性、整句到a3:
a3 <- annotate(s, list(sent_token_annotator, word_token_annotator, pos_tag_annotator))
(4)进行后续的分析(序列标注、命名实体识别):
序列标注的code:
annotate(s, Maxent_Chunk_Annotator(probs = TRUE), a3)
实体识别的code:
annotate(s, Maxent_Entity_Annotator(probs = TRUE), a2)
其中probs代表是否需要从最大熵模型中提取出概率。
参考文献:
1、open在案例:OpenNLP Tutorial
2、openNLP在R中的数据集:http://datacube.wu.ac.at/
3、R中的openNLP文档:https://cran.r-project.org/web/packages/openNLP/openNLP.pdf
每每以为攀得众山小,可、每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~
———————————————————————————
R+openNLP︱openNLP的六大可实现功能及其在R语言中的应用的更多相关文章
- Android 实现切换主题皮肤功能(类似于众多app中的 夜间模式,主题包等)
首先来个最简单的一键切换主题功能,就做个白天和晚上的主题好了. 先看我们的styles文件: <resources> <!-- Base application theme. --& ...
- R语言中的字符串处理函数
内容概览 尽管R是一门以数值向量和矩阵为核心的统计语言,但字符串有时候也会在数据分析中占到相当大的份量. R语言是一个擅长处理数据的语言,但是也不可避免的需要处理一些字符串(文本数据).如何高 ...
- R语言中知识点总结(二)
一些函数不知道什么意思要查,看数值例子,做笔记,知道函数的功能,函数和返回值. 网页上查找关键词,巧用查找(ctrl+F) 数据读取处理,有read.table read R-读取数据(导入csv ...
- R语言中常用包(二)
数据导入 以下R包主要用于数据导入和保存数据 feather:一种快速,轻量级的文件格式.在R和python上都可使用readr:实现表格数据的快速导入.中文介绍可参考这里readxl:读取Micro ...
- R语言中的数据处理包dplyr、tidyr笔记
R语言中的数据处理包dplyr.tidyr笔记 dplyr包是Hadley Wickham的新作,主要用于数据清洗和整理,该包专注dataframe数据格式,从而大幅提高了数据处理速度,并且提供了 ...
- R语言学习笔记1——R语言中的基本对象
R语言,一种自由软件编程语言与操作环境,主要用于统计分析.绘图.数据挖掘.R本来是由来自新西兰奥克兰大学的Ross Ihaka和Robert Gentleman开发(也因此称为R),现在由“R开发核心 ...
- 【R笔记】R语言中的字符串处理函数
内容概览 尽管R是一门以数值向量和矩阵为核心的统计语言,但字符串同样极为重要.从医疗研究数据里的出生日期到文本挖掘的应用,字符串数据在R程序中使用的频率非常高.R语言提供了很多字符串操作函数,本文仅简 ...
- R语言中的机器学习包
R语言中的机器学习包 Machine Learning & Statistical Learning (机器学习 & 统计学习) 网址:http://cran.r-project ...
- 分类-回归树模型(CART)在R语言中的实现
分类-回归树模型(CART)在R语言中的实现 CART模型 ,即Classification And Regression Trees.它和一般回归分析类似,是用来对变量进行解释和预测的工具,也是数据 ...
随机推荐
- 使用autoc js生成文章目录(侧边)导航栏
介绍: autocjs 是一个专门用来生成文章目录(Table of Contents)导航的工具.autocjs 会查找文章指定区域中的所有 h1~h6 的标签,并自动分析文章的层次结构,生成文章的 ...
- java 如何将 word,excel,ppt如何转pdf --openoffice (1)
承上启下,可折叠 上一篇说的是:服务器是windows server时,用jacob将msoffice(指的是word,excel,ppt)转换成pdf. 若被部署项目的服务器是centOS等linu ...
- 编译和解释性语言和python运行方式
1.编译型语言和解释性语言 编译型语言:在执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了.程序执行效率高,依赖编译器,跨平台性差些.如C. ...
- 【Java】泛型学习笔记
参考书籍 <Java核心技术:卷1> 泛型, 先睹为快 先通过一个简单的例子说明下Java中泛型的用法: 泛型的基本形式类似于模板, 通过一个类型参数T, 你可以"私人定制&qu ...
- [TFRecord格式数据]利用TFRecords存储与读取带标签的图片
利用TFRecords存储与读取带标签的图片 原创文章,转载请注明出处~ 觉得有用的话,欢迎一起讨论相互学习~Follow Me TFRecords其实是一种二进制文件,虽然它不如其他格式好理解,但是 ...
- python小白之路
阅读目录: 第一章:计算机基础 计算机硬件.操作系统.网络协议 第二章:python基础 初识python.常量变量.输入输出运算符.条件与循环语句.数字与字符串.列表与字典.元组与集合.阶段小测.字 ...
- 使用TensorFlow Object Detection API+Google ML Engine训练自己的手掌识别器
上次使用Google ML Engine跑了一下TensorFlow Object Detection API中的Quick Start(http://www.cnblogs.com/take-fet ...
- es随想一
一.安全问题 前段时间网上看到的,大量的MongoDB服务器和ElasticSearch服务器被黑客攻击,留下勒索信息. ElasticSearch的2种客户端连接方式,transport方式默认的9 ...
- 洛谷 P3711 仓鼠的数学题 [伯努利数 fft]
P3711 仓鼠的数学题 题意: \[ S_m(x) = \sum_{k=0}^x k^m, 0^0=1\quad 求 \sum_{m=0}^n S_m(x)a_m \] 的答案多项式\(\sum_{ ...
- element ui 1.4 升级到 2.0.11
公司的框架 选取的是 花裤衩大神开源的 基于 element ui + Vue 的后台管理项目, 项目源码就不公开了,记录 分享下 步骤 1. 卸载 element ui 1.4的依赖包 2. 卸载完 ...