介绍一下自研开源NLP工具库---MYNLP

发布于: 2020 年 05 月 27 日
介绍一下自研开源NLP工具库---MYNLP

多年前从淘宝离职开始了自己创业生涯,创业前一直从事搜索和问答系统相关系统架构和开发工作。虽然那个时候并不是一个算法开发人员,但是一直对算法非常感兴趣。

万事开头难,创业之初,没资金、没资源,由于技术需要,不得不直面这些底层NLP技术研发。最初的几年里,使用了ansj开源项目,后来开始使用hanlp。随着业务的推进,不断暴露出很多问题,不能满足业务需要,如控制分词粒度、纠错等等。国内NLP优秀的开源项目基本都是个人维护,商业公司NLP基本不开源。遇到到棘手问题,只能自己去修改源码去打补丁!

但是你知道,这些大神能把算法实现出来很了不起,在没有注解的情况下,我等能完全看懂已经不易。还有编码工程能力真的有待提高,另外基础架构决定了有些需求根本无从下手。尤其不能容忍超长函数、全局变量乱飞等问题。当然了没有这些大神前面开路,mynlp肯定完成不了!

为了创业之路在底层技术上不受制约,开始了mynlp研发之路,从基础的数据结构和算法开始学习研究NLP技术。

后来mynlp在实际生产应用中逐步成熟,本着开源开发的精神,mynlp随后也在github上开源出来。抛砖引玉,希望开源出现更多中文NLP工具库。

Github传送门 https://github.com/mayabot/mynlp


MYNLP的功能与特点:

  • 中文分词

  • 感知机分词

  • Core:二元语言模型&词典分词

  • 通用感知机框架

  • 词性标注

  • 命名实体识别(人名、地名、组织机构名)

  • fastText(100% kotlin实现)

  • 文本分类

  • 新词发现

  • 拼音转换&切分

  • 简繁体转换

  • Elasticsearch&Lucene插件支持

  • 支持用户自主训练模型

  • 柔性API — 自定义&插件机制、支持各种业务场景

  • 开发语言JDK 1.8+kotlinjava

我觉得最大的特色在于Mynlp架构非常灵活和开放,考虑了很多面向企业级需求的设计。

分词API

简单看一下分词API:

Lexer lexer = Lexers.coreBuilder() //core分词构建器
.withPos() //开启词性
.withPersonName() //开启人名
.build(); // 创建定制词法分析对象
Sentence sentence = lexer.scan("mynlp是mayabot开源的中文NLP工具包。");

Lexer是一个词法分析器结构,底层提供了很多算法组件和插件API,你可以根据实际需要自己构建一个定制版本Lexer对象。这里就不一一介绍,感兴趣的同学可以移步Github。

安装

GRADLE

compile 'com.mayabot.mynlp:mynlp:3.1.2'

MAVEN

<dependency>
<groupId>com.mayabot.mynlp</groupId>
<artifactId>mynlp</artifactId>
<version>3.1.2</version>
</dependency>

‘com.mayabot.mynlp:mynlp:3.2.0’ 中包含主要功能和部分词典资源的依赖。 其他功能如拼音、fasttext等被独立打包、按需依赖。

好了,就介绍到这里,希望对nlp或kotlin感兴趣的同学前来围观、测试、吐槽!

发布于: 2020 年 05 月 27 日 阅读数: 8
用户头像

陈吉米

关注

奥卡姆剃刀道理很简单,实践起来很难 2017.11.30 加入

jimichan@gmail.com https://github.com/mayabot

评论

发布
暂无评论
介绍一下自研开源NLP工具库---MYNLP