词图

词图指的是句子中所有词可能构成的图。如果一个词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最短路径有向图

1、计算过程从上至下,根据计算出的权重值

变更前驱结点,保证前驱结点唯一(动态规划路径)

2、计算结束后,从最后一个结点开始取出term

,依次取出该结点的前驱结点即可

分词结果:理,在,确实,的,说,他

文章来源于亚当-adam的博客

转载于:https://www.cnblogs.com/tiantiankong/p/10365575.html

hanlp源码解析之中文分词算法相关推荐

  1. Zbar源码解析——实现中文解码|2021SC@SDUSC

    2021SC@SDUSC 修改文件 zbar/qrcode/qrdectxt.c: latin1_cd=iconv_open("GB18030","UTF-8" ...

  2. 中文分词算法工具hanlp源码解析

    词图 词图指的是句子中所有词可能构成的图.如果一个词A的下一个词可能是B的话,那么A和B之间具有一条路径E(A,B).一个词可能有多个后续,同时也可能有多个前驱,它们构成的图我称作词图. 需要稀疏2维 ...

  3. 中文分词算法python代码_中文分词算法之最大正向匹配算法(Python版)

    最大匹配算法是自然语言处理中的中文匹配算法中最基础的算法,分为正向和逆向,原理都是一样的. 正向最大匹配算法,故名思意,从左向右扫描寻找词的最大匹配. 首先我们可以规定一个词的最大长度,每次扫描的时候 ...

  4. 以太坊Geth 共识算法源码解析

    共识算法 目前以太坊中有两个公式算法的实现,分别为clique和ethash.其中clique是PoA共识的实现,ethash是PoW共识的实现,其相应的代码位于go-ethereum/consens ...

  5. 《Attention is all you need》源码解析+算法详解

    Attention is all you need 源码解析 最近学习Transformer模型的时候,并且好好读了一下Google的<Attention is all you need> ...

  6. 【深度学习模型】智云视图中文车牌识别源码解析(二)

    [深度学习模型]智云视图中文车牌识别源码解析(二) 感受 HyperLPR可以识别多种中文车牌包括白牌,新能源车牌,使馆车牌,教练车牌,武警车牌等. 代码不可谓不混乱(别忘了这是职业公司的准产品级代码 ...

  7. Mmseg中文分词算法解析

    Mmseg中文分词算法解析 @author linjiexing 开发中文搜索和中文词库语义自己主动识别的时候,我採用都是基于mmseg中文分词算法开发的Jcseg开源project.使用场景涉及搜索 ...

  8. weiler-atherton多边形裁剪算法_EAST算法超详细源码解析:数据预处理与标签生成...

    作者简介 CW,广东深圳人,毕业于中山大学(SYSU)数据科学与计算机学院,毕业后就业于腾讯计算机系统有限公司技术工程与事业群(TEG)从事Devops工作,期间在AI LAB实习过,实操过道路交通元 ...

  9. [Vue源码解析] patching算法

    [Vue源码解析] patching算法 pathching算法:通过对比新旧VNode的不同,然后找出需要更新的节点进行更新 操作:1.创建新增节点 2.删除废弃节点 3.修改需要更新的节点 创建节 ...

最新文章

  1. OpenCV最经典的3种颜色空间(cv2.cvtColor)及互相转换
  2. 立体相机开发|几何感知的实例分割
  3. 生成唯一字符串算法_面试官问:在分布式场景,生成唯一ID,你有几种方案?...
  4. 德信创业系2014版
  5. 并行执行 Job - 每天5分钟玩转 Docker 容器技术(134)
  6. python cookies过期_Python3中关于cookie的创建与保存
  7. Shared Event-loop for Same-Origin Windows(译)
  8. python中常用的序列化模块_python 序列化,常用模块
  9. python hdf5 —— h5py
  10. Codeforces 436D Pudding Monsters
  11. 小程序开发,不现实用户的头像!
  12. 网络框架分析-全是套路
  13. linux运维工程师的发展,Linux运维工程师发展前景
  14. 服装制版师用软件代替手工_楚天都市报_多媒体报
  15. AI将png图片转换为矢量图并上传到阿里云iconfont
  16. DVWA 跨站请求伪造(CSRF)
  17. 【Suffix Array】后缀数组详解
  18. Win10 卸载 Cortana
  19. 什么是 知足者常乐?
  20. HTML5期末大作业:汉堡美食网站设计——餐饮美食-汉堡美食(6页) HTML+CSS+JavaScript 汉堡美食 咖啡主题HTM5网页设计作业成品

热门文章

  1. 使用Canvas扩展绘制动态ASP.NET Core Blazor条形图
  2. NET的JIRA活动时间线REST API
  3. Kong 1.0 GA 版本正式发布,微服务 API 网关
  4. 百度地图手机和电脑不一致_手机能下载北斗星导航吗?比高德地图和百度地图好用吗?...
  5. 微服务springCloud初识
  6. java中两个xml文件内容拼接_比较Java中2个XML文档的最佳方法
  7. redis常用命令getex_Redis常用命令
  8. php星期和时间获取
  9. canvas读取图片,输入文字,调整文字属性,拖拽文字位置,并保存图片
  10. Android 8.0 linux内核,在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序---Android8.0版本实现-对照老罗版本...