一、关键词提取
如果要做一个敏感词检测的功能, 你对该需求的第一想法是什么呢?
当然是打开浏览器,百度、google、必应,CV工程师上线;
那,如果是想自己实现一个呢?
当然是先找到一个敏感词的词库,然后直接政策匹配呀,或者基于字符串的indexOf直接遍历啊。
那有没有其他的什么方法呢?
那那那,你都看到这了,肯定是也有这个问题对吧?
那这里推荐一个小小的库,基于nodejs的分词库 —— nodejieba。
这个库很小,有一套默认的词语优先级,简单使用时如下。
varnodejieba=require("nodejieba");varresult=nodejieba.cut("南京市长江大桥");console.log(result);//["南京市","长江大桥"]
在代码中引入库之后,将需要拆分的句子放进去,最后会返回分词结果,可以直接打印。
二、内容分词
如果是一整句话或者实际开发过程中的一段话,一篇文章,拆分之后会有大量的连接词啊之类的。
constnodejieba=require('nodejieba')varresult=nodejieba.cut('帝国主义要把我们的地瓜分掉')console.log(reult)/*['帝国主义','要','把','我们','的','地瓜','分','掉']*/
那么可以下面的方法来处理。
三、关键词抽取
下面代码可以查看提取的有意义的词语及其优先级,因为只是提取关键词可能会有遗漏,可以根据实际的需求进行选择哦。
varnodejieba=require('nodejieba')nodejieba.load({userDict:'./user.utf8'})vararticle=`一大串的中文字符`//将字符串全小写,避免出现同一单词区分计算,提取关键词数量varresult=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}]*/