NodeJieba "结巴"分词的Node.js版本
介绍
NodeJieba
是"结巴"中文分词的 Node.js 版本实现, 由CppJieba提供底层分词算法实现, 是兼具高性能和易用性两者的 Node.js 中文分词组件。
特点
- 词典载入方式灵活,无需配置词典路径也可使用,需要定制自己的词典路径时也可灵活定制。
- 底层算法实现是C++,性能高效。
- 支持多种分词算法,各种分词算法见CppJieba的README.md介绍。
- 支持动态补充词库。
对实现细节感兴趣的请看如下博文:
下载
npm install nodejieba
因为npm
速度很慢而且经常因为墙的原因出现莫名其妙的问题,可以试试使用cnpm,命令如下:
npm --registry=http://r.cnpmjs.org install nodejieba
用法
var nodejieba = require("nodejieba"); var result = nodejieba.cut("南京市长江大桥"); console.log(result); //["南京市","长江大桥"]
更详细的其他用法请看 test/demo.js
词典载入可灵活配置
如果没有主动调用词典函数时, 则会在第一次调用cut等功能函数时,自动载入默认词典。
如果要主动触发词典载入,则使用以下函数主动触发。
nodejieba.load();
以上用法会自动载入所有默认词典, 如果需要载入自己的词典,而不是默认词典。 比如想要载入自己的用户词典,则使用以下函数:
nodejieba.load({ userDict: './test/testdata/userdict.utf8', });
字典载入函数load的参数项都是可选的, 如果没有对应的项则自动填充默认参数。 所以上面这段代码和下面这代代码是等价的。
nodejieba.load({ dict: nodejieba.DEFAULT_DICT, hmmDict: nodejieba.DEFAULT_HMM_DICT, userDict: './test/testdata/userdict.utf8', idfDict: nodejieba.DEFAULT_IDF_DICT, stopWordDict: nodejieba.DEFAULT_STOP_WORD_DICT, });
【词典说明】
- dict: 主词典,带权重和词性标签,建议使用默认词典。
- hmmDict: 隐式马尔科夫模型,建议使用默认词典。
- userDict: 用户词典,建议自己根据需要定制。
- idfDict: 关键词抽取所需的idf信息。
- stopWordDict: 关键词抽取所需的停用词列表。
词性标注
var nodejieba = require("nodejieba"); console.log(nodejieba.tag("红掌拨清波")); // [ '红掌:n', '拨:v', '清波:n' ]
具体用法参考 test/demo.js
关键词抽取
var nodejieba = require("nodejieba"); console.log(nodejieba.extract("升职加薪,当上CEO,走上人生巅峰。", 4)); // [ 'CEO:11.7392', '升职:10.8562', '加薪:10.6426', '巅峰:9.49396' ]
具体用法参考 test/demo.js
测试
以下版本中测试通过:
node v0.10.2
node v0.12.1
iojs v1.3.0
iojs v2.2.1
node v4.0.0
应用
- 支持中文搜索的 gitbook 插件: gitbook-plugin-search-pro
- 汉字拼音转换工具: pinyin
性能评测
性能杠杠的,应该是目前性能最好的 Node.js 中文分词库,没有之一。 详见: Jieba中文分词系列性能评测
在线演示
http://cppjieba-webdemo.herokuapp.com/ (chrome is suggested)
客服
Email: i@yanyiwu.com
QQ: 64162451
许可证
MIT http://yanyiwu.mit-license.org
鸣谢
作者
本文由用户 jopen 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
转载本站原创文章,请注明出处,并保留原始链接、图片水印。
本站是一个以用户分享为主的开源技术平台,欢迎各类分享!