js实现中文分词的4种方式
中文分词指的是讲一段话拆解成不同的词汇,并且标注词性,这在搜索引擎中使用比较频繁,在js中也可以进行中文的分词处理,今天介绍4种方式:
一、浏览器中使用js进行分词
浏览器中使用js进行分词,我们使用chrome浏览器内置的库Segmenter库,示例代码:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum=1.0,minimum=1.0,user-scalable=0" /> <title>BFW NEW PAGE</title> <script type="text/javascript"> console.table(Array.from(new Intl.Segmenter('cn', { granularity: 'word' }).segment('欢迎来到BFW开发社区~~'))) </script> </head> <body> </body> </html>分词效果:
二、nodejieba库进行分词
安装
npm install nodejieba
示例代码:
var nodejieba = require("nodejieba"); var result = nodejieba.cut("欢迎来到BFW开发社区~~"); console.log(result);
三、segment库分词
安装
npm install segment
示例代码:
const Segment = require('segment'); const segment = new Segment(); segment.useDefault(); // 载入默认词典 //segment.loadDict('test.text'); // 载入字典,详见dicts目录,或者是自定义字典文件的绝对路径 const text = "欢迎来到BFW开发社区~~"; console.log(segment.doSegment(text, { stripPunctuation: true //去除标点符号 }));
四、自己写一个中文分词
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <script type="text/javascript"> // 字典 var dict = { "家乡" : 1, "松花" : 1, "松花江" : 1, "那里" : 1, "四季" : 1, "四季迷人" : 1, "迷人" : 1, "花香" : 1 }; // 停止词 var stop = { "的" : 1 }; // 待分词的字符串 var words = "我的家乡在松花江边上,那里有四季迷人的花香。"; function splitWords(words) { var start = 0, end = words.length - 1, result = []; while (start != end) { var str = []; for (var i = start; i <= end; i++) { var s = words.substring(i, i + 1); // 如果是停止词,则跳过 if (s in stop) { break; } str.push(s); // 如果在字典中,则添加到分词结果集 if (str.join('') in dict) { result.push(str.join('')); } } start++; } return result; } console.group("Base 分词: "); console.log("待分词的字符串: ", words); console.log("分词结果: ", splitWords(words)); console.groupEnd(); </script> </body> </html>
网友评论0