结巴分词原理介绍

news/2025/7/8 19:33:00/

20220331

jieba.cut与jieba.lcut的区别_stay_foolish12的博客-CSDN博客_jieba.lcut

20211130

​​​​​​三种模式、两个函数掌握Python结巴分词重点功能

 三种划分方法

 

1.结巴长度优先

2. 权重相同的时候  前面的先分   

zhyl  pk     

zh ylpk   

结果是第一种    

3.权重不相同的时候   权重大的先分

zhyl  权重为1    ylpk 权重为2  则 结果为第二种

2.分词尽量唯一

结巴分词的原理,结合一个面试题:有一个词典,词典里面有每个词对应的权重,有一句话,用这个词典进行分词,要求分完之后的每个词都必须在这个词典中出现过,目标是让这句话的权重最大。 

涉及算法:

  1. 基于前缀词典实现词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG),采用动态规划查找最大概率路径,找出基于词频的最大切分组合;
  2. 对于未登录词,采用了基于汉字成词能力的 HMM模型,采用Viterbi算法进行计算;
  3. 基于Viterbi算法的词性标注;
  4. 分别基于tfidf和textrank模型抽取关键词;

基于前缀词典及动态规划实现分词

结巴分词2--基于前缀词典及动态规划实现分词 - 老顽童2007 - 博客园

jieba分词主要是基于统计词典,构造一个前缀词典;然后利用前缀词典对输入句子进行切分,得到所有的切分可能,根据切分位置,构造一个有向无环图;通过动态规划算法,计算得到最大概率路径,也就得到了最终的切分形式。

1.前缀词典构建:如统计词典中的词“北京大学”的前缀分别是“北”、“北京”、“北京大”;词“大学”的前缀是“大”。

2.有向无环图构建:然后基于前缀词典,对输入文本进行切分,对于“去”,没有前缀,那么就只有一种划分方式;对于“北”,则有“北”、“北京”、“北京大学”三种划分方式;对于“京”,也只有一种划分方式;对于“大”,则有“大”、“大学”两种划分方式,依次类推,可以得到每个字开始的前缀词的划分方式。

3.最大概率路径计算:

在得到所有可能的切分方式构成的有向无环图后,我们发现从起点到终点存在多条路径,多条路径也就意味着存在多种分词结果。因此,我们需要计算最大概率路径,也即按照这种方式切分后的分词结果的概率最大。在采用动态规划计算最大概率路径时,每到达一个节点,它前面的节点到终点的最大路径概率已经计算出来。

有向无环图DAG的每个节点,都是带权的,对于在前缀词典里面的词语,其权重就是它的词频;我们想要求得route = (w1,w2,w3,...,wn),使得 ∑weight(wi) 最大。

如果需要使用动态规划求解,需要满足两个条件,

  • 重复子问题
  • 最优子结构

我们来分析一下最大概率路径问题,是否满足动态规划的两个条件。

基于汉字成词能力的HMM模型识别未登录词

利用HMM模型进行分词,主要是将分词问题视为一个序列标注(sequence labeling)问题,其中,句子为观测序列,分词结果为状态序列。首先通过语料训练出HMM相关的模型,然后利用Viterbi算法进行求解,最终得到最优的状态序列,然后再根据状态序列,输出分词结果。

HMM的两个基本假设:

1.齐次马尔科夫性假设,即假设隐藏的马尔科夫链在任意时刻t的状态只依赖于其前一时刻的状态,与其它时刻的状态及观测无关,也与时刻t无关;

2.观测独立性假设,即假设任意时刻的观测只依赖于该时刻的马尔科夫链的状态,与其它观测和状态无关。

HMM模型的三个基本问题:

Viterbi算法

Viterbi算法实际上是用动态规划求解HMM模型预测问题,即用动态规划求概率路径最大(最优路径)。这时候,一条路径对应着一个状态序列。


http://www.ppmy.cn/news/607257.html

相关文章

LLVM 编译器和工具链技术

LLVM 编译器和工具链技术 LLVM概述 LLVM项目是模块化和可重用的编译器和工具链技术的集合。尽管名称如此,LLVM与传统虚拟机几乎没有关系。LLVM本身不是首字母缩略词,项目的全名。 LLVM开始是作为伊利诺大学的一个研究项目,提供提一个现代化的…

【AUTOSAR】BMS开发实际项目讲解(一)----产品需求规格书

功能需求 信号 范围 精度要求 条件 备注 正常电压 9 ~16 系统正常工作,满足所有功能与性能要求 通讯电压 6.5 ~18 此电压范围内保证通信正常及信号有效性 低电压 0~6.5 不要求BMS工作 反向电压 -14 ~0 …

大数据ClickHouse(十二):MergeTree系列表引擎之CollapsingMergeTree

文章目录 MergeTree系列表引擎之CollapsingMergeTree 一、CollapsingMergeTree基本讲解 二、测试实例

OPPO小游戏vConsole开启方法

OPPO小游戏是不会报红色错误的,要开启vConsole,要在首场景脚本内onLoad里加上以下代码: qg.setEnableDebug({enableDebug: true, // true 为打开,false 为关闭success: function () {// 以下语句将会在 vConsole 面板输出 consol…

OPPO海外官方调试ID

自己的ID出不来广告时可以使用官方调试ID。 注意包名和ID是绑定的,同时要修改包名。

自然语言处理课程(二):Jieba分词的原理及实例操作

上节课,我们学习了自然语言处理课程(一):自然语言处理在网文改编市场的应用,了解了相关的基础理论。接下来,我们将要了解一些具体的、可操作的技术方法。 作为小说爱好者的你,是否有设想过通过一…

Spring基础(三):IOC底层原理

文章目录 IOC底层原理 一、原理图分解 二、XML解析技术读取配置文件

LLVM一些语法规则

LLVM一些语法规则 LLVM文档 LLVM编译器基础架构支持广泛的项目,从工业强度编译器到专门的JIT应用程序,再到小型研究项目。 同样,文档分为几个针对不同受众的高级别分组: LLVM设计概述 几篇介绍性论文和演讲。 • LLVM编译器简介: …