中文分词是中文文本处理的一个基础步骤,也是中文人机自然语言交互的基础模块。不同于英文的是,中文句子中没有词的界限,因此在进行中文自然语言处理时,通常需要先进行分词,分词效果将直接影响词性、句法树等模块的效果。当然分词只是一个工具,场景不同,要求也不同。
在人机自然语言交互中,成熟的中文分词算法能够达到更好的自然语言处理效果,帮助计算机理解复杂的中文语言。在构建中文自然语言对话系统时,结合语言学不断优化,训练出了一套具有较好分词效果的算法模型,为机器更好地理解中文自然语言奠定了基础。
在此,对于中文分词方案、当前分词器存在的问题,以及中文分词需要考虑的因素及相关资源,竹间智能 自然语言与深度学习小组 做了些整理和总结,希望能为大家提供一些参考。
中文分词根据实现原理和特点,主要分为以下2个类别:
<!--[if !supportLists]-->1、<!--[endif]-->基于词典分词算法
也称字符串匹配分词算法。该算法是按照一定的策略将待匹配的字符串和一个已建立好的“充分大的”词典中的词进行匹配,若找到某个词条,则说明匹配成功,识别了该词。常见的基于词典的分词算法分为以下几种:正向最大匹配法、逆向最大匹配法和双向匹配分词法等。基于词典的分词算法是应用最广泛、分词速度最快的。很长一段时间内研究者都在对基于字符串匹peifang法进行优化,比如最大长度设定、字符串存储和查找方式以及对于词表的组织结构,比如采用TRIE索引树、哈希索引等。
2、基于统计的机器学习算法
这类目前常用的是算法是HMM、CRF、SVM、深度学习等算法,比如stanford、Hanlp分词工具是基于CRF算法。以CRF为例,基本思路是对汉字进行标注训练,不仅考虑了词语出现的频率,还考虑上下文,具备较好的学习能力,因此其对歧义词和未登录词的识别都具有良好的效果。
Nianwen Xue在其论文《Combining Classifiers for Chinese Word Segmentation》中首次提出对每个字符进行标注,通过机器学习算法训练分类器进行分词,在论文《Chinese word segmentation as character tagging》中较为详细地阐述了基于字标注的分词法。
常见的分词器都是使用机器学习算法和词典相结合,一方面能够提高分词准确率,另一方面能够改善领域适应性。
随着深度学习的兴起,也出现了基于神经网络的分词器,例如有人员尝试使用双向LSTM+CRF实现分词器,其本质上是序列标注,所以有通用性,命名实体识别等都可以使用该模型,据报道其分词器字符准确率可高达97.5%。算法框架的思路与论文《Neural Architectures for
Named Entity Recognition》类似,利用该框架可以实现中文分词,如下图所示:
首先对语料进行字符嵌入,将得到的特征输入给双向LSTM,然后加一个CRF就得到标注结果。
分词器当前存在问题:
目前中文分词难点主要有三个:
<!--[if !supportLists]-->1、<!--[endif]-->分词标准:比如人名,在哈工大的标准中姓和名是分开的,但在Hanlp中是合在一起的。这需要根据不同的需求制定不同的分词标准。
<!--[if !supportLists]-->2、<!--[endif]-->歧义:对同一个待切分字符串存在多个分词结果。歧义又分为组合型歧义、交集型歧义和真歧义三种类型。
<!--[if !supportLists]-->1) <!--[endif]-->组合型歧义:分词是有不同的粒度的,指某个词条中的一部分也可以切分为一个独立的词条。
<!--[if !supportLists]-->2) <!--[endif]-->交集型歧义:在“郑州天和服装厂”中,“天和”是厂名,是一个专有词,“和服”也是一个词,它们共用了“和”字。
<!--[if !supportLists]-->3) <!--[endif]-->真歧义:本身的语法和语义都没有问题, 即便采用人工切分也会产生同样的歧义,只有通过上下文的语义环境才能给出正确的切分结果。例如:对于句子“美国会通过对台售武法案”,既可以切分成“美国/会/通过对台售武法案”,又可以切分成“美/国会/通过对台售武法案”。
一般在搜索引擎中,构建索引时和查询时会使用不同的分词算法。常用的方案是,在索引的时候使用细粒度的分词以保证召回,在查询的时候使用粗粒度的分词以保证精度。
以下部分分词器的简单说明:
哈工大的分词器:主页上给过调用接口,每秒请求的次数有限制。
清华大学THULAC:目前已经有Java、Python和C++版本,并且代码开源
斯坦福分词器:作为众多斯坦福自然语言处理中的一个包,目前最新版本3.7.0, Java实现的CRF算法。可以直接使用训练好的模型,也提供训练模型接口。
Hanlp分词:求解的是最短路径。优点:开源、有人维护、可以解答。原始模型用的训练语料是人民日报的语料,当然如果你有足够的语料也可以自己训练。
结巴分词工具:基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG);采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合;对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法。
字嵌入+Bi-LSTM+CRF分词器:本质上是序列标注,这个分词器用人民日报的80万语料,据说按照字符正确率评估标准能达到97.5%的准确率,各位感兴趣可以去看看。
ZPar分词器:新加坡科技设计大学开发的中文分词器,包括分词、词性标注和Parser,支持多语言,据说效果是公开的分词器中最好的,C++语言编写。
相关推荐
相比其他分词器,盘古分词在处理中文词汇时,能够更好地处理多音字、成语和网络词汇,提高搜索结果的准确性。在Lucene中使用盘古分词,可以提升对中文文本的索引和检索性能。 三、整合Lucene与盘古分词 在Lucene中...
采用流式爬虫、中文分词、图片识别技术,实现互联网网页信息实时采集;采用 FTP 文件方式实现对数据文件的采集;采用 Socket 消息方式实现对消息数据的采集;采用 sqoop 方式实现将数据库数据装载到 HDFS 文件系统。...
- 使用流式爬虫、中文分词、图片识别技术采集互联网信息。 - FTP文件传输、Socket消息、sqoop等方式采集其他类型数据。 **计算存储服务:** - Hadoop中的HDFS提供大数据存储。 - Yarn提供资源管理。 - Hadoop实现非...
- **数据采集**:利用Flume、流式爬虫、中文分词和图片识别等技术,采集和解析不同来源的数据,如文件、消息、数据库等。 - **计算存储服务**:使用Hadoop HDFS存储大数据,Yarn进行资源管理,Hadoop和Spark进行...
数据采集利用Flume进行文件和消息采集,结合流式爬虫、中文分词和图片识别技术实现实时互联网信息采集。计算存储服务中,HDFS提供大数据存储,Yarn实现跨平台资源管理,Hadoop和Spark用于批处理和实时ETL。数据共享...
数据采集采用 FlumeII 框架,实现文件和消息采集与解析,使用流式爬虫、中文分词、图片识别技术,实现互联网网页信息实时采集。计算存储服务采用 Hadoop 中的 HDFS 文件系统提供统一的大数据数据存储,满足全量数据...
- **数据采集**:使用Flume框架进行文件和消息的采集与解析,采用流式爬虫、中文分词等技术实现网页信息实时采集。 - **计算存储服务**:采用Hadoop中的HDFS提供大数据存储,支持全量数据留存;基于Yarn实现资源统一...
此外,用户还可以自定义分词器,以满足特定语言或业务需求,例如中文分词器(Smart Chinese Analyzer)用于处理中文文本。 **二、Head插件** Head插件是Elasticsearch的一个可视化管理工具,通过Web界面提供集群...
数据采集部分使用Flume、流式爬虫、中文分词等工具获取并解析数据。计算存储服务依托HDFS存储大量数据,Yarn进行资源管理,Spark处理部分实时ETL任务,DB2存储高并发指标数据。数据共享服务通过RESTful API和消息...
### Hadoop实战中文版知识点概览 #### 一、Hadoop概述 - **定义与背景**:Hadoop是一个开源框架,用于分布式存储和处理大型数据集。它最初由Apache软件基金会开发,旨在解决大规模数据处理的问题。 - **核心技术...
自然语言处理部分从统计机器学习的原理出发,包括了中文分词与词性标注的理论与实现及在搜索引擎中的应用等细节,同时对文档排重、文本分类、自动聚类、句法分析树、拼写检查等自然语言处理领域的经典问题进行了深入...
《源码探索:Elasticsearch核心机制解析》 在当今的大数据时代,Elasticsearch作为一款流行的全文搜索...深入研究源码,不仅可以帮助我们更好地理解和优化Elasticsearch,也有助于开发出更符合业务场景的解决方案。
java8 集合源码 git yujunhao8831 java jackson 字段动态过滤 Json 2 Pojo ...中文分词等 网页聊天 通信 可以借鉴 Java服务器应用程序的应用程序性能监视的开源解决方案 在GitHub上查看 前端 库 筛子
java8 集合源码 git java jackson 字段动态过滤 Json 2 Pojo User-agent-utils ...权限框架比较 ...中文分词等 网页聊天 通信 可以借鉴 Java服务器应用程序的应用程序性能监视的开源解决方案 Hiberna
- **常见问题与解答**:这部分内容汇总了开发者在使用过程中可能遇到的问题及其解决方案,对于遇到具体技术难题的人来说非常有用。 #### Keras安装和配置指南 - **Linux环境**:详细介绍了如何在Linux操作系统上...
分布式搜索引擎的关键技术实现包括了数据爬取、预处理、倒排索引表的建立、中文分词和索引数据的存储等步骤。数据爬取可以利用Heritrix工具进行抓取和预处理。Heritrix是一个可拆卸和替换组件的平台架构,支持对链接...
而对于汉语,则需要进行分词处理,因为汉字之间没有明显的分隔符。 - **关键词表的选择**:在建立索引时,需要确定合适的关键词表。如果使用汉字作为索引项,由于常用汉字数量有限(大约三千多个),会导致每个文档...
首先,我们将接触到jieba库,它是Python中一款优秀的中文分词组件。jieba支持包括精确模式、全模式、搜索引擎模式等分词方式,并且提供了繁体支持。在处理中文文本时,jieba的cut方法可以帮助我们有效地将句子切分为...