Detalhes do pacote

nodejieba

yanyiwu56.5kMIT3.4.4

chinese word segmentation for node

chinese, segment, cppjieba, jieba

readme (leia-me)

Build Status Financial Contributors on Open Collective Author Platform Performance License NpmDownload Status NPM Version Code Climate


NodeJieba "结巴"分词的Node.js版本

介绍

NodeJieba是"结巴"中文分词的 Node.js 版本实现, 由CppJieba提供底层分词算法实现, 是兼具高性能和易用性两者的 Node.js 中文分词组件。

特点

  • 词典载入方式灵活,无需配置词典路径也可使用,需要定制自己的词典路径时也可灵活定制。
  • 底层算法实现是C++,性能高效。
  • 支持多种分词算法,各种分词算法见CppJieba的README.md介绍。
  • 支持动态补充词库。

对实现细节感兴趣的请看如下博文:

下载

npm install nodejieba

用法

var nodejieba = require("nodejieba");
var result = nodejieba.cut("南京市长江大桥");
console.log(result);
//["南京市","长江大桥"]

More Detals in demo

词典载入可灵活配置

如果没有主动调用词典函数时, 则会在第一次调用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("红掌拨清波"));
//[ { word: '红掌', tag: 'n' },
//  { word: '拨', tag: 'v' },
//  { word: '清波', tag: 'n' } ]

More Detals in demo

关键词抽取

var nodejieba = require("nodejieba");
var topN = 4;
console.log(nodejieba.extract("升职加薪,当上CEO,走上人生巅峰。", topN));
//[ { word: 'CEO', weight: 11.739204307083542 },
//  { word: '升职', weight: 10.8561552143 },
//  { word: '加薪', weight: 10.642581114 },
//  { word: '巅峰', weight: 9.49395840471 } ]

console.log(nodejieba.textRankExtract("升职加薪,当上CEO,走上人生巅峰。", topN));
//[ { word: '当上', weight: 1 },
//  { word: '不用', weight: 0.9898479330698993 },
//  { word: '多久', weight: 0.9851260595435759 },
//  { word: '加薪', weight: 0.9830464899847804 },
//  { word: '升职', weight: 0.9802777682279076 } ]

More Detals in demo

Develop NodeJieba

git clone --recurse-submodules https://github.com/yanyiwu/nodejieba.git
cd nodejieba
npm install
npm test

应用

性能评测

应该是目前性能最好的 Node.js 中文分词库 详见: Jieba中文分词系列性能评测

Contributors

Code Contributors

This project exists thanks to all the people who contribute. [Contribute].

Financial Contributors

Become a financial contributor and help us sustain our community. [Contribute]

Individuals

Organizations

Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]

changelog (log de mudanças)

CHANGELOG

v3.4.3

  • 8723bbb [submodule/cppjieba] from v5.1.3 to v5.4.0
  • 7787450 Update stale-issues.yml: 3y -> 1y
  • 90d5b6b [github/actions] stale 5 years -> 3 years
  • b69d1fe [github/actions] stale issues
  • 5241ef1 [.github][npm publish] upgrade /v2 to /v4 and node-version 18->20

v3.4.2

  • 9bc3979 [package] clean unused deps
  • e8988c5 git rm .travis.yml
  • 839f203 Merge pull request #236 from yanyiwu/dependabot/npm_and_yarn/js-yaml-3.14.1
  • 26f0872 Bump js-yaml from 3.6.1 to 3.14.1
  • 1788029 Merge pull request #235 from yanyiwu/dependabot/npm_and_yarn/multi-037252cf8f
  • 641b2d7 Bump minimist, coveralls and mocha
  • e01e1c4 [CI] GitHub Release: publish --release instead of draft

v3.4.1

  • [demo] using nodejieba-demo instead of test/demo.js
  • git submodule update --remote to upgrade cppjieba from v5.1.2 to v5.1.3

v3.4.0

  • package-lock.json updated by 'npm install'
  • npm outdated; npm update;

v3.3.1

  • [CI] fix github/actions:auto-release

v3.3.0

  • [CI] auto github/release by node-pre-gyp-github
  • [github/actions] CI add windows,macos, node-22, removed node-16

v3.2.0

  • [submodule] rm dict and deps, use submodules/cppjieba instead

v3.1.1

  • Using GitHub Actions Workflow to Publish NPM Package

v3.1.0

v2.6.0

v2.5.2

v2.5.1

  • Merged pull request 179
  • Since v2.5.0, node-addon-api is used, and only Node.js versions 10.0.0 and above are supported. There was an error in the previous description in the v2.5.0 version.

v2.5.0

v2.4.2

v2.4.1

  • upgrade deps/limonp -> v0.6.3
  • upgrade deps/cppjieba -> v5.0.3
  • merged pull request 148

v2.4.0

  • revert commit-6600629 to be compatiable with cppjieba.
  • upgrade deps/limonp -> v0.6.2
  • upgrade deps/cppjieba -> v5.0.2

v2.3.5

v2.3.3

v2.3.2

v2.3.1

v2.3.0

v2.2.7

v2.2.6

v2.2.5

v2.2.4

v2.2.3

  • update cppjieba -> 4a755dff to try fixing issue 65

v2.2.2

  • upgrade cppjieba -> v4.8.1
  • (word freq tag) format in user dict has been supported.

v2.2.1

  • fix bug in v2.2.0 about 'cutSmall'

v2.2.0

  • add api cutSmall to cut words in specific word length limit

v2.1.0

  • function tag,extract return objects, instead of strings.
  • fix issue issue 58

v2.0.0

  • Upgrade cppjieba -> v4.8.0
  • rewrite cut function:
  • add cutAll for old cut(s, "FULL") function.
  • add cutHMM for old cut(s, "HMM") function.
  • add cutForSearch for old cut(s, "Query") function.

v1.4.11

  • Upgrade dependencies

  • "nan": "~2.2.0" -> "~2.3.0"

  • Upgrade devDependencies

  • "mocha": "~2.3.4" -> "~2.4.5"

  • "should": "~8.0.2" -> "~8.3.1"

  • Upgrade deps/

  • cppjieba -> v4.7.0

  • limonp -> v0.6.1

v1.4.10

Upgrade to fix potential trouble:

  • limonp -> v0.5.6
  • cppjieba -> v4.5.2

v1.4.9

Upgrade limonp and cppjieba to fix issue48

  • limonp -> v0.5.4
  • cppjieba -> v4.5.0

v1.4.8

Upgrade:

v1.4.7

Upgrade:

  • limonp -> v0.5.3, fix incompatibility problem in Windows.

v1.4.6

Change source codes layout

  • lib/jieba/limonp -> deps/limonp
  • lib/jieba -> deps/cppjieba

Upgrade:

  • limonp -> v0.5.2, fix incompatibility problem of issue45
  • cppjieba -> v4.3.2

v1.4.5

  • 修复多余日志输出的问题。

v1.4.4

  • 升级 cppjieba 到最新版本 v4.2.1

v1.4.3

  • 升级 cppjieba 到最新版本 v4.1.2

v1.4.2

  • 升级 package.json 里面的依赖库。

v1.4.1

v1.4.0

  • 对MP算法的分词方式新增一个粒度参数,解决issue29关于细粒度分词的问题。

v1.3.0

  • 合并 [pr37], 修复 issue36 。 放弃对旧版本 node.js v0.11 的支持。

v1.2.2

  • 修复依赖的nan版本的问题。

v1.2.1

  • 修复load函数重复调用时内存没有释放的问题。

v1.2.0

  • 同时支持【不配置词典文件直接使用】和【灵活配置词典】的需求。

v1.1.0

  • 新增支持动态增加词库的API函数: insertWord

v1.0.3

  • Merge Pull Request pr28,显示声明依赖的是 node 后缀的文件,解决一些库重写了 require 的问题。

v1.0.2

  • 修复在 windows 上编译不通过的问题,提升兼容性。

v1.0.1

  • 修复在iojs v2.2.1 上编译不通过的问题,提升兼容性。

v1.0.0

  • 使用cppjieba v3.0.0 版本,使用更简洁的接口函数,可以使用参数指定切词方法。
  • require("nodejieba") 时自动载入词典,用户无需再烦心字典的事情,实现即插即用。
  • 听从 issue23 的建议,废除异步调用的接口,现在的接口函数都是同步调用函数,分别是 cut, tag, extract 。因为分词毕竟是CPU密集型的事情,没必要使用异步调用。

v0.2.13

  • 升级nan^v1.8.0 以支持 iojs-v2.x

v0.2.12

  • 新增以下默认词典地址,让使用者不需要自己写词典的相对地址。
  • nodejieba.DEFAULT_DICT
  • nodejieba.DEFAULT_HMM_DICT
  • nodejieba.DEFAULT_USER_DICT
  • nodejieba.DEFAULT_IDF_DICT
  • nodejieba.DEFAULT_STOP_WORD_DICT

v0.2.11

  • 更新 cppjieba
  • 打印更详细的初始化错误日志信息。

v0.2.10

  • 避免一些在Mac系统下的词典载入日志,更干净的用户体验。

v0.2.9

  • 支持vs2012编译。

v0.2.8(deleted)

  • 支持vs2012编译。

v0.2.7

  • 关键词抽取支持自定义词典(可选参数)。

v0.2.6

  • 修复不同Node版本的兼容性问题,在v0.11.13下测试通过。
  • 支持自定义词典(可选参数)。
  • 增加关键词抽取功能。

v0.2.5

  • 增加词性标注功能

v0.2.4

  • 更新 package 兼容更低版本的 npm

v0.2.3

  • 更新 cppjieba ,减少内存使用。

v0.2.2

  • 在queryLoadDict 函数中增加query模式的粒度阈值作为可选参数。

v0.2.1

  • 增加搜索引擎分词模式,分别对应的调用函数是 queryLoadDict, queryCutSync, queryCut

v0.2.0

  • 将原来的 cut 阻塞分词模式改为非阻塞模式
  • 阻塞分词模型的函数名为 cutSync

v0.1.4

  • 修复关于较低版本编译器需要使用tr1/unordered_map导致和node-gyp编译选项-fno-rtti冲突的编译错误问题。

v0.1.3

  • 更新cppjieba,支持更低版本的g++。

v0.1.2

  • 更新cppjieba,使用less_memory这个branch来减少Trie树内存的开销。

v0.1.1

  • 依照node的c++扩展的常规写法,对cppjieba进行简单的包装,并已npm publish