Apache OpenNLP
Apache OpenNLP库是一种基于机器学习的工具包,用于处理自然语言文本。
它支持最常见的NLP任务,如标记化,句子分割,词性标记,命名实体提取,分块,解析和参考解析。 通常需要这些任务来构建更高级的文本处理服务。 OpenNLP还包括基于最大熵和感知器的机器学习。
功能:
一、语句检测器
1、句子检测
OpenNLP句子检测器可以检测标点符号是否标记句子的结尾。 在这个意义上,句子被定义为两个标点符号之间的最长的白色空间修剪字符序列。 第一句和最后一句是这条规则的例外。 第一个非空白字符假定为一个句子的开头,最后一个非空白字符假定为一个句子结尾。下面的示例文本应该被分割成句子。
在检测到句子边界之后,每个句子被写在其自己的行中。
通常在文本被标记化之前完成语句检测,这是网站上预训练模型的训练方式,但也可以首先执行标记化,并让SentenceDetector处理已经标记化的文本。OpenNLP句子检测器不能基于句子的内容来识别句子边界。一个突出的例子是文章中的第一句,其中标题被错误地识别为第一句的第一部分。OpenNLP中的大多数组件期望输入被分段为句子。
2、句子检测工具
尝试Sentence Detector的最简单的方法是命令行工具。 该工具仅用于演示和测试。下载英语句子检测器型号,并使用以下命令启动Sentence Detector工具:
$ opennlp SentenceDetector en-sent.bin
只需将示例文本从上面复制到控制台。Sentence Detector将读取它,并且每行回一个句子到控制台。 通常输入从文件读取,输出重定向到另一个文件。这可以通过以下命令实现。
$ opennlp SentenceDetector en-sent.bin < input.txt > output.txt
try {
SentenceModel model = new SentenceModel(modelIn);
}
catch (IOException e) {
e.printStackTrace();
}
finally {
if (modelIn != null) {
try {
modelIn.close();
}
catch (IOException e) {
}
}
}
Usage: opennlp SentenceDetectorTrainer[.namefinder|.conllx|.pos] [-abbDict path] \
Arguments description:
-abbDict path
abbreviation dictionary in XML format.
training parameters file.
-iterations num
number of training iterations, ignored if -params is used.
-cutoff num
minimal number of times a feature must be seen, ignored if -params is used.
-model modelFile
output model file.
-lang language
language which is being processed.
-data sampleData
data to be used, usually a file name.
-encoding charsetName
encoding for reading and writing text, if absent the system default is used.
Computing event counts... done. 4883 events
Indexing... done.
Sorting and merging events... done. Reduced 4883 events to 2945.
Done indexing.
Incorporating indexed data for training...
done.
Number of Event Tokens: 2945
Number of Outcomes: 2
Number of Predicates: 467
...done.
Computing model parameters...
Performing 100 iterations.
1: .. loglikelihood=-3384.6376826743144 0.38951464263772273
2: .. loglikelihood=-2191.9266688597672 0.9397911120212984
3: .. loglikelihood=-1645.8640771555981 0.9643661683391358
4: .. loglikelihood=-1340.386303774519 0.9739913987302887
5: .. loglikelihood=-1148.4141548519624 0.9748105672742167
...<skipping a bunch of iterations>...
95: .. loglikelihood=-288.25556805874436 0.9834118369854598
96: .. loglikelihood=-287.2283680343481 0.9834118369854598
97: .. loglikelihood=-286.2174830344526 0.9834118369854598
98: .. loglikelihood=-285.222486981048 0.9834118369854598
99: .. loglikelihood=-284.24296917223916 0.9834118369854598
100: .. loglikelihood=-283.2785335773966 0.9834118369854598
Wrote sentence detector model.
Path: en-sent.bin
应用程序必须打开示例数据流
调用SentenceDetectorME.train方法
将SentenceModel保存到文件或直接使用它
以下示例代码说明了这些步骤:
Charset charset = Charset.forName("UTF-8");
ObjectStream<String> lineStream =
new PlainTextByLineStream(new FileInputStream("en-sent.train"), charset);
ObjectStream<SentenceSample> sampleStream = new SentenceSampleStream(lineStream);
SentenceModel model;
try {
model = SentenceDetectorME.train("en", sampleStream, true, null, TrainingParameters.defaultParams());
}
finally {
sampleStream.close();
}
OutputStream modelOut = null;
try {
modelOut = new BufferedOutputStream(new FileOutputStream(modelFile));
model.serialize(modelOut);
} finally {
if (modelOut != null)
modelOut.close();
}
三、 Detokenizing
规则字典向每个令牌分配一个操作,该操作描述如何将其附加到一个连续字符序列。
可以将以下规则分配给令牌:
MERGE_TO_LEFT - 将令牌合并到左侧。
MERGE_TO_RIGHT - 将令牌合并到右侧。
RIGHT_LEFT_MATCHING - 将令牌合并到第一次出现的右侧和第二次出现的左侧。
下面的示例将演示如何使用小规则字典(插图格式,而不是xml数据格式)的detokenizer:
" RIGHT_LEFT_MATCHING
He -> NO_OPERATION
said -> NO_OPERATION
" -> MERGE_TO_RIGHT
This -> NO_OPERATION
is -> NO_OPERATION
a -> NO_OPERATION
test -> NO_OPERATION
" -> MERGE_TO_LEFT
. -> MERGE_TO_LEFT
Apache OpenNLP相关推荐
- Apache OpenNLP提供的文档
Apache OpenNLP提供了一个手册和Javadoc API文档. 本手册介绍了如何使用和培训各种OpenNLP组件. Apache OpenNLP 1.7.2文档 Apache OpenNLP ...
- Apache OpenNLP介绍(一)
一.介绍 1.描述 Apache OpenNLP库是一种基于机器学习的工具包,用于处理自然语言文本.它支持最常见的NLP任务,如标记化,句子分割,词性标记,命名实体提取,分块,解析和参考解 ...
- Apache OpenNlp的初探
Nlp:nature language processing.自然语言识别. 最近正好再做一个跟nlp有关的项目,正好就跟着了解了一下nlp的学习和使用以及原理. 先来说下使用.在这里笔者以在IDE中 ...
- Apache OpenNLP下载
1. 进入官网 http://opennlp.apache.org/ (有时候早上可能访问不到,可以多刷新几次或者等一会儿在进入) 2.点击 download 注意:tar.gz归档包含长度超过 ...
- Apache OpenNLP(二)
二.标记生成器 Tokenizer 1. 标记化 OpenNLP令牌器将输入字符序列分段成令牌. 令牌通常是字词,标点符号,数字等. 以下结果显示了以空格分隔表示的各个标记. OpenNLP提供多种t ...
- [NLP]OpenNLP Maven工程的依赖
目录 OpenNLP Tools依赖 OpenNLP UIMA Annotators 依赖 OpenNLP Morfologik AddOn依赖 OpenNLP Brat Annotator依赖 Op ...
- OPENNLP——java的NLP工具
Apache OpenNLP库是一个基于机器学习的自然语言文本处理的开发工具包,它支持自然语言处理中一些共有的任务,例如:标记化.句子分割.词性标注.固有实体提取(指在句子中辨认出专有名词,例如:人名 ...
- R+openNLP︱openNLP的六大可实现功能及其在R语言中的应用
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- openNLP是NLP中比较好的开源工具,R语 ...
- GitHub上整理的一些工具【转载】
技术站点Hacker News:非常棒的针对编程的链接聚合网站Programming reddit:同上MSDN:微软相关的官方技术集中地,主要是文档类infoq:企业级应用,关注软件开发领域OSCh ...
最新文章
- seaborn系列(1) | 关系类图relplot用法
- ML之ECS:利用ECS的PAI进行傻瓜式操作机器学习的算法
- ds18b20温度转换指令_【Proteus】DS18B20简易温控器
- c++头文件包含技巧
- matlab resample上采样,resample matlab实现
- 发现Diolar 的边缘检测程序好像也有缺点
- Altium Designer入门教程:软件安装、中文设置与原件库配置
- 吉林大学计算机专硕和学硕的区别,在吉林大学在职研究生项目中专硕和学硕的区别是什么...
- google书签找回
- vue-路由篇页面跳转和页面参数传递
- gorm增删查改json_go基于echo、gorm实现增删改查,从请求到落库
- 星际争霸游戏战队案例分析
- 国信证券学习系列(4)
- Esp8266的Flash读写操作以及Flash上传文件
- 交叉编译生成可以在ARM64平台上运行的gcc
- Win10下安装Spark的尝试总结(尚未出坑)
- html页面推送功能的实现,想实现Web页面内容自动更新?你需要了解WEB实时推送技术!...
- 如何对多个版本的Word文档对比,查找变动删减的内容
- 《小说朗读器》又增新功能
- SQL Server 2000 安装文件挂起错误的解决办法