`

HanLP-最短路径分词

 
阅读更多

 

今天介绍的内容是最短路径分词。最近换回了thinkpad x1,原因是mac的13.3寸的屏幕看代码实在是不方便,也可能是人老了吧,^_^。等把HanLP词法分析介绍结束后,还是会换回macbook pro的。个人有强迫症,只要看或写Java或C/C++代码或者用开发机的化,还是喜欢在windows下工作。看论文特别是理论的研究还是习惯用mac了。感觉开发还是windows比较顺手,理论研究还是mac比较顺手。

基本思想:首先根据词典,找出字串中所有可能的词(也称全切分),然后构造词语切分有向无环图(也称作粗分词图或粗分词网)。每个词对应图中的一条有向边。若赋给相应的边长一个权值(该权值可以是常数,也可以是所构成的词的属性值),然后根据该切分图,在起点到终点的所有路径中,求出长度值(包括权值)为最短的一条路径,这条路径上包含的词就是该句子的切分结果。若每个结点处记录N个最短路径值,则该方法也称N-最短路径算法。

为进一步提高切分精度,在词典中增加词的属性值,即给每个词也给权重。这样每个词在汉字串中的权重不同(即构成的有向图的边不为等长)。最简单的词的权重可以用词频表示,高频词的权重大,低频词的权重小。具体的权重值可以通过大规模语料库获得。

虽然HanLP中提供了dijkstra算法的实现,但是当前HanLP中最短路径分词使用的是viterbi算法。

例子:他说的确实在理



 

 

遍历计算过程和回溯分词过程

 



 

1) node列与to列

node列的词语为粗分词网中所有的词,to列为在node列为词word_node的情况下,后边接的所有可能的词word_to。第1个词语前边有一个“始”词,最后一个词语后边有一个“末”词。

2) begin2node_w的计算

表示从“始”到node词的最短路径权值。可以从待计算值所在行的node列读取出word词,在to列中以待计算值所在行开始向上查找word,找到word所在行后(以首次遇到的词为准),begin2to_w列所对应的值就是待计算值。见图中下划线。第一个词对“始-他”的begin2node_w的值为0。

3) node2to_w的计算

 

node+w构成的2gram串的概率,也就是转移概率,计算公式为

 



 

计算的HanLP代码为https://github.com/hankcs/HanLP/blob/master/src/main/java/com/hankcs/hanlp/utility/MathUtility.java calculateWeight(Vertex from, Vertex to)。“始”的频次取为MAX_FREQUENCY,“始-他”的共现频次值为“他”作为句首的频次,“理-末”的共现频次值为“理”作为句末的频次。

4) begin2to_w_n的计算

表示从“始”到to词的最短路径权值。begin2to_w_n = begin2node_w + node2to_w。

5) begin2to_w_o

表示记录在to词下的,到to词的最短路径权值,它的初始值为0,之后由begin2to_w来更新。

6) from

表示词语to的前驱词。

 



 

可以看表中(7,9),(8,10),(11,13),(12,14),(15,16),(17,18)成对行来验证该公式,其中只有(17.18)行满足了第3个式子。

6)和(7)的HanLP实现代码https://github.com/hankcs/HanLP/blob/master/src/main/java/com/hankcs/hanlp/seg/common/Vertex.java updateFrom(Vertex from)

8) 回溯确定分词路径

“末”开始向前回溯,末->理->在->确实->的->说->他,可以看表中黄色单元格进行验证。

经过(6)、(7)两步,可以确保粗分词网中任意词的前驱都是最短路径的。

遍历计算过程和回溯过程的HanLP代码https://github.com/hankcs/HanLP/blob/master/src/main/java/com/hankcs/hanlp/seg/Viterbi/ViterbiSegment.java viterbi(WordNet wordNet)

 



 

  • 大小: 154.2 KB
  • 大小: 24.3 KB
  • 大小: 74.9 KB
  • 大小: 73.3 KB
  • 大小: 34.5 KB
分享到:
评论

相关推荐

    N-最短路径方法的中文词语粗分模型

    - **应用**:在中文分词中,可以将待分词的句子视为图的一个节点序列,通过构建图模型并运用N-最短路径算法找到最优或次优的分词方案。 - **优势**: - **高效性**:能够快速地找到多个较优解。 - **灵活性**:...

    dev_最短路径中文分词_最短路径分词算法_

    在这个任务中,“最短路径分词算法”是一种常用的策略,用于解决如何高效准确地完成分词工作。本文将深入探讨最短路径分词算法的概念、原理及其在实际应用中的价值。 最短路径分词算法基于图论中的Dijkstra算法或...

    基于N_最短路径方法的中文词语粗分模型_张华平.pdf

    【N-最短路径方法】在中文词语粗分模型中,N-最短路径方法是一种常用的算法,它在处理中文词汇切分时考虑了多个可能的分词结果,并选取最合理的路径。这种方法的核心思想是通过构建有向图,将每个汉字视为图中的节点...

    hanlp-portable-1.5.0.jar

    Java分词工具HanLP

    HanLP-data.zip

    1. **中文分词**:HanLP的分词模块是其核心功能之一,采用统计和规则相结合的方法,能够处理各种复杂的中文语境,如歧义分词、新词识别等。数据集中可能包含不同领域的语料,如新闻、社交媒体、论坛等,用于训练分词...

    Hanlp最新版本V1.7.2(含hanlp-1.7.2.jar、模型data包、配置文件hanlp.properties)

    例如,你可以设置模型路径、分词策略、是否开启并行处理等。合理的配置可以提高处理速度,同时满足特定场景的需求。 在实际应用中,开发者可以利用HanLP提供的API轻松地集成到自己的系统中,例如,通过调用`...

    elasticsearch-analysis-hanlp-7.5.1.zip

    "elasticsearch-analysis-hanlp-7.5.1.zip"便是这样一个专门为Elasticsearch 7.5.1版本定制的汉语文本分析插件,旨在优化中文分词和语义理解,提供更精准的搜索结果。 HanLP(全称:High-performance Natural ...

    elasticsearch-analysis-hanlp-7x.zip

    elasticsearch是使用比较广泛的分布式搜索引擎,es提供了一个的单字分词工具,还有一个分词插件ik使用比较广泛,hanlp是一个自然语言处理包,能更好的根据上下文的语义,人名,地名,组织机构名等来切分词

    hanlp-1.7.2-release.zip

    《详解hanlp-1.7.2-release:NLP分词技术的应用与实践》 在自然语言处理(NLP)领域,高效的分词工具是必不可少的。HanLP,全称High-performance Natural Language Processing,是由北京大学计算机科学技术研究所...

    hanlp-portable-1.3.2.jar

    用于solr的中文分词,很好用,下载速度块

    基于N最短路径方法与中国人名 识别的中文分词系统

    本文提出了一种新的中文分词系统,该系统利用N最短路径方法进行中文词语的粗分,结合Viterbi算法进行角色标注,并通过模式最大匹配技术最终实现中国人名的识别。 首先,中文词法分析是中文信息处理不可或缺的一部分...

    hanlp-1.7.7.jar

    手动下载hanlp相关jar包,用于python相关自然语言的工具,可进行分词、短语提取、摘要提取等

    hanlp-lucene-plugin, HanLP中文分词Lucene插件,支持包括Solr在内的基于Lucene的系统.zip

    汉纳拼音Lucene插件(hanlp-lucene-plugin)是一个专为中文处理设计的扩展工具,它将著名的HanLP中文分词库与流行的全文检索框架Lucene进行了集成,旨在提升在Lucene及其衍生产品(如Solr)中的中文处理能力。...

    HanLP-1.7.5.zip

    1. **词法分析**:HanLP的词法分析模块能够对输入的文本进行分词,识别出词汇边界,并且可以处理多词表达、新词识别以及词性标注。这对于信息抽取、文本分类、关键词提取等任务至关重要。 2. **句法分析**:句法...

    hanlp-lucene-plugin:HanLP中文分词Lucene插件,支持包括Solr内置的基于Lucene的系统

    hanlp-lucene-pluginHanLP中文分词Lucene插件基于HanLP,支持包括Solr(7.x)在内的任何基于Lucene(7.x)的系统。Maven < dependency> < groupId>...

    基于HanLP自然语言处理包的elasticsearch分词器 hanlp-tokenizer-master

    基于HanLP自然语言处理包的elasticsearch分词器 功能 本分词器使用HanLP提供的维特比分词 屏蔽了本地配置用户词典 增加同义词索引功能 增加远程词典热更新(用户词典,停词典,同义词典) 使用 目前支持的es版本为...

    opensearch-analysis-hanlp-1.0.0.zip

    5. **opensearch-analysis-hanlp-1.0.0.jar**:这是OpenSearch HanLP插件的主程序包,包含了与OpenSearch集成的代码和接口。 **其他文件** 1. **plugin-security.policy**:这是插件的安全策略文件,定义了插件在...

    hanlp分词es插件字典和模型大全

    elasticsearch-analysis-hanlp-7.x.x:es插件安装包,安装说明在包内 elasticsearch-analysis-hanlp-master-7.x.x:es插件源码和引用 HanLP-portable-1.7.3:hanlp分词器源码 1. 修改了hanlp-portable-1.7.3源码中...

    hanlp-solr-plugin-1.1.2.jar

    solr中文分词依赖,非常好用,下载速度块

Global site tag (gtag.js) - Google Analytics