分词任务介绍-(十)

分词任务

  • 中文分词
    • 正向最大匹配
      • 实现方式一
      • 实现方式二
    • 反向最大匹配
    • 双向最大匹配
    • jieba分词
    • 上述分词方法的缺点总结
    • 基于机器学习
  • 总结
    • 分词技术
    • 经验总结

中文分词

正向最大匹配

分词的步骤

1.收集整理一个词表,类似于字典。如下图
2.对于待分词的句子,或者字符串,从前向后寻找最长,在词表中出现的词。
3.并循环执行1-2;直到字符串末尾

 图一
释义: 上述中,在句子中找到的最长匹配的词就是北京大学,切割后,继续寻找、依次类推

实现方式一

1.先找出词表中最大词的长度,上述中,最大为北京大学,为4
2.从字符串最左侧开始,按照最大词的长度,即为4,设置一个窗口,检查第一个窗口中的词是否在词表中,即是否为最大词
3.如果在词表中,则在词的边界,即右侧进行划分,然后向右移动,截取下一个窗口;
4.如果不在词表中,则右侧回退一个字符,就是缩小一个窗口,看剩下的窗口内的字符是否为一个词,是的话,就截取;不是就继续缩小。截取后,在截取的边界继续执行第3步
5.循环执行上述3-4步骤;完成整个句子的切割

在这里插入图片描述

实现方式二

特点 构建的词表有些特点
举例说明: 根据我们前面有词表:北京、北京大学、生前、报道
我们构建出词表如下:
在这里插入图片描述
释义:

上述构建的词表中,0代表前缀;1代表一个真正的词
我们想要构建的词表的每一个词都可以通过上述的构建方式表示出来

分词的逻辑

1.首先还是从字符串的左侧到右侧,从前往后走,并且每次只取一个字
2.取到第一个字,在词表中判断,是否为前缀或者是一个词,如果都不是,则直接在该处切分
3.如果是前缀或者是词,则往右侧多走一个字,用这两个字判断是否为前缀或者词,如果都不是,则切分;否则,循环第3步
4.循环2-3步;直接完成切分

如下图:
在这里插入图片描述

反向最大匹配

释义:和正向最大匹配的方向相反,正向最大匹配是从左往右,从句子的前往后,反向最大匹配,就是从右往左,从句子后到前,进行匹配;其他的匹配逻辑和方案都相同

如图所示:
在这里插入图片描述

双向最大匹配

释义: 同时进行正向最大切分、负向最大切分,之后比较两者的结果,最后决定一句话的切分,采用那种切分结果

比较的策略:

  1. 单字词:词表中可以有单字词,从分词的角度,我们会把他看成一个词;一般单字词少,切分效果相对好些
  2. 非字典词:未在词典出现过的词,一般会分为单字词;比如,文本中出现的英文、一串数字等
  3. 词总量,两种方法,在切割同一个句子时,可能获得的词量是不一样的,一般来说,词总量越少,分的相对会好些

jieba分词

介绍:jieba是一个python库,可以方便的做中文分词
分词逻辑:

1.在做这个任务前,就有一个分好词的语料,这个语料分的很好,并且,将其中的每个词的出现的频次统计出来,即事先有一份词频的表
2.然后根据词表,将一句话,或者需要分词的语料中所有的切分方式,切分出来
3.统计每种方式的总词频数,选取切分结果最高的作为分词结果

如图:
在这里插入图片描述

上述分词方法的缺点总结

  1. 对词表极为依赖,如果没有词表,则无法进行;如果词表中缺少需要的词,结果也不会正确
  2. 切分过程中,不会关注整个句子的意思,而是机械的切割一个个片段
  3. 文本中的错别字问题无法解决,会造成连锁的切分错误
  4. 对实体名无法枚举到词表中,比如:城市名、人名等;但是这些词却会造成切分的错误

基于机器学习

释义: 我们将上述分词的任务,转化为一个分词模型的训练任务,用模型去解决分词问题。

分词转化为分词模型的逻辑:

1.分词本质上是需要将一句话按照其内在的含义,将去拆分开,那么我们用模型如何去表示和预测相关信息,可以表示去语义的拆分呢?
2.RNN模型,是将一句话的每一个字按照顺序输入,并且每个字计算后都会有个输出结果,那么我们可以根据每个字的输出结果判断是否在该位置拆分
3.这样就转化为,用RNN模型去预测当前句子的每个字的位置是否拆分的问题,
4.对句子中的每一个词进行2分类判断的任务:即如下所示,1表示边界,0表示不是边界

在这里插入图片描述

总结

分词技术

  1. 对于中文分词的研究在逐渐减少
  2. 目前的分词在由大部分情况下,效果已经比较理想,优化空间不大
  3. 分词即使发生错误,下游任务不是一定发生错误,所以不值得花大量精力优化分词
  4. 随着神经网络和预训练模型的兴起,中文任务逐渐不再需要分词,甚至不做分词,效果更好

经验总结

  1. 相同的任务有不同的算法可以完成,其结果和效率各有优劣
  2. 空间换时间,是一种常用的提升性能思路
  3. 多种算法组合使用,可能会获得更好的结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/47673.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习西瓜书笔记(一)

机器学习西瓜书笔记 第一章(chapter 1) 绪论 (参考机器学习西瓜书)第一节(section 1)引言第二节(section 2)基本术语第三节(section 3)假设空间第四节(section 4)归纳偏好第五节(section 5)发展历程第六节(section 6)应用现状第一章(chapter 1) 绪论 (参考机…

C++编程小游戏------斗罗大陆(1)魂力测评和武魂觉醒

#include <bits/stdc.h> #include <windows.h> using namespace std; string name,wh; int hl,wh1; int gj50,fy50,jy5000,hp60; int main() { // 共十个武魂["昊天锤","蓝电霸王龙","七杀剑","火凤凰","尖尾雨燕&qu…

麒麟系统arm架构上部署开发环境。

今天早早来到公司&#xff0c;这也是再公司搬址前在老地址待得最后一天&#xff0c;昨天把前面重要的一个任务也完成的差不多了&#xff0c;遂现在记录一下。 收到任务&#xff0c;要将公司的开发环境和生产环境配置在银河麒麟v10服务器上。这个服务器是向华为申请得到的&…

实战:Eureka的概念作用以及用法详解

概叙 什么是Eureka&#xff1f; Netflix Eureka 是一款由 Netflix 开源的基于 REST 服务的注册中心&#xff0c;用于提供服务发现功能。Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件的一部分&#xff0c;基于 Netflix Eureka 进行了二次封装&#xff0c;主要负责…

高性能分布式IO系统BL205 OPC UA耦合器

边缘计算是指在网络的边缘位置进行数据处理和分析&#xff0c;而不是将所有数据都传送到云端或中心服务器&#xff0c;这样可以减少延迟、降低带宽需求、提高响应速度并增强数据安全性。 钡铼BL205耦合器就内置边缘计算功能&#xff0c;它不依赖上位机和云平台&#xff0c;就能…

数据仓库实践:使用 SQL 计算材料BOM成本单价

背景 在制造业财务数据分析建设过程中&#xff0c;有时需要通过BOM汇总计算材料的单价&#xff0c;一般会有采购核价&#xff0c;库存成本&#xff0c;还有下阶材料单价按用量汇总得到的单价参与。 这些单价来源一般会根据优先级获取并在计算后作为最终的BOM 单价结果。参与财…

iOS ------ 编译链接

编译流程分析 编译可以分为四步&#xff1a; 预处理&#xff08;Prepressing)编译&#xff08;Compilation&#xff09;汇编 &#xff08;Assembly)链接&#xff08;Linking&#xff09; 预编译&#xff08;Prepressing&#xff09; 过程是源文件main.c和相关头文件被&#…

window11 部署llama.cpp并运行Qwen2-0.5B-Instruct-GGUF

吾名爱妃&#xff0c;性好静亦好动。好编程&#xff0c;常沉浸于代码之世界&#xff0c;思维纵横&#xff0c;力求逻辑之严密&#xff0c;算法之精妙。亦爱篮球&#xff0c;驰骋球场&#xff0c;尽享挥洒汗水之乐。且喜跑步&#xff0c;尤钟马拉松&#xff0c;长途奔袭&#xf…

FastAPI 学习之路(五十九)封装统一的json返回处理工具

在本篇文章之前的接口&#xff0c;我们每个接口异常返回的数据格式都不一样&#xff0c;处理起来也没有那么方便&#xff0c;因此我们可以封装一个统一的json。 from fastapi import status from fastapi.responses import JSONResponse, Response from typing import Unionde…

= null 和 is null;SQL中关于NULL处理的4个陷阱;三值逻辑

一、概述 1、NULL参与的所有的比较和算术运算符(>,,<,<>,<,>,,-,*,/) 结果为unknown&#xff1b; 2、unknown的逻辑运算(AND、OR、NOT&#xff09;遵循三值运算的真值表&#xff1b; 3、如果运算结果直接返回用户&#xff0c;使用NULL来标识unknown 4、如…

Go语言并发编程-Channel通信_2

Channel通信 Channel概述 不要通过共享内存的方式进行通信&#xff0c;而是应该通过通信的方式共享内存 这是Go语言最核心的设计模式之一。 在很多主流的编程语言中&#xff0c;多个线程传递数据的方式一般都是共享内存&#xff0c;而Go语言中多Goroutine通信的主要方案是Cha…

JavaEE:Lombok工具包的使用以及EditStarter插件的安装

Lombok是一个Java工具库&#xff0c;通过添加注解的方式&#xff0c;简化Java的开发。 目录 1、引入依赖 2、使用 3、原理解释 4、更多使用 5、更快捷的引入依赖 1、引入依赖 <dependency><groupId>org.projectlombok</groupId><artifactId>lomb…

pdf提取其中一页怎么操作?提取PDF其中一页的方法

pdf提取其中一页怎么操作&#xff1f;需要从一个PDF文件中提取特定页码的操作通常是在处理文档时常见的需求。这种操作允许用户选择性地获取所需的信息&#xff0c;而不必操作整个文档。通过选择性提取页面&#xff0c;你可以更高效地管理和利用PDF文件的内容&#xff0c;无论是…

Linux编辑器——vim的使用

目录 vim的基本概念 命令模式 底行模式 插入模式 注释和取消注释 普通用户进行sudo提权 vim配置问题 vim的基本概念 一般使用的vim有三种模式&#xff1a; 命令模式 底行模式和插入模式&#xff0c;可以进行转换&#xff1b; vim filename 打开vim&#xff0c;进入的…

ffmpeg ffplay.c 源码分析

1 ffplay.c的意义 ffplay.c是FFmpeg源码⾃带的播放器&#xff0c;调⽤FFmpeg和SDL API实现⼀个⾮常有⽤的播放器。 例如哔哩哔哩著名开源项⽬ijkplayer也是基于ffplay.c进⾏⼆次开发。 ffplay实现了播放器的主体功能&#xff0c;掌握其原理对于我们独⽴开发播放器⾮常有帮助…

npm install时报错 reason: certificate has expired

在VS code中导入新项目&#xff0c;执行npm install时报错&#xff1a; npm warn old lockfile Could not fetch metadata for antv/g3.4.10 FetchError: request to https://registry.npm.taobao.org/antv%2fg failed, reason: certificate has expirednpm warn old lockfile …

UI设计中的响应式布局策略:让您的界面在各种设备上都表现出色

UI界面设计它是人与机器之间交互的媒介&#xff0c;也是客户体验的媒介&#xff08;UX&#xff09;一个组成部分。操作界面由两个主要部分组成&#xff1a;视觉设计&#xff08;即传达产品的外观和感觉&#xff09;和交互设计&#xff08;即元素功能和逻辑组织&#xff09;。用…

kubernetes Dashboard搭建 (六)

DashBoard 之前在kubernetes中完成的所有操作都是通过命令行工具kubectl完成的。其实&#xff0c;为了提供更丰富的用户体验&#xff0c;kubernetes还开发了一个基于web的用户界面&#xff08;Dashboard&#xff09; 用户可以使用Dashboard部署容器化的应用&#xff0c;还可以监…

<数据集>木材缺陷检测数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;4000张 标注数量(xml文件个数)&#xff1a;4000 标注数量(txt文件个数)&#xff1a;4000 标注类别数&#xff1a;8 标注类别名称&#xff1a;[Quartzity,Live_Knot,Marrow,resin,Dead_Knot,knot_with_crack,Knot_m…

Prometheus 监控 Java 应用 JMX Exporter

操作场景 Prometheus 社区开发了 JMX Exporter 用于导出 JVM 的监控指标&#xff0c;以便使用 Prometheus 来采集监控数据。当您的 Java 业务容器化至 Kubernetes 后&#xff0c;可通过本文了解如何使用 Prometheus 与 JMX Exporter 来监控 Java 应用。 JMX Exporter 简介 Ja…