JavaScript: 实现简单的中文分词

本文介绍了如何使用JavaScript进行简单的中文分词,包括基于字典的常规实现和利用Trie树进行优化。讨论了Trie树在处理大量词汇和共同前缀时的优势,并展示了如何解决分词过程中遇到的问题,如前缀匹配导致的错误。文章最后提到了标准Trie树与其他数组实现的中文Trie树,适合初步了解中文分词的读者。
摘要由CSDN通过智能技术生成

中文分词在大数据横行的今天是越来越有用武之地了。它不仅被广泛用于专业的中文搜索引擎中,而且在关键词屏蔽、黑白名单以及文本相似度等方面也能大显身手。中文分词最简单也最常用的方式是基于字典查找的方式,通过遍历待分词字符串并在字典中进行查找匹配以达到分词的目的。本文即是采用这种方式。

字典

在本文中,完全依赖于字典,因此需要准备好字典。一般面对不同的领域用不同的字典。比如面向医学的,则字典会添加许多医学术语方面的词。可以很容易的找到常用词的字典,比如搜狗输入法自带的字典等。

停止词

停止词不能用于成词。停止词主要包括无意义的字符(如的、地、得)或词。

常规实现

本文由于只是简单的介绍和实现,所以定义好了简单的字典和停止词,如下代码所示:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>简单的中文分词</title>
    <meta name="author" content="" />
    <meta http-equiv="X-UA-Compatible" content="IE=7" />
    <meta name="keywords" content="简单的中文分词" />
    <meta name="description" content="简单的中文分词" />
</head>
<body>
<script type="text/javascript">
// 字典
var dict  = {
	"家乡"     : 1,
	"松花"     : 1,
	"松花江"   : 1,
	"那里"     : 1,
	"四季"     : 1,
	"四季迷人" : 1,
	"迷人"     : 1,
	"花香"     : 1
};
// 停止词
var stop  = {
	"的" : 1
};
// 待分词的字符串
var words = "我的家乡在松花江边上,那里有四季迷人的花香。";
</script>
</body>
</html>

dict和stop之所以定义为Object,是因为这样可令查找的时间复杂度为常值O(1)。分词的过程有点像正则表达式的惰性匹配。先从words中读取第一个字符"我"并在dict中和stop中查找,如果是停止词,则丢掉已读取的,然后读取第二个字"的"。如果在dict中,则添加到结果集,然后继续读到下一个,再同样去stop和dict中查找,直到处理完成。代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>简单的中文分词</title>
    <meta name="author" content="" />
    <meta http-equiv="X-UA-Compatible" content="IE=7" />
    <meta name="keywords" content="简单的中文分词" />
    <meta name="description" content="简单的中文分词" />
</head>
<body>
<script type="text/javascript">
// 字典
var dict  = {
	"家乡"     : 1,
	"松花"     : 1,
	"松花江"   : 1,
	"那里"     : 1,
	"四季"     : 1,
	"四季迷人" : 1,
	"迷人"     : 1,
	"花香"     : 1
};
// 停止词
var stop  = {
	"的" : 1
};
// 待分词的字符串
var words
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值