中文分词算法工具hanlp源码解析
词图
词图指的是句子中所有词可能构成的图。如果一个词A的下一个词可能是B的话,那么A和B之间具有一条路径E(A,B)。一个词可能有多个后续,同时也可能有多个前驱,它们构成的图我称作词图。
需要稀疏2维矩阵模型,以一个词的起始位置作为行,终止位置作为列,可以得到一个二维矩阵。例如:“他说的确实在理”这句话
图词的存储方法:一种是的DynamicArray法,一种是快速offset法。Hanlp代码中采用的是第二种方法。
1、DynamicArray(二维数组)法
在词图中,行和列的关系:col为n 的列中所有词可以与row为n 的所有行中的词进行组合。例如“的确”这个词,它的col =5,需要和它计算平滑值的有两个,分别是row =5的两个词:“实”和“实在”。但是在遍历和插入的时候,需要一个个比较col和row的关系,复杂度是O(N)。
2ã快速offset
一个一维数组,每个元素是一个单链表“的确”的行号是4,长度是2,4+2=6,于是第六行的两个词“实/实在”就是“的确”的后续。
同时这种方法速度非常快,插入和查询的时间都是O(1)。
Hanlp核心词典:
最短路径算法—viterbi(动态规划路径)
Frequency:核心词典中的词频
nTwoWordsFreq:共现词频
intMAX_FREQUENCY= 25146057
double dTemp =(double) 1 / MAX_FREQUENCY +0.00001
dSmoothingPara =0.1
Viterbi最短路径有向图
图5
1、计算过程从上至下,根据计算出的权重值变更前驱结点,保证前驱结点唯一(动态规划路径)
2、计算结束后,从最后一个结点开始取出term,依次取出该结点的前驱结点即可分词结果:理,在,确实,的,说,他
作者:亚当-adam
原文:https://blog.csdn.net/zhaojianting/article/details/78194317
中文分词算法工具hanlp源码解析相关推荐
- 中文分词算法python_Python FMM算法的中文分词器实现方法源码
这是一篇基于Python代码使用FMM算法达到中文分词效果实现方法的文章.中文语句分词因为编码的关系在Python语言中并不是很好处理,关于中文乱码与编码的问题解决方法,可以参考玩蛇网的Python中 ...
- 基于双向BiLstm神经网络的中文分词详解及源码
基于双向BiLstm神经网络的中文分词详解及源码 基于双向BiLstm神经网络的中文分词详解及源码 1 标注序列 2 训练网络 3 Viterbi算法求解最优路径 4 keras代码讲解 最后 源代码 ...
- TSDF算法原理及源码解析
1. 先看效果 参考源码: https://github.com/andyzeng/tsdf-fusion-python 从图中可以看出,tsdf算法的重建效果还是不错的.该算法是很多牛掰3D重建算法 ...
- 免Root 实现App加载Xposed插件的工具Xpatch源码解析(一)
前言 Xpatch是一款免Root实现App加载Xposed插件的工具,可以非常方便地实现App的逆向破解(再也不用改smali代码了),源码也已经上传到Github上,欢迎各位Fork and St ...
- Sentinel滑动时间窗限流算法原理及源码解析(上)
文章目录 时间窗限流算法 滑动时间窗口 滑动时间窗口算法改进 滑动时间窗口源码解析 时间窗限流算法 10t到16t 10个请求 16t-20t 50个请求 20t-26t 60个请求 26t到30t ...
- C#:实现分词算法(附完整源码)
C#:实现分词算法 using System; using System.Collections.Generic; using System.Linq; using System.Text; usin ...
- hanlp源码解析之中文分词算法
词图 词图指的是句子中所有词可能构成的图.如果一个词A的下一个词可能是B的话,那么A和B之间具有一条路径E(A,B).一个词可能有多个后续,同时也可能有多个前驱,它们构成的图我称作词图. 需要稀疏2维 ...
- 什么是排他思想算法?(源码解析)
排他思想算法 <!DOCTYPE html> <html lang="en"><head><meta charset="UTF- ...
- Sentinel滑动时间窗限流算法原理及源码解析(中)
文章目录 MetricBucket MetricEvent数据统计的维度 WindowWrap样本窗口实例 范型T为MetricBucket windowLengthInMs 样本窗口长度 windo ...
最新文章
- 我放弃了年薪200万的岗位,因为“复制粘贴”的技术活让人厌恶
- python爬虫requests-Python爬虫---requests库快速上手
- Opengl-模型(告别箱子加载模型)
- html css 水平时间轴,纯css+js水平时间轴
- tensorflow:Multiple GPUs
- 2015毕业找工作纪实|一年的蜕变毕业生
- Mysql之七种连接查询
- Compile opencv 2.4.9/2.4.10.1 as static library
- Pandas处理缺失数据
- 《明朝那些事儿》读书笔记
- Linux下rpm打包
- 第三只眼网络监控软件简单分析,试用及清除
- 联想小新一键恢复小孔_【联想自带一键重装系统】联想自带一键重装小孔_联想自带一键恢复...
- 数据科学家也良莠不齐 蹩脚数据科学家的10个迹象
- python3入门教程 pdf_Python基础教程第3版(Beginning Python From Novice to Professional 3th) pdf...
- 修改STM32CuBeMX生成文件
- ubuntu设置开机启动图形应用程序,替换默认图形桌面
- QT comboBox设置下拉菜单()
- 应对嵌入式校招面试手撕之——链表
- Skyline WEB端开发3——添加一个弹框
热门文章
- linux编译cpp文件命令,Jsoncpp Linux 下编译为 .a 文件
- some any oracle,Oracle之 any、some、all 解析
- .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)...
- Anaconda中出现No module named cv2
- HDU 3555: Bomb
- EventEmitter
- Python学习 Week2 part1
- UIKit应用 - Swift 版本: 3.让UITableViewCell的背景色渐变
- LUN/PV/VG/LV
- 推荐一款强大的SQL Internal 查看工具InternalsViewer