jieba分词之二、cut

本文详细解析了jieba分词库中的cut函数,包括内部的DAG构造、频度打分、动态规划及未登录词处理。通过get_DAG、calc和__cut_DAG函数的介绍,阐述了jieba如何进行高效准确的中文分词。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jieba.posseg.cut(sentence)是initialize操作之后分词程序的入口

__cut_internal(sentence)函数内部定义了四个正则表达式
re_han = re.compile(ur"([\u4E00-\u9FA5a-zA-Z0-9+#&\._]+)")
re_skip = re.compile(ur"(\r\n|\s)")
re_eng = re.compile(ur"[a-zA-Z0-9]+")
re_num = re.compile(ur"[\.0-9]+")
函数内部语句blocks = re_han.split(sentence)把整个句子多个部分blk,若blk满足re_han模式,说明是有汉字的字符串,然后调用__cut_DAG(blk),构建字符串DAG和route

1、get_DAG(sentence)函数

DAG是有向无环图,结巴分词中的DAG的数据结构是dict,元素的key是int,value是int列表

下面部分内容引用自http://www.xuebuyuan.com/1547637.html

举一个例子,比如sentence 是 "国庆节我在研究结巴分词",对应生成的DAG是这样的:
{0: [0, 1, 2], 1: [1], 2: [2], 3: [3], 4: [4], 5: [5, 6], 6: [6], 7: [7, 8], 8: [8], 9: [9, 10], 10: [10]}
其中的数字表示每个汉字在sentence中的位置,所以0:[0,1,2] 表示 在trie 树中,"国"开头的词语中对

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值