segment
Version:
Chinese word segmentation 中文分词模块
119 lines (103 loc) • 5.9 kB
JavaScript
var assert = require('assert');
var Segment = require('../');
describe('ChsNameTokenizer', function () {
var segment = null;
var toStringArray = function (arr) {
return arr.map(function (w) {
return w.w;
});
};
it('init', function () {
segment = new Segment();
segment.useDefault();
});
it('default test', function () {
var equal = function (a, b) {
a = toStringArray(segment.doSegment(a));
console.log(a.join('/'));
assert.equal(a.toString('\t'), b.toString('\t'));
};
console.log('分词测试');
// 常用测试题目
equal('随着智能化住宅小区的普及和宽带接入技术的发展,各种基于宽带技术的应用服务也日益被人们所熟悉。',
['随着', '智能化', '住宅小区', '的', '普及', '和', '宽带接入', '技术', '的', '发展', ',', '各种', '基于', '宽带', '技术', '的', '应用服务', '也', '日益', '被', '人们', '所', '熟悉', '。']);
equal('工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作。',
['工信处', '女', '干事', '每月', '经过', '下属', '科室', '都', '要', '亲口', '交代', '24口', '交换机', '等', '技术性', '器件', '的', '安装', '工作', '。']);
equal('永和服装饰品有限公司',
['永和', '服装', '饰品有限公司']);
equal('本科班学生',
['本科', '班', '学生']);
equal('一次性交一百元',
['一次性', '交', '一百元']);
equal('研究生命起源',
['研究', '生命', '起源']);
equal('李三买了一张三角桌子',
['李三', '买', '了', '一张', '三角', '桌子']);
equal('这就导致一些不太常见的人名无法被分出来',
['这', '就', '导致', '一些', '不', '太', '常见的', '人名', '无法', '被', '分', '出来']);
equal('杭州市长春药店',
['杭州市', '长春', '药店']);
equal('两个中国人名之间的成分',
['两个', '中国', '人名', '之间', '的', '成分']);
//equal('叶莲美的一位亲戚',
// ['叶莲美', '的', '一位', '亲戚']);
equal('前几天王老头刚收到小孩寄来的照片',
['前几天', '王老头', '刚', '收到', '小孩', '寄', '来', '的', '照片']);
// 针对特定类型识别
equal('1989年景甜出生于西安市。',
['1989年', '景甜', '出生', '于', '西安市', '。']);
equal('王五和张三丰、李强是谁',
['王五', '和', '张三丰', '、', '李强', '是谁']);
equal('她十二岁时是班花',
['她', '十二岁时', '是', '班花']);
equal('10个100%纯度的',
['10个', '100%', '纯度', '的']);
equal('分词正确率高达97.58%(即百分之九十七点五八,973专家评测结果)',
['分词', '正确率', '高达', '97.58%', '(', '即', '百分之九十七点五八', ',', '973', '专家', '评测', '结果', ')']);
equal('邮箱mail-me@mail.ucdok.com',
['邮箱', 'mail-me@mail.ucdok.com']);
equal('邮箱@mail.ucdok.com',
['邮箱', '@', 'mail.ucdok.com']);
equal('我的邮箱是leizongmin@gmail.com,mail-me@mail.ucdok.com',
['我', '的', '邮箱', '是', 'leizongmin@gmail.com', ',', 'mail-me@mail.ucdok.com']);
equal('欢迎访问我的个人主页http://ucdok.com娃哈哈',
['欢迎', '访问', '我', '的', '个人主页', 'http://ucdok.com', '娃哈哈']);
// 其他
equal('胡锦涛出席APEC领导人会议后回京',
['胡锦涛', '出席', 'APEC', '领导人', '会议', '后', '回京']);
equal('温家宝:主权问题中国绝不退让半步',
['温家宝', ':', '主权', '问题', '中国', '绝不', '退让', '半步']);
equal('吴邦国与伊朗议长举行会谈',
['吴邦国', '与', '伊朗', '议长', '举行', '会谈']);
equal('贾庆林会见厄瓜多尔客人',
['贾庆林', '会见', '厄瓜多尔', '客人']);
equal('李克强会见世界经济论坛主席并座谈',
['李克强', '会见', '世界经济', '论坛', '主席', '并', '座谈']);
equal('周永康会见新加坡荣誉国务资政',
['周永康', '会见', '新加坡', '荣誉', '国务', '资政']);
equal('4700万资金至贵州灾区,震区民众生活获保障',
['4700万', '资金', '至', '贵州', '灾区', ',', '震区', '民众', '生活', '获', '保障']);
equal('中国两艘海监船赴钓鱼岛宣示主权',
['中国', '两艘', '海监船', '赴', '钓鱼岛', '宣示', '主权']);
equal('中日关系因钓鱼岛问题面临严峻局面',
['中日关系', '因', '钓鱼岛', '问题', '面临', '严峻', '局面']);
equal('一一', ['一一']);
equal('一 一', ['一', '一']);
});
it('options: simple=true', function () {
assert.equal(segment.doSegment('永和服装饰品有限公司', {simple: true}).join('\t'),
['永和', '服装', '饰品有限公司'].join('\t'));
});
it('options: stripPunctuation=true', function () {
assert.equal(segment.doSegment('王五和张三丰、李强是谁', {simple: true, stripPunctuation: true}).join('\t'),
['王五', '和', '张三丰', '李强', '是谁'].join('\t'));
});
it('options: convertSynonym=true', function () {
assert.equal(segment.doSegment('何时入睡', {simple: true, convertSynonym: true}).join('\t'),
['什么时候', '入眠'].join('\t'));
});
it('options: stripStopword=true', function () {
assert.equal(segment.doSegment('因为李三买了一张三角桌子', {simple: true, stripStopword: true}).join('\t'),
['李三', '买', '一张', '三角', '桌子'].join('\t'));
});
});