每每以为攀得众山小,可、每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,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. Spring 当 @PathVariable 遇上 【. # /】等特殊字符

    @PathVariable注解应该不是新鲜东西了Spring3.0就开始有了 URL中通过加占位符把参数传向后台 举个栗子,如下比较要说的内容比较简单就大概齐的写一下 画面侧 $.ajax({ typ ...

  2. UOJ Round #15 [构造 | 计数 | 异或哈希 kmp]

    UOJ Round #15 大部分题目没有AC,我只是水一下部分分的题解... 225[UR #15]奥林匹克五子棋 题意:在n*m的棋盘上构造k子棋的平局 题解: 玩一下发现k=1, k=2无解,然 ...

  3. Codeforces Round #410 (Div. 2)

    Codeforces Round #410 (Div. 2) A B略..A没判本来就是回文WA了一次gg C.Mike and gcd problem 题意:一个序列每次可以把\(a_i, a_{i ...

  4. BZOJ 4539: [Hnoi2016]树 [主席树 lca]

    4539: [Hnoi2016]树 题意:不想写.复制模板树的子树,查询两点间距离. *** 终于有一道会做的题了...... 画一画发现可以把每次复制的子树看成一个大点来建一棵树,两点的lca一定在 ...

  5. BZOJ 1758: [Wc2010]重建计划 [暂时放弃]

    今天晚上思维比较乱,以后再写写吧#include <iostream> #include <cstdio> #include <cstring> #include ...

  6. POJ 3621 Sightseeing Cows [最优比率环]

    感觉去年9月的自己好$naive$ http://www.cnblogs.com/candy99/p/5868948.html 现在不也是嘛 裸题,具体看学习笔记 二分答案之后判负环就行了 $dfs$ ...

  7. 跨域资源请求(除jsonp以外)的方法

    ---------------------------------------------------------------------------------------------------- ...

  8. Spring MVC的配置和使用

    Spring MVC的配置和使用 笔记仓库:https://github.com/nnngu/LearningNotes Spring MVC需要的jar包 文章中 Spring MVC 使用的版本是 ...

  9. 《算法导论》Chapter 4 Divide-and-Conquer的学习笔记

    Introduction Divide-and-Conquer的三个步骤: Divide the problem into a number of subproblems that are small ...

  10. SUSE-11 本地 zypper 配置

    配置本地 zypper 目的: 安装 SUSE-11 后想要再添加或删除软件组件将比较麻烦.通过配置本地 zypper 将可以从下载的软件仓库(repository)中安装软件包.   本地 zypp ...