介绍一下自研开源 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是一个词法分析器结构,底层提供了很多算法组件和插件API,你可以根据实际需要自己构建一个定制版本Lexer对象。这里就不一一介绍,感兴趣的同学可以移步Github。
安装
GRADLE
MAVEN
‘com.mayabot.mynlp:mynlp:3.2.0’ 中包含主要功能和部分词典资源的依赖。 其他功能如拼音、fasttext等被独立打包、按需依赖。
好了,就介绍到这里,希望对nlp或kotlin感兴趣的同学前来围观、测试、吐槽!
版权声明: 本文为 InfoQ 作者【陈吉米】的原创文章。
原文链接:【http://xie.infoq.cn/article/0aaa212c74d2aea1ae750507e】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论