Skip to content
jimi edited this page Feb 2, 2019 · 17 revisions

Mynlp: 一个高性能、模块化、可扩展的中文NLP工具包

MYNLP的发展和持续离不开大家的支持,所以建立了微信群方便大家及时沟通交流,有需要的同学可以添加我微信jimichan,备注mynlp。

设计目标

  • 高性能
  • 架构灵活、API柔性
  • 代码简单易读
  • 方便扩展插件
  • 分词逻辑可控制
  • 提供优质的开箱即用预训练词典、模型
  • 无痛使用:无配置文件、自动下载资源文件

开发过程介绍

mayabot在早期项目中使用ansj和Hanlp来实现分词相关功能,在项目实际中有很多定制化和高性能的需求,不得不修改源代码才能 解决问题,而且有些实际问题根本无法通过简单修改实现。另外在代码实现层面,一直希望能有类似Elasticsearch或者Spring这样开放的、解耦的系统结构,柔性的API,面向接口的设计。

17年开始内部对hanlp和ansj进行重构,重新设计了系统结构,引入Guice的IOC容器对各模块进行解耦,提供面向接口的柔性的API体系,方便 在各种业务场景定制特有逻辑的分词器。为了优化性能和GC友好,设计了一系列数据结构。

2018年8月正式开始mynlp开源工作,2019年1月发布第一个版本。如果你对mynlp感兴趣,想成mynlp的代码贡献者,我们十分欢迎你为mynlp开发不同的 插件或算法实现。我们尽量提供完善的文档,让工程师可以快速、简单地开发分词组件。

Mynlp是Mayabot公司的技术团队主导开源和运维,有稳定的团队进行技术支持,采用Apache 2.0开源协议,对任何商业用途免费。

Mayabot也提供技术咨询服务!

已经有Hanlp、ansj为什么还要再造轮子?

ansj、hanlp、FudanNLP等开源项目非常伟大,为国内依赖中文分词的项目提供无限的帮助,正是得益于于这些开源项目,至少让不懂理论的工程师们在工程项目中才有工具可用, 非常感谢这些大牛和组织在开源事业上无私的贡献。但是这些项目更专注的是算法、模型、数据结构上,在工程上并没有做优化设计。

分词系统并不是一个确定性系统,总会出现bad case;在不同业务场景下有着粒度控制需求;各种环境和场景有着各种个性化的需求。 mynlp从工程的角度,从开源项目中精选了优秀的数据结构和模型,重新设计了系统架构,提供一组新的接口和柔性API来满足各种场景下需求定制。

mynlp中非常注重设计解耦和代码可读性,同时也让有分词算法开发能力的用户在mynlp基础架构上快速开发和评估分词算法提供基础。

You can’t perform that action at this time.