Nodejs也能做文本数据处理了,快来看看吧!

news2025/1/20 1:48:41

随着汉语言的广泛应用,中文信息处理成了一个重要的研究课题,常见于搜索引擎:信息检索、中外文自动翻译、数据挖掘技术、自然语言处理等领域。在处理的过程中,中文分词是最基础的一环。

nodejieba 简介

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

nodejieba模块支持以下3种分词模式:

(1) 精确模式,试图将句子最精准地切开。

(2) 全模式,将句子中所有可以成词的词语都扫描出来,速度非常快。

(3) 搜索引擎模式,在精确模式的基础上对长词再次切分。

特点

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

常用API

noedejieba模块中提供了一系列函数,常用的有cut()函数、cutAll()函数、cutForSearch()函数、tag()函数、extract()函数

1.cut()函数用来做精确模式下的内容分词,仅有1个参数sentence,表示需要分词性的内容字符串格式。

2.cutAll()函数用来做全模式下的内容分词,仅有1个参数sentence,表示需要分词性的内容字符串格式。

3.cutForSearch()函数用来做搜索引擎模式下的内容分词,仅有1个参数sentence,表示需要分词性的内容字符串格式。

4.tag()函数用来做词性标注,即根据词性来做分词分类,仅有1个参数sentence,表示需要分词性的内容字符串格式。

5.extract()函数用来做关键词抽取,有如下2个参数:

  • 第一个参数为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); 

最后

最近还整理一份JavaScript与ES的笔记,一共25个重要的知识点,对每个知识点都进行了讲解和分析。能帮你快速掌握JavaScript与ES的相关知识,提升工作效率。



有需要的小伙伴,可以点击下方卡片领取,无偿分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/152206.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安装thinkphp

[TOC]目录 1. 安装composer 方法:https://www.kancloud.cn/manual/thinkphp6_0/1037481 官网教程中安装composer 2. 配置文件 在命令行中 阿里云: composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 华为云&#x…

axios基础学习——通过 Vue + axios 获取接口数据的小demo

文章目录 📋前言 🎯关于axios概要 ❓什么是axios 🧩axios特性 🧩axios浏览器支持情况 🎯axios安装与使用 🧩axios请求方法 🧩axios的使用方法(以get为例子) &am…

[C语言]进一步的来了解指针(多多多图详解)

本文章进一步的来讲解指针,如果是第一次接触指针的可以先看一下对于指针的初步理解 : [C语言]初步的来了解一下指针(多图详解)_HY_PIGIE的博客-CSDN博客 目录 1.字符指针 2.指针数组 2.1指针数组:char*类型举例说明 2…

Thawte旗下通配符SSL证书都有什么区别

Thawte由南非Mark Shuttleworth创立,Thawte SSL证书产品占据了全球SSL数字证书市场的40%,是全球第三大数字证书颁发机构(CA)。随后VeriSign于2000年2月1日以5.75亿美元对Thawte换股完成收购,互相合作&#…

GDI对象泄漏导致程序UI界面绘制异常的问题排查

目录 1、问题说明 2、初步分析 3、查看任务管理器,并使用GDIView工具分析 5、采用历史版本比对法,确定初次出现问题的时间点,并查看前一天的代码修改记录 6、将修改的代码与测试现象结合起来,最终定位问题 7、事后的思考 8…

Simulating Content Consistent Vehicle Datasets with Attribute Descent(略读)

提出了一个大型的3D合成数据集VehicleX。其中各个3D模型都有现实世界的车型对应。整个数据集有1362个id,其中包括11种主流车型。 论文:https://arxiv.org/pdf/1912.08855.pdf 摘要 本文使用图形引擎来模拟带有免费注释的大量训练数据。 在合成数据和真…

回归预测 | MATLAB实现RF随机森林多输入单输出回归预测(含回归树,误差柱状图,多指标)

回归预测 | MATLAB实现RF随机森林多输入单输出回归预测(含回归树,误差柱状图,多指标) 目录 回归预测 | MATLAB实现RF随机森林多输入单输出回归预测(含回归树,误差柱状图,多指标)效果分析基本介绍输出结果程序设计学习总结参考资料效果分析

Mars3D Studio平台发布

近日我们基于提供丰富及智能化功能,助力团队做出精美的交互场景的理念,研发了Mars3D Studio平台,于2023年1月10日正式发布上线!欢迎大家访问http://studio.mars3d.cn/ 网站进行体验。一、资源广场团队公开的丰富资源数据&#xff…

LeetCode题目笔记——1658. 将 x 减到 0 的最小操作数

文章目录题目描述题目难度——中等方法一:反向思考,双指针求最长子数组代码/Python代码/C方法二:滑动窗口代码总结我把这篇也归到面试题那一栏,因为觉得这题的思路和思考方式还挺好的,或许能用到其他题上 题目描述 给…

基于Node.js Vue清新严选助农电商平台/电商平台/购物平台

摘 要网络技术的快速发展给各行各业带来了很大的突破,也给各行各业提供了一种新的管理模块,对于清新严选助农电商将是又一个传统管理到智能化信息管理的改革,设计清新严选助农电商平台的目的就是借助计算机让复杂的购买商品操作变简单&#x…

gcc和gdb的使用——Linux

Linux学习全部合集点击即可订阅 “人生得意须尽欢” 这里是目录标题gcc的基本操作gcc处理代码的步骤预处理编译汇编链接头文件和库静态库动态库gdb调试makefile什么是makefile?进度条的实现缓冲区回车和换行git的使用.gitigonregcc的基本操作 编写代码的最基本操作…

【工具Share】用VBA获取批量文件中的同一个单元格内容

最近鼓捣了个工具,可以批量从固定文件夹的excel中获取同一个单元格中的具体内容(当然,你也可以根据自己的需要,进行多个单元格内容的取得) 可能这么说比较抽象,举例来说比如你在多个相同模板的excel中定义了…

java循环结构的概述

在之前的文章中,已经给大家详细地介绍过变量相关的内容,比如变量的概念、命名规范、变量的定义及底层原理等内容。但其实变量还有作用范围的概念,并且根据作用范围的不同,变量还可以分为成员变量、局部变量等内容。在我们今天开始…

Nacos config 配置中心详解

Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置。Spring Cloud Alibaba Naco…

【算法基础(1)】认识时间复杂度和常用排序算法

1 认识时间复杂度 1.1 什么是时间复杂度? 时间复杂度是一个函数,它定性描述该算法的运行时间,在软件开发中,时间复杂度就是用来方便开发者估算出程序运行时间,通常用算法的操作单元数量来代表程序消耗的时间&#xf…

pageoffice在线编辑word文件并禁止选中

一、整篇文档禁止选中 wordDoc.setDisableWindowSelection(true); //禁止word的选择文字功能 二、根据条件判断是否禁止选中 比如:选中内容超过一定字数,取消选中 解决方案:使用后端提供的OnWordSelectionChange事件。 PageOfficeCtrl po…

sgRNAs基因编辑

CRISPR-Cas9知识学习笔记 https://www.163.com/dy/article/FGCP58KC0532AN5N.html https://crispr.dbcls.jp CRISPR(clustered regularly interspaced short palindromic repeats,成簇的规律间隔短回文重复序列)和CRISPR-associated protein …

Spring Cloud Gateway服务网关的部署与使用(结合nacos)

一、微服务网关1.什么是微服务网关在传统的单体架构中,我们只需要开放一个服务给客户端调用即可。但是微服务架构中是将一个系统拆分成多个微服务,不同的微服务一般会有不同的网络地址,客户端在访问这些微服务时必须记住几十甚至百个地址&…

springboot多项目结构

微服务的目录结构一般分为如下几个模块: 当我们做的项目稍微大一点之后,就会经常遇到需要把不同的模块分离出来的时候,比如微信的朋友圈、微信支付、聊天服务等模块,像这种微服务项目一般都会把base、common、前端抽离出来。 com…

DP8403国产3W双通道无滤波器D类立体声音频放大器兼容替代CS8403

目标DP8403简介功能框图:DP8403主要特性DP8403简介 DP8403是3W双通道无滤波器D类立体声音频功率放大器芯片,能够以D类放大器的效率提供AB类功率放大器的性能。采用D类结构,DP8403 能够在 4Ω负载和 5V 电源条件下,提供高达 3W 输…