Node.js中文分词库nodejieba使用详解

作者:慢半拍

时间:2026-10-25

浏览:132

本文详细介绍Node.js中文分词插件nodejieba的安装配置与核心API。涵盖精确模式、全模式及搜索引擎模式三种分词方式,解析cut、tag、extract等常用函数的参数与用法,并说明自定义词典加载机制及默认词典自动载入规则,助力开发者高效实现中文文本处理。

文章目录

nodejieba 简介

随着汉语应用的普及,中文信息处理已成为关键的研究领域,广泛应用于搜索引擎的信息检索、机器翻译、数据挖掘及自然语言处理等场景。其中,中文分词是处理流程中最基础且至关重要的一环。

nodeJieba 是结巴中文分词在 Node.js 平台上的实现版本,其底层分词算法由 CppJieba 提供支持。该插件结合了高性能与易用性,是 Node.js 环境下进行中文分词的首选工具之一。

nodejieba 模块提供了三种主要的分词模式供选择:

1. 精确模式:旨在以最高的准确度将句子切分为词语。

2. 全模式:扫描并输出句子中所有可能构成词语的组合,运算速度极快。

3. 搜索引擎模式:在精确模式切分的基础上,对长词进行二次细分,以适配搜索引擎的检索需求。

特点

  • 词典加载机制灵活,无需指定路径即可直接使用默认词典;同时支持用户自定义词典路径的灵活配置。
  • 底层算法由 C++ 实现,确保了高效的运行性能。
  • 兼容多种分词算法,满足不同场景需求。
  • 支持动态扩展词库,允许在运行时补充新词汇。

常用API

nodejieba 模块提供了多个实用函数,包括 cut()、cutAll()、cutForSearch()、tag() 以及 extract() 等。

1. cut()函数 用于精确模式分词,仅接收一个参数 sentence,即需要进行分词处理的字符串。

2. cutAll()函数 用于全模式分词,同样仅接收一个参数 sentence,表示待分词的字符串内容。

3. cutForSearch()函数 用于搜索引擎模式分词,仅接收一个参数 sentence,表示需要分词的字符串格式。

4. tag()函数 用于词性标注,根据词语的词性进行分类,仅接收一个参数 sentence,表示需要标注的字符串。

5. extract()函数 用于关键词抽取,包含两个参数:

  • 第一个参数 sentence,表示需要从中抽取关键词的字符串。
  • 第二个参数 topN,用于指定仅保留出现频率最高的前 N 个关键词。

基本使用

  • 安装依赖
npm install nodejieba --save
  • 词典载入可灵活配置

若需加载自定义词典而非使用默认设置,例如加载用户词典,可调用以下函数:

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:关键词抽取所需的停用词列表。

注意:若未主动调用词典加载函数,系统在首次调用 cut 等功能函数时会自动加载默认词典,且该词典仅加载一次。

1.分词用法

var nodejieba = require("nodejieba");
var result = nodejieba.cut("南京市长江大桥");// 精确模式
console.log(result);
//["南京市","长江大桥"]
var nodejieba = require("nodejieba");
var result = nodejieba.cutAll("南京市长江大桥");// 全模式
console.log(result);
// [
//   '南京', '南京市',
//   '京市', '市长',
//   '长江', '长江大桥',
//   '大桥'
// ]
var nodejieba = require("nodejieba");
var result = nodejieba.cutForSearch("南京市长江大桥");// 搜索引擎模式
console.log(result);
// [ '南京', '京市', '南京市', '长江', '大桥', '长江大桥' ]

2.词性标注

var nodejieba = require("nodejieba");
console.log(nodejieba.tag("红掌拨清波"));
//[ { word: '红掌', tag: 'n' },
//  { word: '拨', tag: 'v' },
//  { word: '清波', tag: 'n' } ]

3.关键词抽取

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 } ]
// textRankExtract API好像目前已弃用了
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 } ]

4.其他用法

var nodejieba = require('nodejieba');
var sentence = "我是拖拉机学院手扶拖拉机专业的。不用多久,我就会升职加薪,当上CEO,走上人生巅峰。";
var result;
// 没有主动调用nodejieba.load载入词典的时候,
// 会在第一次调用cut或者其他需要词典的函数时,自动载入默认词典。
// 词典只会被加载一次。
// 精确模式
result = nodejieba.cut(sentence);
console.log(result);
// 隐马尔可夫模型
result = nodejieba.cutHMM(sentence);
console.log(result);
// 全模式
result = nodejieba.cutAll(sentence);
console.log(result);
// 搜索引擎模式
result = nodejieba.cutForSearch(sentence);
console.log(result);
// 词性标注:根据词性来分
result = nodejieba.tag(sentence);
console.log(result);
var topN = 5;
// 关键词抽取,topN表示取前N个
result = nodejieba.extract(sentence, topN);
console.log(result);
result = nodejieba.cut("男默女泪");// 精确模式下分成四个字
console.log(result);
// 将该词汇插入词库
nodejieba.insertWord("男默女泪");
result = nodejieba.cut("男默女泪");// 在词库中已有的情况下,不细分了
console.log(result);
// 设定分词后的单个元素最大长度
result = nodejieba.cutSmall("南京市长江大桥", 3);
console.log(result);

以上就是 Node.js 中文分词库 nodejieba 的使用详解,更多关于 Node.js 文本数据处理的资料请关注本站其他相关文章!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章