游乐游手机版
首页/AI教程/文章详情

HanLP最短路径分词算法详解

时间:2026-06-09 15:21
最短路径分词基于词典全切分构造有向无环图,每条边赋予词频权重。采用Viterbi算法计算从起点到终点的最短总权值路径,通过转移概率和回溯确定最终分词结果,提升切分精度。

最短路径分词算法在直观上容易理解,但实际实现却充满技术细节。最近在调整开发环境时,我重新梳理了这部分基础内容,下面详细阐述其核心思路。

先说基本思想。首先根据词典,将字串中所有可能的词语全部找出,这一步骤被称为"全切分"。然后,利用这些词语构建一个用于词语切分的有向无环图——也可理解为粗分词图。在该图中,每个词对应一条有向边,每条边可附带一个权值(可以是常数或词本身的属性)。接下来,在起点到终点的所有路径中,找到总权值最短的一条,该路径上的词语即为最终切分结果。如果每个节点不只看最短路径,而是保留N条候选路径,则演变为N-最短路径算法。

为了进一步提升切分精度,可以在词典中为每个词添加属性,即权重。这样一来,不同词在汉字串中的权重大小不再相同——有向图的边不再是等长的。最直接的权重可用词频来表示:高频词权重大,低频词权重小。具体的权重值可通过大规模语料库统计获得。

有一点值得注意:虽然HanLP里也提供了Dijkstra算法的实现,但目前最短路径分词实际使用的是Viterbi算法。我们来看一个例子:"他说的确实在理"。

_1

下面是详细的计算过程和回溯路径。

_2

先理清几个关键列的含义:

(1)node列与to列
node列存放的是粗分词网里的所有词,to列则表示在node为某个词的情况下,后面可能接的所有词。第一个词之前有个虚拟的"始",最后一个词之后有个虚拟的"末"。

(2)begin2node_w的计算
这个值代表从"始"到当前node词的最短路径权值。计算方法是:找到待计算值所在行的node词,然后从该行向上查找第一次出现这个词的行,取那行中begin2to_w列对应的值。第一个词对"始-他"的begin2node_w值为0,因为起点就是0。

(3)node2to_w的计算
这个值由node和to构成的2-gram串的概率决定,也就是转移概率。计算公式如下:

_3

HanLP中的具体实现可以参考 MathUtility.ja vacalculateWeight(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词的前驱词,也就是这条最短路径上,to的上一站是哪个词。

_4

在表格中,(7,9)、(8,10)、(11,13)、(12,14)、(15,16)、(17,18)这几组成对行可以用来验证公式,其中只有(17,18)满足了第3个式子。

(6)和(7)的HanLP实现代码在 Vertex.ja vaupdateFrom(Vertex from) 方法中。

最后一步是回溯确定分词路径。从"末"开始向前回溯:末→理→在→确实→的→说→他。表格中的黄色单元格可以验证这一点。

经过第(6)和第(7)步的处理,粗分词网中任意词的前驱词,都可以确保是最短路径上的。整个遍历和回溯过程的HanLP实现,在 ViterbiSegment.ja vaviterbi(WordNet wordNet) 方法里。

_5

来源:https://developer.aliyun.com/article/704601
上一篇无人机战场侦察6类军事目标检测YOLO数据集 下一篇AI开发平台算力平台架构核心技术及落地实践
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Windows Docker Desktop RabbitMQ生产级部署完整指南
AI教程 · 2026-06-29

Windows Docker Desktop RabbitMQ生产级部署完整指南

前言 在 Windows 本地开发环境中,直接安装 RabbitMQ 确实颇为周折:需要单独配置 Erlang 运行环境、手动管理环境变量、服务启停全凭手工操作。更令人困扰的是,版本兼容冲突、端口占用、环境不一致等问题层出不穷。笔者见过不少开发者为搭建环境就得耗费整整半天时间。 相比之下,借助 Do

AI搜索重构制造业采购逻辑的阿里云企业级GEOCMS优化实践
AI教程 · 2026-06-29

AI搜索重构制造业采购逻辑的阿里云企业级GEOCMS优化实践

先分享一个切实感受。过去两年,我们与福建制造企业合作较为频繁,发现一个非常突出的现象:超过80%的企业官网,产品参数仍然存放在PDF或图片中。AI爬虫?根本无法抓取。这些企业技术实力不弱、资质证照齐全、应用案例也丰富,但在AI搜索这一全新战场上,它们几乎处于隐身状态。 一、一个正在发生的行业变化 A

阿里云Token Plan团队版功能价格与省钱购买指南
AI教程 · 2026-06-29

阿里云Token Plan团队版功能价格与省钱购买指南

阿里云百炼近期推出了名为“Token Plan 团队版”的全新服务,这一服务专为企业与开发者量身打造,定位为AI大模型订阅平台。通过引入Credits作为统一计量单位,将文本生成、图像生成等多模态AI能力纳入单一计费体系,同时无缝兼容主流AI编程工具及智能体(Agent)生态系统。其核心亮点包括:全

阿里云物联网.NET Core客户端位置信息上报
AI教程 · 2026-06-29

阿里云物联网.NET Core客户端位置信息上报

阿里云物联网平台的位置服务并非一个完全独立的功能模块。位置信息可包含二维坐标与三维坐标,而位置数据的来源本质上是借助设备属性进行上传。换言之,若要让设备上报位置,您需先将其视为一个普通属性进行处理。 1)添加二维位置数据 操作过程十分简洁。进入数据分析 → 空间数据可视化 → 二维数据,点击添加,将

年阿里云服务器选型配置与网站部署全攻略
AI教程 · 2026-06-29

年阿里云服务器选型配置与网站部署全攻略

2026年,阿里云服务器生态已高度成熟,形成了清晰的轻量应用服务器与ECS云服务器两大产品阵营。无论你是计划搭建个人博客、企业官网,还是运营电商平台、进行应用开发,基本都能找到理想的解决方案。本指南将从服务器选型、配置选择、部署流程到安全运维,系统梳理2026年最实用的操作要点,帮助你少走弯路,让网