每每以为攀得众山小,可、每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~

———————————————————————————

openNLP是NLP中比较好的开源工具,R语言中有openNLP packages,但是呢,貌似对中文的支持并不好,笔者试了试,发现结果并不如意。但是也算认识了一番,就来介绍一下。

一些内容转载于白宁超老师:OpenNLP:驾驭文本,分词那些事


————————————————————————————————————————

一、openNLP简介

维基百科Apache OpenNLP库是一个基于机器学习自然语言文本处理的开发工具包,它支持自然语言处理中一些共有的任务,例如:标记化句子分割词性标注固有实体提取(指在句子中辨认出专有名词,例如:人名)、浅层分析句字分块)、语法分析指代。这些任务通常都需要较为先进的文字处理服务功能。

官方文档:Apache的OpenNLP库是自然语言文本的处理基于机器学习的工具包。它支持最常见的NLP任务,如断词,句子切分,部分词性标注,命名实体提取,分块,解析和指代消解。这些任务通常需要建立更先进的文字处理服务。OpenNLP还包括最大熵和基于感知机器学习。该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语言中的应用的更多相关文章

  1. Android 实现切换主题皮肤功能(类似于众多app中的 夜间模式,主题包等)

    首先来个最简单的一键切换主题功能,就做个白天和晚上的主题好了. 先看我们的styles文件: <resources> <!-- Base application theme. --& ...

  2. R语言中的字符串处理函数

    内容概览   尽管R是一门以数值向量和矩阵为核心的统计语言,但字符串有时候也会在数据分析中占到相当大的份量.   R语言是一个擅长处理数据的语言,但是也不可避免的需要处理一些字符串(文本数据).如何高 ...

  3. R语言中知识点总结(二)

    一些函数不知道什么意思要查,看数值例子,做笔记,知道函数的功能,函数和返回值. 网页上查找关键词,巧用查找(ctrl+F) 数据读取处理,有read.table   read R-读取数据(导入csv ...

  4. R语言中常用包(二)

    数据导入 以下R包主要用于数据导入和保存数据 feather:一种快速,轻量级的文件格式.在R和python上都可使用readr:实现表格数据的快速导入.中文介绍可参考这里readxl:读取Micro ...

  5. R语言中的数据处理包dplyr、tidyr笔记

    R语言中的数据处理包dplyr.tidyr笔记   dplyr包是Hadley Wickham的新作,主要用于数据清洗和整理,该包专注dataframe数据格式,从而大幅提高了数据处理速度,并且提供了 ...

  6. R语言学习笔记1——R语言中的基本对象

    R语言,一种自由软件编程语言与操作环境,主要用于统计分析.绘图.数据挖掘.R本来是由来自新西兰奥克兰大学的Ross Ihaka和Robert Gentleman开发(也因此称为R),现在由“R开发核心 ...

  7. 【R笔记】R语言中的字符串处理函数

    内容概览 尽管R是一门以数值向量和矩阵为核心的统计语言,但字符串同样极为重要.从医疗研究数据里的出生日期到文本挖掘的应用,字符串数据在R程序中使用的频率非常高.R语言提供了很多字符串操作函数,本文仅简 ...

  8. R语言中的机器学习包

    R语言中的机器学习包   Machine Learning & Statistical Learning (机器学习 & 统计学习)  网址:http://cran.r-project ...

  9. 分类-回归树模型(CART)在R语言中的实现

    分类-回归树模型(CART)在R语言中的实现 CART模型 ,即Classification And Regression Trees.它和一般回归分析类似,是用来对变量进行解释和预测的工具,也是数据 ...

随机推荐

  1. PHP定义字符串的四种方式

    1.简介 在PHP中这门语言中,因为是弱类型语言,因此使用变量时不需提前定义即可使用. 我们在使用php进行开发的时候,大多数使用双引号.单引号进行定义字符串.既然有这两种方式,那么他们之间肯定是有区 ...

  2. [UWP]合体姿势不对的HeaderedContentControl

    1. 前言 HeaderedContentControl是WPF中就存在的控件,这个控件的功能很简单:提供Header和Content两个属性,在UI上创建两个ContentPresenter并分别绑 ...

  3. nongsanli

    之后的内容只能追加,不可以修改,删除. 1.    mysql可以对字段进行MD5加密, 加密插入:INSERT INTO t_user(id,username,PASSWORD) VALUES('5 ...

  4. 一个简单的node.js服务

    var http = require('http'); var qs = require('querystring'); var server = http.createServer(function ...

  5. Spring Boot快速入门(最新)

    本章通过完成Spring Boot基础项目的构建并实现一个简单的Http请求处理,让大家对Spring Boot有一个初步的了解,并体验其结构简单.开发快速的特性.预计阅读及演练过程将花费约5分钟. ...

  6. SpringMVC源码情操陶冶-ResourcesBeanDefinitionParser静态资源解析器

    解析mvc:resources节点,控制对静态资源的映射访问 查看官方注释 /** * {@link org.springframework.beans.factory.xml.BeanDefinit ...

  7. 使用最小堆优化Dijkstra算法

    OJ5.2很简单,使用priority_queue实现了最小堆竟然都过了OJ……每次遇到relax的问题时都简单粗暴地重新push进一个节点…… 然而正确的实现应该是下面这样的吧,关键在于swap堆中 ...

  8. C#写鞍点问题

    题目: 编写程序,找一找一个二维数组中的鞍点(即该位置上的元素值在行中最大,在列上最小.有可能数组没有鞍点). 要求 * 二维数组的大小.数组元素的值在运行时输入: * 程序有友好的提示信息 usin ...

  9. Windows Server 2016-Active Directory域服务概述

    活动目录(AD)是一种目录服务是微软用于开发Windows域网络.它被包含在大多数Windows Server 操作系统中作为一组进程和服务.最初,Active Directory只负责集中式域管理. ...

  10. 基于layui和bootstrap搭建极简后台管理框架

    年前无聊,想自己搭建一个后台管理框架,对比了easyui.Extjs.H-ui.H+UI.layui几个框架,easyui和Extjs虽然功能强大但是界面实在是接受不了,H+UI和layuiAdmin ...