当前位置: 首页 > article >正文

【NLP 21、实践 ③ 全切分函数切分句子】

当无数个自己离去,我便日益坦然

                                                —— 25.2.9

一、jieba分词器

Jieba 是一款优秀的 Python 中文分词库,它支持多种分词模式,其中全切分方式会将句子中所有可能的词语都扫描出来。

1.原理

全切分方式会找出句子中所有可能的词语组合。对于一个输入的句子,它会尝试将句子按照不同的方式进行切分,只要在词典中存在对应的词语,就会将其作为一个分词结果输出。这种方式会输出所有可能的分词组合,因此可能会产生较多的分词结果。


2.使用方法

在 Jieba 中,导入jieba分词库,使用 jieba.cut 函数并将 cut_all 参数设置为 True 即可实现全切分。

jieba.cut():是 Python 中文分词库 jieba 的核心函数,用于将中文文本切分成独立的词语。

参数名类型默认值是否必填说明
sentencestr需要分词的中文字符串。
cut_allboolFalse控制分词模式:
False精确模式(默认),返回最合理的分词结果。
True全模式,输出所有可能的词语组合。
HMMboolTrue是否使用隐马尔可夫模型(HMM)识别未登录词(新词)。
True:启用新词发现(推荐)。
False:关闭新词发现。
use_paddleboolFalse是否使用 PaddlePaddle 深度学习框架加速分词。
- 需先安装 PaddlePaddle 库(pip install paddlepaddle)。

join():join() 是 Python 字符串的内置方法,用于将一个可迭代对象(如列表、元组、生成器等)中的元素用指定的字符串连接成一个新字符串。在处理中文分词结果时,常用它来将分词后的词语列表转换为特定格式的字符串(例如用斜杠分隔)。

  • 参数:

    • 可迭代对象: 包含多个元素(必须为字符串类型)的列表、元组、生成器等。

    • 分隔符: 用于连接元素的字符串(可以是空字符串 "")。

  • 返回值: 返回一个由分隔符连接元素后的新字符串。

与其他方法的对比

方法特点示例
str.join()高效连接字符串,支持任意可迭代对象。"/".join(["A", "B", "C"])
+ 运算符拼接每次拼接生成新字符串,效率低(不推荐循环中使用)。"A" + "/" + "B" + "/" + "C"
f-string 格式化适合少量固定元素的拼接,可读性强但灵活性差。f"{a}/{b}/{c}"
import jieba# 待分词的句子
sentence = "我爱自然语言处理"# 使用全切分方式进行分词
words = jieba.cut(sentence, cut_all=True)# 输出分词结果
print("全切分结果:", "/ ".join(words))

3.Jieba内部分词实现细节

len():返回对象的长度或元素个数,适用于字符串、列表、元组、字典、集合等可迭代对象。

range():生成一个不可变的整数序列,常用于循环遍历。

append():向列表末尾添加一个元素(直接修改原列表)。

def calc_dag(sentence):DAG = {}    #DAG空字典,用来存储DAG有向无环图N = len(sentence)for k in range(N):tmplist = []i = kfrag = sentence[k]while i < N:if frag in Dict:tmplist.append(i)i += 1frag = sentence[k:i + 1]if not tmplist:tmplist.append(k)DAG[k] = tmplistreturn DAG


4.对Jieba分词结果序列进行解码

pop():移除列表中指定位置的元素并返回该元素的值。若不指定位置,默认移除并返回列表的最后一个元素

参数名类型默认值是否必填说明
indexint-1要移除元素的索引(支持负数索引)。

pop() 和 append() 可共同实现**栈(LIFO)**结构 

#将DAG中的信息解码(还原)出来,用文本展示出所有切分方式
class DAGDecode:#通过两个队列来实现def __init__(self, sentence):self.sentence = sentenceself.DAG = calc_dag(sentence)  #使用了上方的函数self.length = len(sentence)self.unfinish_path = [[]]   #保存待解码序列的队列self.finish_path = []  #保存解码完成的序列的队列#对于每一个序列,检查是否需要继续解码#不需要继续解码的,放入解码完成队列#需要继续解码的,将生成的新队列,放入待解码队列#path形如:["经常", "有", "意见"]def decode_next(self, path):path_length = len("".join(path))if path_length == self.length:  #已完成解码self.finish_path.append(path)returncandidates = self.DAG[path_length]new_paths = []for candidate in candidates:new_paths.append(path + [self.sentence[path_length:candidate+1]])self.unfinish_path += new_paths  #放入待解码对列return#递归调用序列解码过程def decode(self):while self.unfinish_path != []:path = self.unfinish_path.pop() #从待解码队列中取出一个序列self.decode_next(path)     #使用该序列进行解码

二、模仿jieba分词器对输入的句子进行全切分

递归迭代进行分词

def segmentation(sentence, word_dict):result = []if sentence == "":return [[]]for end in range(1, len(sentence) + 1):word = sentence[:end]if word in word_dict:# 递归获取剩余字符串的切分结果sub_results = segmentation(sentence[end:], word_dict)for sub_result in sub_results:result.append([word] + sub_result)return result

相关文章:

【NLP 21、实践 ③ 全切分函数切分句子】

当无数个自己离去&#xff0c;我便日益坦然 —— 25.2.9 一、jieba分词器 Jieba 是一款优秀的 Python 中文分词库&#xff0c;它支持多种分词模式&#xff0c;其中全切分方式会将句子中所有可能的词语都扫描出来。 1.原理 全切分方式会找出句子中所有可能的词语组合。对于一…...

晶闸管主要参数分析与损耗计算

1. 主要参数 断态正向可重复峰值电压 :是晶闸管在不损坏的情况下能够承受的正向最大阻断电压。断态正向不可重复峰值电压 :是晶闸管只有一次可以超过的正向最大阻断电压,一旦晶闸管超过此值就会损坏,一般情况下 反向可重复峰值电压 :是指晶闸管在不损坏的情况下能够承受的…...

【Stable Diffusion部署至Google Colab】

Google Colab 中快速搭建带 GPU 加速的 Stable Diffusion WebUI from google.colab import drive drive.mount(/content/drive) !mkdir /content/drive/MyDrive/sd-webui-files !pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 --extra-index…...

mongoTemplate获取某列最大值

首先&#xff0c;MongoDB中获取某列的最大值通常是通过聚合框架中的$group和$max操作符来完成的。那在Spring Data中&#xff0c;应该怎么构建这个聚合查询呢&#xff1f; 首先&#xff0c;可能需要创建一个Aggregation对象&#xff0c;里面包含分组和求最大值的步骤。比如&…...

基于Java的分布式系统架构设计与实现

Java在大数据处理中的应用&#xff1a;基于Java的分布式系统架构设计与实现 随着大数据时代的到来&#xff0c;数据处理的规模和复杂性不断增加。为了高效处理海量数据&#xff0c;分布式系统成为了必不可少的架构之一。而Java&#xff0c;凭借其平台独立性、丰富的生态系统以…...

独立开发日报:从AI到本地服务,5个新颖项目的启发

今天在Hacker News上看到几个特别有意思的项目&#xff0c;它们都找到了不同的切入点&#xff1a;有的用AI解决创意问题&#xff0c;有的深耕本地服务&#xff0c;有的则回归技术本质。一起来看看这些项目背后的思路。 1. AI涂色页面生成器 - 创意与AI的完美结合 这是一个基于…...

找单独的数

问题描述 在一个班级中&#xff0c;每位同学都拿到了一张卡片&#xff0c;上面有一个整数。有趣的是&#xff0c;除了一个数字之外&#xff0c;所有的数字都恰好出现了两次。现在需要你帮助班长小C快速找到那个拿了独特数字卡片的同学手上的数字是什么。 要求&#xff1a; 设…...

记使用AScript自动化操作ios苹果手机

公司业务需要自动化操作手机&#xff0c;本来以为很困难&#xff0c;没想到使用AScript工具出乎意料的简单&#xff0c;但是还有很多坑存在&#xff0c;写个博客记录一下。 工具信息&#xff1a; 手机&#xff1a;iphone7 系统版本&#xff1a;ios15 AScript官方文档链接&a…...

Android Studio集成讯飞SDK过程中在配置Project的时候有感

在配置讯飞的语音识别SDK&#xff08;流式版&#xff09;时候&#xff0c;跟着写了两个Demo&#xff0c;一个是YuYinTestDemo01&#xff0c;另一个是02&#xff0c;demo01比较简单&#xff0c;实现功能图象也比较简陋&#xff0c;没用讯飞SDK提供的图片&#xff0c;也就是没用到…...

[LLM面试题] 指示微调(Prompt-tuning)与 Prefix-tuning区别

一、提示调整(Prompt Tuning) Prompt Tuning是一种通过改变输入提示语&#xff08;input prompt&#xff09;以获得更优模型效果的技术。举个例子&#xff0c;如果我们想将一条英语句子翻译成德语&#xff0c;可以采用多种不同的方式向模型提问&#xff0c;如下图所示&#xf…...

Docker上安装Zabbix-server-mysql报错

创建新的zabbix server &#xff08;mysql&#xff09;容易&#xff0c;最后一条日志报错 cannot usedatabase"zabbix": its "users" table is empty (is this the Zabbix proxy database?) 往前还有一条关键报错信息 ERROR 1153 (08S01): Got a packe…...

c#展示网页并获取网页上触发按钮的值进行系统业务逻辑处理

日前项目上遇到需要调用一个第三方的监控接口&#xff0c;给对方参数后&#xff0c;会返回一个url地址&#xff0c;我方系统需要根据用户在网页上点击的不同按钮&#xff0c;要求如下&#xff1a;在打开违规提醒窗口时&#xff0c;需要注册Callback方法&#xff08;含一个字符串…...

Flappy Bird开发学习记录

概述 为了了解一下Unity的开发过程&#xff0c;或者说感受&#xff1f;先搞简单的练练手。 工具 Unity:2022.3.51f1c1 visual studio 2022 开发过程 项目基本设置 新建2d项目&#xff0c;游戏画面设置为1080*1920&#xff08;9&#xff1a;16&#xff09;。 图片素材设…...

SDKMAN! 的英文全称是 Software Development Kit Manager(软件开发工具包管理器)

文章目录 SDKMAN! 的核心功能SDKMAN! 的常用命令SDKMAN! 的优势总结 SDKMAN! 的英文全称是 Software Development Kit Manager。它是一个用于管理多个软件开发工具&#xff08;如 Java、Groovy、Scala、Kotlin 等&#xff09;版本的工具。SDKMAN! 提供了一个简单的方式来安装、…...

?.、??、||分别是什么,又有哪些区别???

在 JavaScript 中&#xff0c;?.、?? 和 || 是三种不同的操作符。 1、?.&#xff1a;可选链操作符 ?. 是一个可选链操作符&#xff0c;用于安全地访问嵌套属性&#xff0c;而不用担心中间的某个属性可能为 null 或 undefined&#xff0c;从而避免运行时错误。 const use…...

7个国内能打开的AI绘画网站!新手福音!

以下是我收集的国内能打开的AI绘画网站。 1、6pen 网址&#xff1a;https://6pen.art/ 2、文心大模型 网址&#xff1a;https://wenxin.baidu.com/moduleApi/ernieVilg 3、Draft 网址&#xff1a;https://draft.art/ai- art/drawing 4、nightcafe 网址&#xff1a;https:/…...

JavaWeb学习-Mybatis(增删改查)

(一)Mybatis入门程序 1.创建springboot工程,并导入 mybatis的起步依赖、mysql的驱动包。(项目工程创建完成后,自动在pom.xml文件中,导入Mybatis依赖和MySQL驱动依赖) <dependencies> <!-- mybatis起步依赖 --> <dependency> …...

C/C++面试高频题解析与解题思路(附答案)

一、基础语法与核心概念 指针与引用的区别&#xff1f; 问题&#xff1a;指针和引用在初始化、空值、操作方式上的差异是什么&#xff1f; 解析&#xff1a; 引用必须初始化且不能指向空值&#xff0c;而指针可初始化为空&#xff08;nullptr&#xff09;。 引用是变量的别名…...

使用Java爬虫获取京东商品评论API接口(JD.item_review)数据

一、引言 在电商领域&#xff0c;商品评论是用户决策的重要参考依据&#xff0c;也是商家优化产品和服务的重要数据来源。京东作为国内领先的电商平台&#xff0c;提供了丰富的API接口供开发者使用&#xff0c;其中JD.item_review接口可以获取商品的评论数据。通过这些数据&am…...

vscode插件Remote - SSH使用教程

Remote - SSH 是一款非常实用的 Visual Studio Code (VSCode) 扩展插件,它允许开发者通过SSH连接到远程服务器,并像在本地一样进行代码编辑和调试。这意味着你可以直接在VS Code中打开位于远程机器上的文件夹,并利用本地安装的VS Code功能,如语法高亮、智能感知、Git集成等…...

【通俗易懂说模型】一篇弄懂几个经典CNN图像模型(AlexNet、VGGNet、ResNet)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;深度学习_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. …...

deepseek的CoT优势、两阶段训练的有效性学习笔记

文章目录 1 DeepSeek的CoT思维链的优势1.2 open-r1的CoT训练数据1.3 ReAct任务与CoT任务适用场景 2 AI推理方向&#xff1a;deepseek与deepmind的两条路线的差异2.1 PRM与ORM的两大学派分支的差异2.2 DeepSeek-R1的两阶段训练概述 1 DeepSeek的CoT思维链的优势 DeepSeek跟之前…...

MobaXterm的图形化界面支持:原理与分辨率问题解决

1. 概述 MobaXterm 是一款功能强大的远程访问工具&#xff0c;支持SSH、RDP、X11、VNC等多种协议&#xff0c;并内置了强大的图形界面支持&#xff0c;让用户能够在远程操作Linux/Unix系统时&#xff0c;享受到类似本地桌面的流畅体验。 与传统的SSH客户端不同&#xff0c;Mo…...

算法很美笔记(Java)——树

性质 树 上面的性质因为两个结点由一条边连成 结点数目越多&#xff0c;算法复杂度越高 二叉树 结构 层次遍历 利用队列&#xff0c;弹一个&#xff0c;加N个&#xff08;队列里弹出一个元素&#xff0c;就把这个元素的所有孩子加进去&#xff09; 具体来说&#xff1a;指…...

百度 API 教程 001:显示地图并添加控件

目录 01、基本使用 前期准备 显示地图 开启鼠标滚轮缩放地图 02、添加地图控件 添加标准地图控件 添加多个控件 网址&#xff1a;地图 JS API | 百度地图API SDK 01、基本使用 前期准备 注册百度账号 申请成为开发者 获取密钥&#xff1a;控制台 | 百度地图开放平台…...

OSCP - Other Machines - Loly

主要知识点 路径枚举内核漏洞提权 具体步骤 继续nmap一下先 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-01 07:12 CST Nmap scan report for loly.lc (172.16.33.25) Host is up (0.022s latency). Not shown: 65534 closed tcp ports (conn-refused) PORT …...

使用瑞芯微RK3588的NPU进行模型转换和推理

使用边缘设备进行算法落地时&#xff0c;通常要考虑模型推理速度&#xff0c;NVIDA系列平台可以使用TensorRT和CUDA加速&#xff0c;瑞芯微RK3588的板子上都是Arm的手机GPU&#xff0c;虽然没有类似CUDA的加速计算方式&#xff0c;但是提供了NPU进行加速推理&#xff0c;本文说…...

我用AI做数据分析之四种堆叠聚合模型的比较

我用AI做数据分析之四种堆叠聚合模型的比较 这里AI数据分析不仅仅是指AI生成代码的能力&#xff0c;我想是测试AI数据分析方面的四个能力&#xff0c;理解人类指令的能力、撰写代码的能力、执行代码的能力和解释结果的能力。如果这四个能力都达到了相当的水准&#xff0c;才可…...

AcWing 5166:对称山脉 ← 动态规划

【题目来源】 https://www.luogu.com.cn/problem/P9325 https://www.acwing.com/problem/content/5169/ 【题目描述】 有 N 座山排成一排&#xff0c;从左到右依次编号为 1∼N。 其中&#xff0c;第 i 座山的高度为 hi。 对于一段连续的山脉&#xff0c;我们使用如下方法定义该…...

DeepSeek 从入门到精通学习指南,2025清华大学《DeepSeek从入门到精通》正式发布104页pdf版超全解析

DeepSeek 是一款强大的 AI 搜索引擎&#xff0c;广泛应用于企业级数据检索和分析。无论您是初学者还是有经验的用户&#xff0c;掌握 DeepSeek 的使用都能为您的工作带来极大的便利。本文将从入门到精通&#xff0c;详细介绍如何学习和使用 DeepSeek。 链接: https://pan.baid…...