nodejieba 内容分词和关键词提取

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

一、关键词提取

如果要做一个敏感词检测的功能, 你对该需求的第一想法是什么呢?

当然是打开浏览器,百度、google、必应,CV工程师上线;

image.png

那,如果是想自己实现一个呢?

当然是先找到一个敏感词的词库,然后直接政策匹配呀,或者基于字符串的indexOf直接遍历啊。

那有没有其他的什么方法呢?

那那那,你都看到这了,肯定是也有这个问题对吧?

那这里推荐一个小小的库,基于nodejs的分词库 —— nodejieba

这个库很小,有一套默认的词语优先级,简单使用时如下。

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

在代码中引入库之后,将需要拆分的句子放进去,最后会返回分词结果,可以直接打印。

二、内容分词

如果是一整句话或者实际开发过程中的一段话,一篇文章,拆分之后会有大量的连接词啊之类的。

const nodejieba = require('nodejieba')

var result = nodejieba.cut('帝国主义要把我们的地瓜分掉')

console.log(reult)

/*
[
  '帝国主义', '要',
  '把',    '我们',
  '的',    '地瓜',
  '分',    '掉'
]
*/
复制代码

那么可以下面的方法来处理。

三、关键词抽取

下面代码可以查看提取的有意义的词语及其优先级,因为只是提取关键词可能会有遗漏,可以根据实际的需求进行选择哦。

var nodejieba = require('nodejieba')

nodejieba.load({
  userDict: './user.utf8'
})

var article = `一大串的中文字符`
// 将字符串全小写, 避免出现同一单词区分计算,   提取关键词数量
var result = nodejieba.extract(article.toLowerCase(), 4)

console.log(result);
/*
	[
    { word: 'person', weight: 716.091462732096 },      
    { word: 'prototype', weight: 551.7426024329264 },  
    { word: '原型', weight: 335.0089885136 },
    { word: 'constructor', weight: 305.21931198417207 }
  ]
*/
复制代码

猜你喜欢

转载自juejin.im/post/7016704135944732702