本篇给大家分享baiziyu 写的HanLP 中的N-最短路径分词。以为下分享的原文,部分地方有稍作修改,内容仅供大家学习交流!
首先说明在HanLP对外提供的接口中没有使用N-最短路径分词器的,作者在官网中写到这个分词器对于实体识别来说会比最短路径分词稍好,但是它的速度会很慢。对此我有点个人看法,N-最短路径分词相较于最短路径分词来说只是考虑了每个节点下的N种最佳路径,在最后选出的至少N条路径中,作者并没有对他们进行筛选,而只是选择了一条最优的路径,只能说N-最短路径分词相较于最短路径分词对分词歧义会有一定作用,而对于未登录词它的效果应该和最短路径分词相差不多,这只是个人的猜测,并没有拿真实的语料验证。如果后边还有时间的话,我会把几种分词器在新闻语料上做一次对比评测。但是这种评测的意义可能不大,因为毕竟领域不同分词器的效果也会不同,同文本分类一样,至今依然没有一种普适的分词器。
前边已经提到,在最短路径分词中,若每个结点处记录N种最短路径值,则该方法称为N-最短路径算法。在HanLP中通过两个类ViterbiSegment和NshortSegment分别实现了最短路径分词和N-最短路径分词。这里要说明一下为什么说是N种而不是N个,原因是算法会在每个字节点处对所有到达该节点的路径计算路径值,然后按照路径值做排序,所谓的“种”指的是路径值的种类数,因此当存在相等路径值的路径时,节点处保留的路径就不只有N个了。
从上图的继承关系我们可以看到最短路径分词器和N最短路径分词器都继承了WordBasedSegment抽象类,也就是说他们从大类上讲都属于基于词语的分词器。后边我们还会介绍基于词典的分词器(极速词典分词器)以及基于字的分词器(感知机、条件随机场分词器)。这里再说明一下抽象类Segment它对外提供了分词方法Seg,所有HanLP中实现的分词方法类都继承了该抽象类,并且实现了抽象方法segSentence。Seg方法对输入的文本进行处理,当文本长度很长时,它会自动将其拆分为多个短文本,然后利用多线程技术,同步对多个短文本进行分词处理,最后得到分词后的文本,对于短文本Seg方法则直接用单线程处理。segSentence则会根据各种不同的分词方法对文本进行分词。这里Seg方法会调用segSentence方法,这就是两个方法的关系。拿我们现在的N-最短路径分词来说,segSentence实现的就是N-最短路径分词。如果是最短路径分词,则segSentence实现的是最短路径分词。写这些只是为了使刚接触面向对象编程方法的小伙伴能清楚。
下边我们还是以例句“他说的确实在理”为例来说明N-最短路径分词。程序对外表现就是计算出下边的表
这里我们使N-最短路径分词中的N取2,可以看到算法从“实”字开始就开始有多种最优路径了,截取了前top2种,最后得到了下边的两种分词结果
至此,我们N-最短路径分词介绍结束,我们再来总结一下HanLP中两种方法的异同。
(1) 第1个区别是节点上保留的最优路径前驱节点数。具体来说,当某个节点存在两个以上前驱时,N-最短路径一定会保留topN种路径值的所有前驱节点,而最短路径只会保留一个最短路径值的前驱节点。
(2) HanLP在实现上对N-最短路径方法增加了数字、日期合并规则。
(3) HanLP的N-最短路径方法最终返回的还是一个最优路径,并未对topN个分词结果做筛选策略,虽然在有多个前驱的节点处保留了多个候选前驱,但是个人感觉两者相差应该不多,可能对分词歧义有效果,但是对未登录词应该作用不大。说白了它也还是基于词典中单个词语的概率做的,其他的文本信息都没有用到。
这里,还要再说明一下,我们看到了分词结果中含有了词性标注,关于词性标注我们会在后边继续介绍,它与分词方法是两个策略。程序也是先做了分词再根据用户配置做的词性标注。
相关推荐
中文分词是自然语言处理中的一个基础任务,对于后续的语义分析、机器翻译等应用具有重要意义。 #### 关键知识点详解 ##### 1. 中文分词简介 - **定义**:中文分词是指将连续的汉字序列切分成具有语义的单词序列的...
在自然语言处理(NLP)领域,中文分词是一项基础且关键的任务,它是指将连续的汉字序列切分成具有实际语义的词汇单元。在这个任务中,“最短路径分词算法”是一种常用的策略,用于解决如何高效准确地完成分词工作。...
中文词法分析是自然语言文本进行机器处理的前提和基础,也是中文信息处理的“瓶颈”之一。中文词法分析一般包括三个过程:预处理过程的词语粗切分,切分歧义的消解和未登录词识别、词性标注。每一个过程都存在着相应...
Java分词工具HanLP
在信息技术领域,自然语言处理(Natural Language Processing, NLP)是一项核心技能,而HanLP(全称:High-performance Natural Language Processing)是由国内知名NLP研究团队开发的一款高效、易用的Java库,专为...
HanLP,全称High-performance Natural Language Processing,是由北京大学计算机科学技术研究所开发的一款多语种、高性能的自然语言处理工具包。本文将围绕“hanlp-1.7.2-release.zip”这一压缩包展开,详细介绍其...
基于HanLP自然语言处理包的elasticsearch分词器 功能 本分词器使用HanLP提供的维特比分词 屏蔽了本地配置用户词典 增加同义词索引功能 增加远程词典热更新(用户词典,停词典,同义词典) 使用 目前支持的es版本为...
HanLP(全称:High-performance Natural Language Processing)是由著名华人科学家周靖人主导的自然语言处理工具包,它具有强大的中文分词、词性标注、命名实体识别、依存句法分析等功能。在Elasticsearch中集成...
总之,HanLP是一个强大而全面的自然语言处理工具,1.7.5版本的发布进一步提升了其处理效率和效果,为Java开发者提供了强大的NLP支持,无论是在学术研究还是在实际产品开发中,都能发挥重要的作用。通过学习和使用...
汉语言处理库HanLP是Java实现的自然语言处理(NLP)工具,广泛应用于文本分析、信息提取、情感分析等领域。最新版本V1.7.2包含了一系列优化和新功能,使得它在处理汉语文本时更为高效和准确。这次发布的压缩包提供了...
elasticsearch是使用比较广泛的分布式搜索引擎,es提供了一个的单字分词工具,还有一个分词插件ik使用比较广泛,hanlp是一个自然语言处理包,能更好的根据上下文的语义,人名,地名,组织机构名等来切分词
用于solr的中文分词,很好用,下载速度块
【N-最短路径方法】在中文词语粗分模型中,N-最短路径方法是一种常用的算法,它在处理中文词汇切分时考虑了多个可能的分词结果,并选取最合理的路径。这种方法的核心思想是通过构建有向图,将每个汉字视为图中的节点...
HanLP是由北京大学计算机科学技术研究所开发的一款高性能的自然语言处理工具包,提供了丰富的中文处理功能,包括但不限于分词、词性标注、命名实体识别、依存句法分析等。在Lucene中集成HanLP,能够极大地增强对中文...
本文提出了一种基于K最短路径的新中文分词算法——S-EK最短路径算法,通过优化路径选择策略有效提高了分词效率,为中文自然语言处理技术的发展提供了有力支持。未来的研究方向将集中在如何进一步提高分词算法的准确...
HanLP由北京大学计算机科学技术研究所开发,旨在提供高精度、高效的中文自然语言处理(NLP)服务。通过整合HanLP到OpenSearch,用户可以在索引和搜索过程中享受到更准确的分词、词性标注、命名实体识别等NLP功能。 ...
汉语文本处理库HanLP是Java领域内广泛使用的自然语言处理工具,由北京大学计算机科学技术研究所研制,具有分词、词性标注、命名实体识别、依存句法分析、语义角色标注等多种功能。"hanlp-1.7.3-release.zip"是一个...
hanlp-lucene-pluginHanLP中文分词Lucene插件基于HanLP,支持包括Solr(7.x)在内的任何基于Lucene(7.x)的系统。Maven < dependency> < groupId>...
手动下载hanlp相关jar包,用于python相关自然语言的工具,可进行分词、短语提取、摘要提取等