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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!