前端集合 - 关注前端技术和互联网免费资源

关注前端技术和互联网免费资源

分类儿

页面儿

搜索儿

前端集合 RSS订阅
Home » 前端集合 » 3大Node.js中文分词模块对比

3大Node.js中文分词模块对比

发布者:前端集合 // 发布时间:2016-12-01 23:58:00 // 分类:前端集合 // 访问: 12,399 次 // 热度:

3大Node.js中文分词模块对比

最近有个需求,需要对文章自动设置关键词。关键词根据标题来获取,那么就需要一个效果比较好的中文分词模块。我在网上找到了3个效果还可以的node.js模块,并测试了它们的分词效果。

三大Node.js中文分词模块是什么

三大Node.js中文分词模块效果对比测试

我从网易的热门新闻中取了3个标题,进行效果测试。

测试代码如下:

/**
 * node-segment 实例
 */
// 载入模块
var Segment = require('segment');
// 创建实例
var segment = new Segment();
// 使用默认的识别模块及字典,载入字典文件需要1秒,仅初始化时执行一次即可
segment.useDefault();
segment.loadStopwordDict('stopword.txt');

/**
 * nodejieba
 */
var nodejieba = require("nodejieba");
nodejieba.load({
    dict: nodejieba.DEFAULT_DICT,
    hmmDict: nodejieba.DEFAULT_HMM_DICT,
    idfDict: nodejieba.DEFAULT_IDF_DICT,
    stopWordDict: nodejieba.DEFAULT_STOP_WORD_DICT
});

/**
 * node-analyzer
 */
var Segmenter = require('node-analyzer');
var segmenter = new Segmenter();

// 原始词组
var text = [
    '非洲富二代娶中国媳妇 送女方父亲劳斯莱斯.',
    '美女开猛禽车位不够大 物业: 你买俩车位呗',
    '这些都是重量级选手, 广州车展全新SUV盘点'
];

for (var i = 0, len = text.length; i < len; i++) {
    var curTxt = text[i];

    console.log('【node-segment】 的分词结果为:\n' + segment.doSegment(curTxt, {
            simple: true,
            stripStopword: true
        }));

    var jieba = nodejieba.extract(curTxt, 5);
    var newJieba = [];
    for (var j = 0, jlen = jieba.length; j < jlen; j++) {
        var tempJieba = jieba[j] || {};

        if (tempJieba.word) {
            newJieba.push(tempJieba.word);
        }

        if (newJieba.length === jlen) {
            console.log('【nodejieba】 的分词结果为:\n' + newJieba.join(','));
        }
    }

    console.log('【node-analyzer】 的分词结果为:\n' + segmenter.analyze(curTxt) + '\n');
}

三大Node.js中文分词模块测试结果

【node-segment】 的分词结果为:
非洲,富,二代,娶,中国,媳妇,送,女,方,父亲,劳斯莱斯

【nodejieba】 的分词结果为:
劳斯莱斯,女方,二代,媳妇,非洲

【node-analyzer】 的分词结果为:
非洲 富 二代 娶 中国 媳妇 送 女方 父亲 劳斯莱斯 .

【node-segment】 的分词结果为:
美女,开,猛禽,车位,不够,大,物业,买,俩,车位

【nodejieba】 的分词结果为:
车位,猛禽,美女,物业,不够

【node-analyzer】 的分词结果为:
美女 开 猛禽 车位 不够 大 物业 : 你 买 俩 车位 呗

【node-segment】 的分词结果为:
都是,重量,级,选手,广州,车展,全新,SUV,盘点

【nodejieba】 的分词结果为:
SUV,盘点,重量级,选手,车展

【node-analyzer】 的分词结果为:
这些 都是 重量级 选手 , 广州 车展 全新 SUV 盘点

3大Node.js中文分词效果总结

总的来说:nodejieba效果最好;node-segment和node-analyzer效果差不多,差强人意。

Tags: node.js, node, node.js分词, node.js中文分词, node中文分词, node分词

前端开发人员 Mac OS 必装免费软件>>  << 6大Node.js非关系型小型数据库
Top