`

自然语言处理工具中的中文分词器介绍

 
阅读更多

 

中文分词是中文文本处理的一个基础步骤,也是中文人机自然语言交互的基础模块,不同于英文的是,中文句子中没有词的界限,因此在进行中文自然语言处理时,通常需要先进行分词,分词效果将直接影响词性,句法树等模块的效果,当然分词只是一个工具,场景不同,要求也不同。在人机自然语言交互中,成熟的中文分词算法能够达到更好的自然语言处理效果,帮助计算机理解复杂的中文语言。

基于词典分词算法

基于词典分词算法,也称为字符串匹配分词算法。该算法是按照一定的策略将待匹配的字符串和一个已经建立好的"充分大的"词典中的词进行匹配,若找到某个词条,则说明匹配成功,识别了该词。常见的基于词典的分词算法为一下几种:正向最大匹配算法,逆向最大匹配法,最少切分法和双向匹配分词法等。

基于词典的分词算法是应用最广泛,分词速度最快的,很长一段时间内研究者在对对基于字符串匹配方法进行优化,比如最大长度设定,字符串存储和查找方法以及对于词表的组织结构,比如采用TRIE索引树,哈希索引等。

这类算法的优点:速度快,都是O(n)的时间复杂度,实现简单,效果尚可,

算法的缺点:对歧义和未登录的词处理不好。

基于理解的分词方法

这种分词方法是通过让计算机模拟人对句子的理解,达到识别词的效果,其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象,它通常包含三个部分:分词系统,句法语义子系统,总控部分,在总控部分的协调下,分词系统可以获得有关词,句子等的句法和语义信息来对分词歧义进行判断,它模拟来人对句子的理解过程,这种分词方法需要大量的语言知识和信息,由于汉语言知识的笼统、复杂性,难以将各种语言信息组成及其可以直接读取的形式,因此目前基于理解的分词系统还在试验阶段。

基于统计的机器学习算法

这类目前常用的算法是HMMCRFSVM,深度学习等算法,比如stanfordHanlp分词工具是基于CRF算法。以CRF为例,基本思路是对汉字进行标注训练,不仅考虑了词语出现的频率,还考虑上下文,具备良好的学习能力,因此对歧义词和未登录词的识别都具有良好的效果。

 

算法优点:能很好处理歧义和未登录词问题,效果比前一类效果好

算法缺点需要大量的人工标注数据,以及较慢的分词速度

现行常见的中文词分类器

常见的分词器都是使用机器学习算法和词典相结合的算法,一方面能够提高分词准确率,另一方面能够改善领域适应性。

随着深度学习的兴起,也出现了基于神经网络的分词器,例如有研究人员尝试使用双向LSTMCRF实现分词器,其本质上是序列标注,所以有通用性,命名实体识别等都可以使用该模型,据报道其分词器字符准确率可以高达97.5%,算法框架的思路与论文《Neural Architectures for Named Entity Recogintion》类似,利用该框架可以实现中文分词,如下图所示




 

首先对语料进行字符嵌入,将得到的特征输入给双向的LSTM,然后加一个CRF就得到标注结果。

分词器当前存在问题

目前中文分词难点主要有三个:

1. 分词标准:比如人名,在哈工大的标准中姓和名是分开的,但是在Hanlp中是合在一起的,这需要根据不同的需求制定不同的分词标准。

2. 歧义:对于同一个待切分字符串存在多个分词结果。

歧义又分为组合歧义,交集型歧义和真歧义三种分类。

1)组合型歧义:分词是有不同的粒度的,指某个词条中的一部分也可以切分未一个独立的词条,

2)交集型歧义:在“郑州天和服装厂”中,“天和”是厂名,是一个专有名词,“和服”也是一个词,它们共用了“和”字

3)真歧义:本身的语法和语义都没有问题,即便采用人工切分也会产生同样的歧义,只有通过上下文的语义环境才能给出正确的切分结果,例如:对于句子“美国会通过对台售武法案”,既可以切分成“美国//通过...”也可以切分成“美/国会/通过...

一般在搜索引擎中,构建索引时和查询时会使用不同的分词算法,常用的方案是,在索引的时候,使用细粒度的分词以保证召回,在查询的时候使用粗粒度的分词以保证精度。

3. 新词:也称未被词典收录的词,该问题的解决依赖于人们对分词技术和汉语语言结构进一步认识。

部分分词器的简单说明:

 

哈工大的分词器:主页上给过调用接口,每秒请求的次数有限制。

清华大学THULAC:目前已经有JavaPythonC++版本,并且代码开源。

斯坦福分词器:作为众多斯坦福自然语言处理中的一个包,目前最新版本3.7.0 Java实现的CRF算法。可以直接使用训练好的模型,也提供训练模型接口。

Hanlp分词:求解的是最短路径。优点:开源、有人维护、可以解答。原始模型用的训练语料是人民日报的语料,当然如果你有足够的语料也可以自己训练。

结巴分词工具:基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG);采用了动态规划查找最大概率路径找出基于词频的最大切分组合;对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法。

字嵌入+Bi-LSTM+CRF分词器:本质上是序列标注,这个分词器用人民日报的80万语料,据说按照字符正确率评估标准能达到97.5%的准确率,各位感兴趣可以去看看。

ZPar分词器:新加坡科技设计大学开发的中文分词器,包括分词、词性标注和Parser,支持多语言,据说效果是公开的分词器中最好的,C++语言编写。

关于速度

由于分词是基础组件,其性能也是关键的考量因素。通常,分词速度跟系统的软硬件环境有相关外,还与词典的结构设计和算法复杂度相关。比如我们之前跑过字嵌入+Bi-LSTM+CRF分词器,其速度相对较慢。

 

作者:lovive

  • 大小: 25.1 KB
分享到:
评论

相关推荐

    自然语言处理分词_中文分词词库整理词库下载地址.txt

    自然语言处理(NLP)是计算机科学、人工智能以及语言学领域中一个非常重要的分支,其目的是让计算机能够理解人类的自然语言。在这个过程中,分词是其中的一个基础而关键的步骤,特别是在中文分词中尤为重要。中文...

    自然语言处理:使用哈工大 PLT进行中文分词、词性分析及可视化

    总的来说,哈工大的PLT是一个强大的工具,它简化了中文自然语言处理的流程,提高了处理效率,同时也提供了可视化的手段,使得分析结果更加直观易懂。对于NLP初学者和专业人士来说,掌握如何利用PLT进行中文分词、...

    自然语言处理分词_中文分词词库整理httpcws_dict.txt

    标题“自然语言处理分词_中文分词词库整理httpcws_dict.txt”所涉及的知识点是关于自然语言处理(Natural Language Processing,简称NLP)中的中文分词技术。中文分词是中文信息处理的基础,其目的是将连续的文本...

    自然语言处理数据集(NLP)-200多万条中文分词词库.rar

    "自然语言处理数据集(NLP)——200多万条中文分词词库.rar"这个压缩包文件提供了一个大规模的中文分词资源,包含超过两百万条词汇信息,对于研究者和开发者来说,这是一个宝贵的工具。 中文分词是NLP中的预处理...

    自然语言处理分词_中文分词词库整理30wdict_utf8.txt

    现代中文分词技术中,常见的分词系统如ICTCLAS(中文分词和词性标注系统)、Hanlp(汉语自然语言处理工具包)等,它们通常包含了丰富的词库,并结合了上述各种算法来实现高效的中文分词。 总结起来,中文分词技术是...

    自然语言处理NLP中文分词之公司名字词库.zip

    总之,"自然语言处理NLP中文分词之公司名字词库"为理解和处理中文文本中的公司和组织名称提供了宝贵的资源,对于提升NLP系统在商业场景下的性能具有重要意义。无论是学术研究还是实际应用,这些词库都是不可或缺的...

    自然语言处理-概率最大中文分词

    在这个主题中,“概率最大中文分词”是自然语言处理中的基础任务,其目标是将连续的汉字序列分割成具有独立语义的词语,以便进一步的文本分析和理解。 “Segmentation.py”很可能是一个Python脚本,用于实现中文...

    基于java的中文自动分词(自然语言处理)

    总的来说,这个基于Java的中文自动分词项目为开发者和研究者提供了一个实践和学习自然语言处理技术的平台,无论你是想了解分词算法的内部工作原理,还是需要一个现成的分词工具,都能从中受益。通过深入研究源码,...

    基于bert的中文自然语言处理工具,包括情感分析、中文分词、词性标注、以及命名实体识别功能,并提供文本分类任务、序列标注任务、句

    基于bert的中文自然语言处理工具,包括情感分析、中文分词、词性标注、以及命名实体识别功能,并提供文本分类任务、序列标注任务、句对关系判断任务的训练与预测接口 说明 基于bert的中文自然语言处理工具 包括情感...

    自然语言处理NLP中文分词之中文分词词库整理.zip

    在这个“自然语言处理NLP中文分词之中文分词词库整理”的压缩包中,包含了一些用于中文分词的重要资源: 1. `thirtyw.py` 和 `thirtyw.pyc`:这可能是一个Python脚本和其对应的已编译版本,通常用于实现特定的分词...

    自然语言处理NLP中文分词之地名词库.zip

    总的来说,自然语言处理中的中文分词和地名词库是提高文本理解精度的关键工具。从THUOCL_diming.txt 和青岛道路名称Tsingtao_roads 这样的资源出发,我们可以构建高效的分词系统,更好地服务于各类NLP应用场景。

    Jiagu深度学习自然语言处理工具.rar

    推荐一个新的开源中文深度学习自然语言处理工具:Jiagu, 包括中文分词、词性标注、命名实体识别、情感分析、新词发现、关键词、文本摘要等。贡献者包括 Yener、zengbin93、dirtdust,感兴趣的同学可以试用,Github...

    常用中文分词器及地址链接

    中文分词器是一种非常重要的自然语言处理技术,能够将中文文本分割成单个词语,以便于文本挖掘、信息检索和机器学习等应用。当前有多种中文分词器可供选择,每种分词器都有其特点和优势,本文将对当前常用的中文分词...

    人工智能-项目实践-数据预处理-基于bert的中文自然语言处理工具,包括情感分析、中文分词、词性标注、以及命名实体识别功能

    基于bert的中文自然语言处理工具 包括情感分析、中文分词、词性标注、以及命名实体识别功能 提供了训练接口,通过指定输入输出以及谷歌提供的下载好的预训练模型即可进行自己的模型的训练,训练任务有task_name参数...

    Lucene中文分词器组件

    3. **HanLP**:由百度开源的自然语言处理库,不仅提供分词功能,还包含词性标注、命名实体识别等高级功能。其分词效果优秀,但相对于其他分词器,可能会有更高的资源消耗。 4. **jieba分词**:jieba是一款流行的...

    ansj中文分词工具

    ansj(Ansj for NLP,自然语言处理)是由李东创建并维护的一款高性能、高准确度的中文分词和词性标注系统。它基于字典匹配和统计模型相结合的方法,能够处理各种复杂语境下的中文分词问题,广泛应用于搜索引擎、信息...

    自然语言处理NLP中文分词之古诗词库.zip

    "自然语言处理NLP中文分词之古诗词库.zip"这个压缩包文件显然提供了一个专门针对古诗词的中文分词数据集。 古诗词是中国文化瑰宝,其语言精炼、意境深远,但同时由于其独特的艺术形式和用词,对中文分词提出了更高...

    自然语言处理NLP中文分词之中文缩写库.zip

    中文缩写库可能是为了处理中文中常见的缩写现象,如“NLP”代表“自然语言处理”。这种库通常包含了大量的常见缩写及其全称,以便在分词过程中准确识别和处理这些特殊词汇。例如,"CCTV" 应被识别为 "中国中央电视台...

    AI人工智能课程 NLP技术-自然语言处理入门资料 中文分词(1) 共27页.pdf

    总之,中文分词是自然语言处理中不可或缺的一环,涉及词典匹配、数据结构优化以及概率模型等多个方面。掌握这些技术对于理解和应用NLP至关重要,尤其是在开发中文文本处理系统时。通过不断学习和实践,我们可以提高...

    庖丁解牛 中文分词工具

    这个工具的核心功能是将中文文本拆分成有意义的词语,这对于中文信息处理、自然语言理解和搜索引擎优化等场景至关重要。分词是中文文本处理的基石,因为它能将连续的汉字序列划分为具有语义意义的单元,便于后续的...

Global site tag (gtag.js) - Google Analytics