小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
一、关键词提取
如果要做一个敏感词检测的功能, 你对该需求的第一想法是什么呢?
当然是打开浏览器,百度、google、必应,CV工程师上线;
那,如果是想自己实现一个呢?
当然是先找到一个敏感词的词库,然后直接政策匹配呀,或者基于字符串的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 }
]
*/
复制代码