近日,小米开源了其自然语言处理平台 MiNLP 的中文分词功能,具备分词效果好、轻量级、词典可定制、多粒度切分以及调用更便捷等特点。
在自然语言处理任务中,除了模型之外,底层的数据处理也是非常重要的。在语料预处理阶段,分词作为其中一个环节,其作用也是非常重要,但也受不同语言的限制,因而采取的方法有所不同,如中文和英文。中文分词是将一个汉字序列进行切分,得到一个个单独的词,如「我住在朝阳区」,分词后的结果为「我 / 住在 / 朝阳区」。如果分词效果不好的话,可能会出现其他情况,比较极端的结果是全部分错「我住 / 在朝 / 阳区」。分词效果好不好对信息检索、实验结果影响很大,同时分词的背后涉及各种各样的算法实现。就中、英文而言,中文分词与英文分词有很大的不同,对英文而言,词与词之间都有空格隔开,一个单词就是一个词,而汉语是以字为基本的书写单位,词语之间没有明显的区分标记,需要人为切分。现阶段也出现了很多分词算法:如基于规则的、基于统计的等,也有一些比较好的分词工具如 jieba、Hanlp、THULAC 等。此外还存在着一些在线分词工具,其分词效果也不错。国内一些科技大厂也早早投入到自然语言处理相关领域,如百度 NLP、阿里云 NLP 等。就在近日,小米 AI 实验室 NLP 团队开发的小米自然语言处理平台 MiNLP 现已开源了中文分词功能。目前,MiNLP 平台已经具备词法、句法、语义等数十个功能模块,后续将陆续开源词性标注、命名实体识别、句法分析等功能。其致力于打造功能强大、效果领先的 NLP 工具集。MiNLP 从去年 2.0 版本的两大功能模块(基础算法、语义理解)已经上升到 3.0 版本四大功能模块,在基础算法、语义理解的基础上增加了内容理解和舆情分析模块。新的模块可以帮助系统更好地结合上下文理解交互内容,提高识别的准确性。目前,小米自然语言处理平台 MiNLP 每天输出服务 80 亿次。MiNLP-Tokenizer 是小米 AI 实验室 NLP 团队自研的中文分词工具,基于深度学习序列标注模型实现,在公开测试集上取得了 SOTA 效果。其具备以下特点:分词效果好:基于深度学习模型在大规模语料上进行训练,粗、细粒度在 SIGHAN 2005 PKU 测试集上的 F1 分别达到 95.7% 和 96.3%;
轻量级模型:精简模型参数和结构,模型仅有 20MB;
词典可定制:灵活、方便的干预机制,根据用户词典对模型结果进行干预;
多粒度切分:提供粗、细粒度两种分词规范,满足各种场景需要;
调用更便捷:一键快速安装,API 简单易用。
pip install minlp-tokenizer
适用环境:Python 3.5~3.7,TensorFlow>=1.15,<2。from minlptokenizer.tokenizer import MiNLP
Tokenizertokenizer = MiNLPTokenizer(granularity='fine') # fine:细粒度,coarse:粗粒度,默认为细粒度
print(tokenizer.cut('今天天气怎么样?'))
from minlptokenizer.tokenizer import MiNLP
Tokenizertokenizer = MiNLPTokenizer(['word1', 'word2'], granularity='fine') #用户自定义干预词典传入
from minlptokenizer.tokenizer import MiNLP
Tokenizertokenizer = MiNLPTokenizer('/path/to/your/lexicon/file', granularity='coarse') # 构造函数的参数为用户词典路径
在 lexicon 文件夹下默认已经有两个词典「chengyu.txt」、「default.txt」:在文件「chengyu.txt」中,有 8500 多个成语,基本上都是四字成语,示例如下所示:在文件「default.txt」中,有 150 个词,基本上为公司名称及网站名称,示例如下所示:其实早在 11 月 5 日 2020 小米开发者大会上,小米集团副总裁、集团技术委员会主席崔宝秋就发布了小米自然语言处理平台 MiNLP 平台开源计划。现在,MiNLP 的分词功能已经开源,接下来可以期待一下词性标注、命名实体识别、句法分析等功能的开源。据 2020 小米开发者大会上的消息,词性标注功能将于明年一季度开源,命名实体识别功能将于明年二季度开源,语义相关功能将于明年三季度开源。MiNLP 不同功能模块,将按计划逐渐开源。