apache/opennlp

Apache OpenNLP

Apache OpenNLP – 功能简介

Apache OpenNLP 是一个纯 Java 库,为常见的自然语言处理 (NLP) 任务提供即插即用的机器学习组件。它可以让开发人员在 Java 应用程序或数据处理流水线中添加分词、句子检测、词性标注、命名实体识别、分块、句法分析、指代消解、语言检测和拼写检查等功能。


核心特性 (详见 README)

特性 功能说明
Tokenization & Sentence Segmentation 将原始文本拆分为单词和句子。
POS Tagging 为标记分配词性标签(名词、动词等)。
Named Entity Extraction 检测人名、地点、组织等实体。
Chunking & Parsing 将标记分组为短语并构建句法树。
Coreference Resolution 将指代同一实体的代词和提及联系起来。
Language Detection 识别给定文本片段的语言。
Stop-word Filtering 提供 11 种语言的内置停用词列表。
Spell-checking 使用基于 SymSpell 的模块进行与语言无关的纠错。
ML Algorithms 包括 MaxEnt、Perceptron、Naïve Bayes 和 SVM 分类器;还支持 ONNX 模型 (CPU 和 GPU)。
CLI & API 可以通过命令行使用,也可以通过简洁的 Java API 进行编程调用。
模块化架构 分为许多 Maven 模块(运行时、API、ML 实现、DL 适配器、扩展等),因此您只需引入所需的内容。
集成友好 旨在插入 Apache Flink、NiFi 和 Spark 等流式框架。

如何开始

  1. 添加库:通过 Maven 或 Gradle 将库添加到您的项目中(例如 org.apache.opennlp:opennlp-runtime)。
  2. 包含模型支持:如果您需要预训练模型,请包含模型支持 (opennlp-model-resolver)。
  3. 加载模型:加载一个模型(例如分词器模型)并调用相应的 *ME 类,如 TokenizerME
  4. 运行 CLI:使用 opennlp-cli 进行快速实验、训练或评估。

README 指向了详细的文档、JavaDocs 和可下载的演示模型。


适用人群

  • Java 开发人员:正在构建需要文本预处理的搜索、聊天或分析服务。
  • 数据工程师:正在将 NLP 步骤集成到 Apache Flink、Spark 或 NiFi 流水线中。
  • 研究人员或爱好者:希望为经典 NLP 任务寻找轻量级、开源替代方案(而非沉重的深度学习框架)的人。

项目健康状况与社区

  • 活跃的 CI (GitHub Actions) 和 Maven Central 发布。
  • 多位贡献者和清晰的分支模型(3.x 使用 main,opennlp-2.x 用于遗留版本)。
  • 社区渠道:邮件列表、Slack (仅限 Apache)、Bluesky 和 Stack Overflow 标签。
  • 安全问题通过 Apache 的安全邮件地址进行私下处理。

简而言之: Apache OpenNLP 是一个成熟的、以 Java 为中心的传统 NLP 任务工具包,它同时提供经典的 ML 算法和基于 ONNX 的深度学习支持,其模块化设计非常适合现代 Java 数据处理生态系统。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目