Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

陈萍作者

每天调用达80亿次的小米MiNLP平台,近期又开源了中文分词功能

近日,小米开源了其自然语言处理平台 MiNLP 的中文分词功能,具备分词效果好、轻量级、词典可定制、多粒度切分以及调用更便捷等特点。


在自然语言处理任务中,除了模型之外,底层的数据处理也是非常重要的。在语料预处理阶段,分词作为其中一个环节,其作用也是非常重要,但也受不同语言的限制,因而采取的方法有所不同,如中文和英文。

中文分词是将一个汉字序列进行切分,得到一个个单独的词,如「我住在朝阳区」,分词后的结果为「我 / 住在 / 朝阳区」。如果分词效果不好的话,可能会出现其他情况,比较极端的结果是全部分错「我住 / 在朝 / 阳区」。分词效果好不好对信息检索、实验结果影响很大,同时分词的背后涉及各种各样的算法实现。

就中、英文而言,中文分词与英文分词有很大的不同,对英文而言,词与词之间都有空格隔开,一个单词就是一个词,而汉语是以字为基本的书写单位,词语之间没有明显的区分标记,需要人为切分。

现阶段也出现了很多分词算法:如基于规则的、基于统计的等,也有一些比较好的分词工具如 jieba、Hanlp、THULAC 等。此外还存在着一些在线分词工具,其分词效果也不错。

国内一些科技大厂也早早投入到自然语言处理相关领域,如百度 NLP、阿里云 NLP 等。就在近日,小米 AI 实验室 NLP 团队开发的小米自然语言处理平台 MiNLP 现已开源了中文分词功能。

项目地址:https://github.com/XiaoMi/MiNLP/tree/main/minlp-tokenizer

目前,MiNLP 平台已经具备词法、句法、语义等数十个功能模块,后续将陆续开源词性标注、命名实体识别、句法分析等功能。其致力于打造功能强大、效果领先的 NLP 工具集。

MiNLP 从去年 2.0 版本的两大功能模块(基础算法、语义理解)已经上升到 3.0 版本四大功能模块,在基础算法、语义理解的基础上增加了内容理解和舆情分析模块。新的模块可以帮助系统更好地结合上下文理解交互内容,提高识别的准确性。

目前,小米自然语言处理平台 MiNLP 每天输出服务 80 亿次。

MiNLP-Tokenizer 介绍

MiNLP-Tokenizer 是小米 AI 实验室 NLP 团队自研的中文分词工具,基于深度学习序列标注模型实现,在公开测试集上取得了 SOTA 效果。其具备以下特点:

  • 分词效果好:基于深度学习模型在大规模语料上进行训练,粗、细粒度在 SIGHAN 2005 PKU 测试集上的 F1 分别达到 95.7% 和 96.3%;

  • 轻量级模型:精简模型参数和结构,模型仅有 20MB;

  • 词典可定制:灵活、方便的干预机制,根据用户词典对模型结果进行干预;

  • 多粒度切分:提供粗、细粒度两种分词规范,满足各种场景需要;

  • 调用更便捷:一键快速安装,API 简单易用。


安装过程

安装过程非常简单,pip 全自动安装:

pip install minlp-tokenizer

适用环境:Python 3.5~3.7,TensorFlow>=1.15,<2。

使用 API

from minlptokenizer.tokenizer import MiNLPTokenizertokenizer = MiNLPTokenizer(granularity='fine')  # fine:细粒度,coarse:粗粒度,默认为细粒度print(tokenizer.cut('今天天气怎么样?'))

自定义用户词典

通过用户词典 List 添加:

from minlptokenizer.tokenizer import MiNLPTokenizertokenizer = MiNLPTokenizer(['word1', 'word2'], granularity='fine') #用户自定义干预词典传入

通过文件路径方式添加:

from minlptokenizer.tokenizer import MiNLPTokenizertokenizer = 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 不同功能模块,将按计划逐渐开源。

参考链接:
https://dy.163.com/article/FQLS8II705508TBC.html
https://mp.weixin.qq.com/s/wPx4LVEZ3QWL4jm6FNdRSw
工程小米NLP中文分词
1
暂无评论
暂无评论~