nodejs使用nodejieba

Nodejieba是一个基于Node.js平台的中文分词模块,用于将中文文本切分成有意义的词汇。它是结巴中文分词的Node.js版本,结巴分词是一种开源的中文分词工具,广泛应用于中文自然语言处理领域

优点

  1. 高性能: Nodejieba的底层实现采用了C++,通过Node.js的插件机制与JavaScript集成,因此具有较高的性能。这使得Nodejieba在处理大规模文本数据时表现出色。

  2. 支持多种分词模式: Nodejieba支持多种分词模式,包括精确模式、搜索引擎模式和新词识别模式。这使得它适用于不同的应用场景,可以根据需求选择合适的分词模式。

  3. 用户自定义词典: 用户可以通过自定义词典来增加或修改分词器的词汇,以适应特定领域或特定项目的需求。这种灵活性使Nodejieba更适用于定制化的分词任务。

  4. 支持关键词提取: Nodejieba提供了关键词提取的功能,可以帮助用户快速了解文本的主题和重要信息,是文本摘要、主题分析等任务的有力工具。

  5. 支持词性标注: 除了分词功能外,Nodejieba还支持对词汇进行词性标注,为进一步的语义分析提供了基础。

  6. 广泛应用: 作为结巴中文分词的Node.js版本,Nodejieba在中文自然语言处理领域得到了广泛的应用,成为许多项目和应用中的首选分词工具。

  7. 开源: Nodejieba是开源项目,用户可以根据需要自由使用、修改和分发,同时也可以参与到项目的开发和改进中。

安装

  • 官网地址  GitHub - yanyiwu/nodejieba: "结巴"中文分词的Node.js版本
  • 下载命令   下载会很慢,建议使用淘宝镜像
    npm install nodejieba
  • 注意 我这里安装后会抛错 ,由于没有记录,借用一下别人的图,如下:

    解决方法我是按照这个博主的方法在本地编译,编译完成后大概如下图所示
    https://www.bilibili.com/video/BV1HH4y1z7Sg?p=1&vd_source=387b3bf6f7293c29f1cf7f181535349d



    在vscode里面下载本地文件即可
    注意:这个路径为你自己编译后的nodejieba文件路径
    npm install C:/path/to/nodejieba
    
  • 最后,检查是否安装成功
    完成安装后,package.json 文件中会添加 Nodejieba 作为项目的依赖项,而 package-lock.json 文件会记录确切的版本和路径信息。
    示例 package.json 
    "dependencies": {
      "nodejieba": "file:C:/path/to/nodejieba",
      // 其他依赖项...
    }

    示例 package-lock.json
     

    "nodejieba": {
      "version": "file:C:/path/to/nodejieba",
      "resolved": "C:\\path\\to\\nodejieba",
      // 其他信息...
    },
    // 其他依赖项...

使用nodejieba

  • 引入 Nodejieba 模块: 在你的 Node.js 代码中,引入 Nodejieba 模块:
    const nodejieba = require('nodejieba');
  • 初始化分词器: 在开始分词之前,需要初始化分词器。你可以使用 nodejieba.load() 方法初始化默认分词器,以下只是个人用法,可以不用和我一样
    jieba.load({
                userDict: 'C:/path/to/dictionary.txt',  // 添加自定义词典
                stopWordDict:'C:/path/to/stopwords.txt', //加载停用词文件
            });
  • 进行分词: 使用 nodejieba.cut 方法进行分词。该方法接受两个参数,第一个参数是要分词的文本字符串,第二个参数是分词的模式,例如 "cut" 表示精确模式,"cutAll" 表示全模式,"cutForSearch" 表示搜索引擎模式。
    const text = "我爱自然语言处理";
    const result = nodejieba.cut(text);
    console.log(result);

    输出结果类似于
     

    [ '我', '爱', '自然语言', '处理' ]
  • 其他功能
    添加自定义词典
    你可以通过 nodejieba.insertWord(word) 方法向分词器添加自定义词汇:
    nodejieba.insertWord('人工智能');

    关键词提取 Nodejieba 还提供了关键词提取的功能,通过 nodejieba.extract 方法实现,第一个参数为要提取的句子,第二个参数为提取几个关键词
     

    const keywords = nodejieba.extract(text, 5); // 提取前5个关键词
    console.log(keywords);

    比如输入‘怎么获取更多活动积分’,输出结果大概如下,word为关键词,weight为权重

      { word: '积分', weight: 8.28754954559 },
      { word: '获取', weight: 6.91781490051 },
      { word: '活动', weight: 4.71207177215 },
      { word: '怎么', weight: 4.41962335578 }

    进行词性标注使用 nodejieba.tag 方法进行词性标注。该方法接受一个文本字符串作为参数,并返回一个数组,每个元素是一个对象,包含了词汇和对应的词性。
     

    const text = "我爱自然语言处理";
    const taggedWords = nodejieba.tag(text);
    console.log(taggedWords);

    输出结果类似于
     

    [
      { word: '我', tag: 'r' },
      { word: '爱', tag: 'v' },
      { word: '自然语言', tag: 'l' },
      { word: '处理', tag: 'v' }
    ]
  • 释放分词器资源当不再需要使用分词器时,可以通过 nodejieba.release() 方法释放资源:

    nodejieba.release();

记录一下。。。。 

  • 23
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NodeJieba "结巴"分词的Node.js版本Introduction NodeJieba只是CppJieba简单包装而成的node扩展,用来进行中文分词。 详见NodeJiebaBlogInstallnpm install nodejieba 因为npm速度很慢而且经常因为墙的原因出现莫名其妙的问题,在此强烈建议使用cnpm,命令如下:npm --registry=http://r.cnpmjs.org install nodejieba默认分词算法初始化var segment = require("nodejieba"); segment.loadDict("./node_modules/nodejieba/dict/jieba.dict.utf8", "./node_modules/nodejieba/dict/hmm_model.utf8");阻塞式调用var wordList = segment.cutSync("阻塞模式分词"); if (wordList.constructor == Array) // just for tutorial, this is always be true  {     wordList.forEach(function(word) { console.log(word);          }); }非阻塞式调用segment.cut("非阻塞模式分词", function(wordList) {     wordList.forEach(function(word) { console.log(word);          }); });初始化var segment = require("nodejieba"); segment.queryLoadDict("./node_modules/nodejieba/dict/jieba.dict.utf8", "./node_modules/nodejieba/dict/hmm_model.utf8");阻塞式调用var wordList = segment.queryCutSync("阻塞模式分词"); if (wordList.constructor == Array) // just for tutorial, this is always be true  {     wordList.forEach(function(word) { console.log(word);          }); }非阻塞式调用segment.queryCut("非阻塞模式分词", function(wordList) {     wordList.forEach(function(word) { console.log(word);          }); }); 具体用法可以参考 test/segment.js test/query_segment.jsTesting 在node v0.10.2下测试通过http://cppjieba-webdemo.herokuapp.com/ (chrome is suggested)ThanksJieba中文分词 标签:nodejieba

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值