通知中心 最近增加了语音创建待办提醒的功能,实现方法是使用 jieba 中文分词库。
jieba 原作是一个 python 库,社区衍生出了很多其他语言的版本,jieba 的 README 提到的 Node.js 版是 nodejieba,它是基于 C++ 的 cppjieba 实现的。
cppjieba 默认的分词模式和原作 jieba 有一个很大的不同:cppjieba 会把每一个数字或英文字母单独进行拆分,而 jieba 默认不会。要想避免这个现象,cppjieba 需要开启 HMM 模式,而 jieba 不需要。开启 HMM 模式可能会分出字典没有的词,这不符合我的使用场景。基于 cppjieba 的 nodejieba 也存在一样的问题。
幸好 Node.js 的 jieba 还有另一个版本,即 @node-rs/jieba
,它是基于 jieba 的 Rust 版 jieba-rs
开发的,作者都是 messense,messense 另一个更知名的作品是 aliyundrive-webdav,我在之前的文章分享过 aliyundrive-webdav 的使用。
@node-rs/jieba
的使用更接近原作 jieba,通知中心用的就是它。公众号可以自动把用户的语音转换为文字,通知中心收到文字后,使用 @node-rs/jieba
对其进行分词,接着对各词语进行逐一判断,从中提炼出时间、事情两项关键信息,最后就能获得结构化的数据。