Apache OpenNLP:处理类似分词等常见任务的工具

opennlp

Apache OpenNLP开发库是一个机器学习开发库,用于自然语言处理。

OpenNLP支持常见的NLP任务,比如分词、断句、词性标注、命名实体抽取、组块分析、解析和指代消解。通常这些任务用来提供高级文本处理服务。OpenNLP还支持基于机器学习的最大熵和感知器功能。

主要功能

通过上面这些工具,可以完成一个完整的自然语言处理流程。此外OpenNLP还提供了一些机器学习扩展机制,可以自己编写OpenNLP扩展,也可以在OSGi容器中运行

API使用示例

OpenNLP组件提供了相似的API,调用时需要提供模型与输入。

通常使用 FileInputStream 加载模型,在模型类的构造函数中加载模型数据。

模型加载后初始化:

初始化完毕,可以执行相应的任务。为工具指定输入和输出格式,通常输出是字符串数组,输入是一个字符串或字符串数组。

 

命令行CLI介绍

OpenNLP提供的命令行接口可以调用所有支持的工具。该脚本位于OpenNLP的bin目录,Windows下的是opennlp.bat,Linux 或其他兼容系统是opennlp。

设置

OpenNLP脚本通过JAVA_CMD和JAVA_HOME环境变量确定Java的位置。

OpenNLP脚本通过OPENNLP_HOME变量确定OpenNLP的位置。推荐把OpenNLP的路径设置为变量的值,添加到PATH环境变量,比如$OPENNLP_HOME/bin 或 %OPENNLP_HOME%\bin。

设置完成后,可以正确执行下面的调用。

示例

访问所有工具:

列出所有包含的库及工具:

OpenNLP工具的命令行结构和选项也类似。不带参数调用能够查看可用选项:

输出两部分帮助信息。第一部分介绍了工具命令行的调用结构:

结果包含工具名(TokenizerTrainer)必须,格式参数([.namefinder|.conllx|.pos])可选,功能参数([-abbDict path] …)可选,以及其它必须的参数(-model modelFile …)。

指定格式参数可以不用转换,直接处理非本地数据。每一种格式必须指定自己的参数,可以通过help查看参数说明:

切换到指定的格式时,在格式与工具名之间加上点号(.):

第二部分信息说明了每个参数的帮助信息:

大多数处理工具要求至少输入一个模型:

这样执行后,会将模型作为标准输入加载,处理后会打印到标准输出。

更常见的做法,也可以使用命令行指定输入和输出及对应的文件:

大多数模型训练工具需要指定模型的名字(即文件名),也可以指定一些训练的参数(比如模型类型、迭代次数等)和实际数据。

训练参数通常包含迭代次数、截止点、缩略语词典等。有时,这些参数可以通过参数文件的形式指定。这时,命令行指定的参数会被忽略,只处理文件中的参数信息。接下来需要指定数据文件的路径(文件名)、语言及编码。

示例如下:

 

带格式调用:

模型评估工具的执行与任务类似,首先提供模型名字,然后指定评估选项(比如是否打印未分类的样本,可选)和测试数据。示例如下:

Maven安装

OpenNLP Tools依赖

使用OpenNLP Tools可以在pom.xml中添加:

OpenNLP UIMA Annotators依赖

使用OpenNLP UIMA Annotators可以在pom.xml中添加:

开发资源

协议

Apache OpenNLP遵循Apache 2.0开源协议发布。

官方网站:https://opennlp.apache.org/
开源地址:https://opennlp.apache.org/source-code.html

打赏支持我整理更多优质资源,谢谢!

打赏编辑

打赏支持我整理更多优质资源,谢谢!

任选一种支付方式

1 1 收藏

资源整理者简介:唐尤华

唐尤华:我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其实我是一个程序员。 个人主页 · 贡献了108个资源 · 17 ·    


直接登录

推荐关注

按分类快速查找

关于资源导航
  • 伯乐在线资源导航收录优秀的工具资源。内容覆盖开发、设计、产品和管理等IT互联网行业相关的领域。目前已经收录 1439 项工具资源。
    推送伯乐头条热点内容微信号:jobbole 分享干货的技术类微信号:iProgrammer