返回介绍

1 中文分词简介

发布于 2024-09-08 15:00:41 字数 7279 浏览 0 评论 0 收藏 0

中文分词实现方法有 词典,规则和统计方法 ,或者多种方法相互结合。

技术难点包括歧义识别,新词(未登录词) 识别等。

中文分词算法大概分为两大类

  1. 第一类是基于 字符串匹配 ,即扫描字符串,如果发现字符串的子串和词相同,就算匹配。
    这类分词通常会加入一些启发式规则,比如“正向/反向最大匹配”, “长词优先” 等策略。
    这类算法优点是速度块,都是 O(n) 时间复杂度,实现简单,效果尚可。
    也有缺点,就是对歧义和未登录词处理不好。
    歧义的例子很简单"长春市/长春/药店" "长春/市长/春药/店".
    未登录词即词典中没有出现的词,当然也就处理不好。
    ikanalyzer,paoding 等就是基于字符串匹配的分词。

  2. 第二类是基于统计以及机器学习的分词方式
    这类分词基于人工标注的词性和统计特征,对中文进行建模,即根据观测到的数据(标注好的语料)对模型参数进行估计,即训练。 在分词阶段再通过模型计算各种分词出现的概率,将概率最大的分词结果作为最终结果。常见的序列标注模型有 HMM 和 CRF。
    这类分词算法能很好处理歧义和未登录词问题,效果比前一类效果好,但是需要大量的人工标注数据,以及较慢的分词速度。
    ICTCLAS 是基于 HMM 的分词库。
    除了标注量,准确率和效果的考量,分词粒度也是一个需要考虑的指标。

歧义

  • 组合性歧义:一个串可以切开也可以不切开。
  • 交集型歧义:可以切在这里也可以切在那里。

1.1 常见的中文分词法

表格 1 常见中文分词方法列表

分词法简介典型软件
单字法 Uni-Gram按汉字单个切 
二元分词法(双字)Bi-Gram  
三元组 Tri-Gram  
正向最大匹配  
反向最大匹配一般优于正向最大匹配。 
双向匹配分词结合正向最大和逆向最大匹配。首先同时分词并比较,若不一致,按以下原则优先输出:词越少越好;分词结果越多越好。 
隐马尔科夫模型 HMM  
最大熵马尔科夫模型 MEMM  
CRF~Conditional Random Field 条件随机场基于 HMM 和 MEMM 为基础的出的一种判别式概率无向图学习模型,是一处用户标注和切分有序数据的条件概念模型。 

备注:Ngram,N 元切词:N 为切词的长度,如 N=1 单字法,N=2 二元分词法,N=3 三元组。

1.2 常见的中文分词开源项目

表格 2 常见 Java 中文分词工具简介

分词工具支持语言分词原理词典及扩展性
StandardAnalyzer中英文中文:单字符切分 英文:根据空格切分 
ChineseAnalyzer中文,不支持中文和英文及数字混合的文本分词按字分词,与 StandardAnalyzer 对中文的分词没有大的区别 
CJKAnalyzer中文,英文,不支持中文和英文及数字混合的文本分词采用的双字切分,也就是对一段文字按每两个字来进行切分 
IKAnalyzer英文字母、数字、中文词汇等分词处理,兼容韩文、日文字符正向迭代最细粒度切分算法 (词典+文法分析)收录 27 万中文词汇,支持用户词典扩展定义、支持自定义停止词
paoding中文支持不限制个数的用户自定义词库 
MMAnalyzer支持英文、数字、中文(简体)混合分词正向最大匹配算法支持动态扩展
MMSeg4j中文,包括一些字符的处理 英文、俄文、希腊、数字(包括①㈠⒈)的分出一连串的。目前版本没有处理小数字问题。用 Chih-Hao Tsai 的 MMSeg 算法。MMSeg 算法有两种分词方法:Simple 和 Complex,都是基于正向最大匹配。在 complex 基础上实现了最多分词(max-word)强制使用 UTF-8) 使用 sougou 词库,也可自定义覆盖
imdict中文、英文、数字隐马尔科夫模型仅 coredict 核心字典、bigramdict 词典,不含人名、地名词典。不支持自定义词典
HanLP   

表格 3 常见中文分词开源工具评测表格 4

分词组件开发语言准确率(%)速度(/sec)主要技术简介总评
SCWSC/C++90% ~ 95%1.2MB 基于词频词典的机械中文分词引擎 http://www.ftphp.com/scws/ 
ICTCLASC/C++98.45%996KBBigram+ HMM中科院发布,最早和最实用的中文开源分词项目之一。张平主导。 http://ictclas.org/推荐
ANSJJava   孙捷,ICTCAS 的 JAVA 版本,做了一些工程上的优化。 
HTTPCWSJava   基于 HTTP 协议的开源中文分词系统,目前仅支持 Linux 系统。
HTTPCWS 使用“ICTCLAS 3.0 2009 共享版中文分词算法”的 API 进行分词处理,得出分词结果。
 
CC-CEDICTJava   提供一份以汉语拼音为中文辅助的汉英辞典, Chrome 中文版就是使用的这个词典进行中文分词的。 http://cc-cedict.org/wiki/ 
IK-- IKAnalyzerJava 600KB 开源的,基于 java 语言开发的轻量级的中文分词工具包。采用了“正向迭代最细粒度切分算法“. http://code.google.com/p/ik-analyzer/现用
PaodingJava 1MB Paoding (庖丁解牛)基于 Java 的开源中文分词组件,提供 lucene 和 solr 接口,具有极高效率和高扩展性 。
http://code.google.com/p/paoding/
可试用
MMSEG4JJava98.41%1.2+MB 基于 Java 的开源中文分词组件,提供 lucene 和 solr 接口。
MMSeg 算法有两种分词方法:Simple 和 Complex,都是基于正向最大匹配。
http://code.google.com/p/mmseg4j/
可试用
海量中文智能分词C99.7%1.67MB 商业版本 http://www.hylanda.com/pro.php?smid=20 
JiebaPython  Unigram+ HMM由 fxsjy 开源。 http://python.jobbole.com/86603/ 
LTP   SP哈工大 2011 年开源。 SP~结构化感知器 
FNLPJava  PA复旦大学 2014 年开源。 PA~Passive-Aggressive 
THUAC   SP清华大学 2016 年开源。 
HanLPJava     

SCWS

Hightman 开发的一套基于词频词典的机械中文分词引擎,它能将一整段的汉字基本正确的切分成词。采用的是采集的词频词典,并辅以一定的专有名 称,人名,地名,数字年代等规则识别来达到基本分词,经小范围测试大概准确率在 90% ~ 95% 之间,已能基本满足一些小型搜索引擎、关键字提取等场合运用。45Kb 左右的文本切词时间是 0.026 秒,大概是 1.5MB 文本/秒,支持 PHP4 和 PHP 5。

ICTCLAS

这可是最早的中文开源分词项目之一,ICTCLAS 在国内 973 专家组组织的评测中活动获得了第一名,在第一届国际中文处理研究机构 SigHan 组织的评测中都获得了多项第一名。ICTCLAS3.0 分词速度单机 996KB/s,分词精度 98.45%,API 不超过 200KB,各种词典数据压缩后不到 3M.ICTCLAS 全部采用 C/C++编写,支持 Linux、 FreeBSD 及 Windows 系列操作系统,支持 C/C++、C#、Delphi、Java 等主流的开发语言。

IK

IKAnalyzer 是一个开源的,基于 java 语言开发的轻量级的中文分词工具包。从 2006 年 12 月推出 1.0 版开始,IKAnalyzer 已经推出了 3 个大版本。最初,它是以开源项目 Luence 为应用主体的,结合词典分词和文法分析算法的中文分词组件。新版本的 IKAnalyzer3.0 则发展为面向 Java 的公用分词组件,独立于 Lucene 项目,同时提供了对 Lucene 的默认优化实现。

Paoding

Paoding (庖丁解牛)基于 Java 的开源中文分词组件,提供 lucene 和 solr 接口,具有极 高效率 和 高扩展性 。引入隐喻,采用完全的面向对象设计,构思先进。高效率:在 PIII 1G 内存个人机器上,1 秒可准确分词 100 万汉字。 采用基于不限制个数 的词典文件对文章进行有效切分,使能够将对词汇分类定义。能够对未知的词汇进行合理解析

MMSEG4J

MMSEG4J 基于 Java 的开源中文分词组件,提供 lucene 和 solr 接口。

1)、mmseg4j 用 Chih-Hao Tsai 的 MMSeg 算法实现的中文分词器,并实现 lucene 的 analyzer 和 solr 的 TokenizerFactory 以方便在 Lucene 和 Solr 中使用。2)、MMSeg 算法有两种分词方法:Simple 和 Complex,都是基于正向最大匹配。Complex 加了四个规则过虑。官方说:词语的正确识别率达到了 98.41%。mmseg4j 已经实现了这两种分词算法。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文