NLP中的Tokenizer分词器的概念与实现

Tokenizer

在开始学习 NLP 相关知识之前,先要学习一个叫 Tokenizer 的概念,这可谓是所有 NLP 模型开始训练前需要做的一个步骤,那么 Tokenizer 是什么?

在这里插入图片描述

在计算机处理一行语句的时候,我们给其输入一个 String,计算机实际上是很难进行处理的,所以我们希望把这么一个 String,把他的每一个字或者每一个词切分开,并且转换成一个数字(用数字来进行表示),也就是一个 ID

Tokenizer 翻译过来叫切词器,其所做的事情就是这么一个事情。

如上图所示,有一个 String:“站在人生的龍字路口,不知所措”。

然后将其按字切开,得到:“ 站 在 人 生 的 龍 字 路 口 , 不 知 所 措 ”。

然后就应该进行查表了,应该会存在这么一个类似于字典的东西,该字典包含了很多常见的字或者是词,对于表中不存在的字词会使用一个特殊的标识 UNK 来进行表示。

最后将这些 token 转换成一个 int,也就是刚刚说的 ID。

这个说白了就是一个切词工具,因此我们不会自己写一个字典,直接引入 Hugging Face 已经写好的分词器训练模型,使用该模型训练一个分词器出来使用即可,Hugging Face 网页的链接如下:

Hugging Face 提供的 Tokenizer 工具;

点击链接进去可以发现如下:

在这里插入图片描述

使用 pip install tokenizers 命令即可进行下载,如果下载过程出错,那么就多下载几次,我也是第三次下载的时候一下就下载好了,突然的非常快我也不知道为什么,反正多试几次。

这里需要一个语料库,我是直接在百度上找了一本 txt 格式的小说文本放进代码中充当语料库了,如果你要使用的话应该也能这么做,百度搜索 “小说txt文件” 应该就能像我一样找到。

在这里插入图片描述

然后写上训练代码,用来训练我们的 tokenizer 分词器:

在这里插入图片描述

这里如果报错 Exception: stream did not contain valid UTF-8 ,将 txt 文件重新保存为 UTF-8 编码的形式即可。

运行之后在我们的 model_save 文件夹下出现一个 json 文件:

在这里插入图片描述

往下拉可以看到已经都分好各个词或者字的 ID 啦:

在这里插入图片描述

接下来进行一个测试:

在这里插入图片描述

分词结果如下:

在这里插入图片描述

可以看见各个词或者字都被切了出来,并且都各自拥有一个在训练过程中被分配好的 ID 值。

##开头的词是什么意思?

##开头表示这个词或者字不是一个完整的词或者字,其是一个词根(因为分词器啥语言都能分,这里我们使用的中文,因此其也有一个对应的所谓词根的操作),为了节省内存空间,tokenizer 会把一些常见词拆成更零碎的部分,通过这些更零碎的部分则可以拼接出更多的词来提高切词的成功率。

上述就是在自然语言处理中所经常使用的 Tokenizer 的概念与简单实现。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android Media Framework(五)Tunnel Mode

本篇将聚焦Android Tunnel Mode,详细解析组件之间隧道连接过程、数据传递过程、组件销毁过程。通过阅读本篇内容,我们应能对tunneled组件的连接过程和buffer分配过程有所了解。 1、Tunnel Mode介绍 IL Spec详细描述了Tunnel Component的实现方式&#x…

【ArcGISProSDK】OpenItemDialog打开文件对话框

打开单个文件 效果 代码 public async void OpenFunction() {// 获取默认数据库var gdbPath Project.Current.DefaultGeodatabasePath;OpenItemDialog openItemDialog new OpenItemDialog() { Title "打开要素文件",InitialLocation gdbPath,Filter ItemFilte…

Linux 性能优化实战

文章目录 33 | 关于 Linux 网络,你必须知道这些(上)设计高并发架构需要考虑什么?如何理解分布式?如何理解云计算?如何理解微服务?TCP/IP网络分层模型是什么?每一层的功能是什么&…

矩阵练习2

48.旋转图像 规律: 对于矩阵中第 i行的第 j 个元素,在旋转后,它出现在倒数第i 列的第 j 个位置。 matrix[col][n−row−1]matrix[row][col] 可以使用辅助数组,如果不想使用额外的内存,可以用一个临时变量 。 还可以通…

STM32项目分享:智能窗帘系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 1.PCB图 2.PCB板打样焊接图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片: 哔哩哔哩视频链接: https://www.bilibili.c…

基于VLC可见光通信的室内光通信信道信噪比分析matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ..................................................................... % 接收功率计算Pr …

使用spark基于出租车GPS数据实现车辆数量统计以及北京每个城区的车辆位置点数分析

使用spark基于出租车GPS数据实现车辆数量统计以及北京每个城区的车辆位置点数分析 本文将介绍如何使用pyspark以及scala实现的spark分析出租车GPS数据,具体来说,我们将计算每个北京城区内的车辆位置点数,以及统计出租车的数量。我们将使用两…

Vue 3与ESLint、Prettier:构建规范化的前端开发环境

title: Vue 3与ESLint、Prettier:构建规范化的前端开发环境 date: 2024/6/11 updated: 2024/6/11 publisher: cmdragon excerpt: 这篇文章介绍了如何在Vue 3项目中配置ESLint和Prettier以统一代码风格,实现代码规范性与可读性的提升。通过设置规则、解…

49、Flink 的数据源的 SplitReader API 详解

SplitReader API a)概述 核心的 SourceReader API 是完全异步的,但实际上,大多数 Sources 都会使用阻塞的操作,例如客户端(如 KafkaConsumer)的 poll() 阻塞调用,或者分布式文件系统&#xff…

商业智能(BI)期末复习

商业智能(BI)期末复习 商业智能(BI)期末复习 2024/06/17 13:30-15:00 1.工作簿包含工作表 2.tableau是一款轻型BI工具 3.敏捷BI成本比较低 因为可以不建立数据仓库 4.敏捷BI的能带来更高的质量系统 是在用户监督下建立起来的 …

Python易错点总结

目录 多分支选择结构 嵌套选择 用match模式识别 match与if的对比 案例:闰年判断 三角形的判断 用whlie循环 高斯求和 死循环 用for循环 ​编辑continue​编辑 whlie与else结合 pass 序列 列表(有序) 元组(有序&…

高仿imtoken钱包源码/获取助记词/获取私钥/自动归集

高仿imtoken钱包/获取助记词/获取私钥/自动归集 带双端,无纯源码 源码下载:https://download.csdn.net/download/m0_66047725/89379118 更多资源下载:关注我。

【免杀】C2远控-APC注入-进程镂空

目录 进程镂空&傀儡进程(主要过内存扫描)代码 傀儡进程演示如何上线上线演示 APC注入&进程欺骗(主要过内存扫描)同步调用与异步调用代码演示 进程镂空&傀儡进程(主要过内存扫描) 进程镂空(Pro…

16.左侧导航菜单制作

左侧导航菜单制作 1. 修改路由&#xff0c;方便查看页面 index.ts import { RouteRecordRaw, createRouter, createWebHistory } from "vue-router"; import Layout from /layout/Index.vueconst routes: Array<RouteRecordRaw> [{path: /,name: home,comp…

记录大三上学期大数据课程设计:基于Hadoop和Spark的中文手写数字实时识别系统

我整理好了两个百度网盘链接&#xff0c;一个是模型文档和数据&#xff0c;一个是镜像&#xff0c;下载、导入虚拟机即可运行。 github地址&#xff1a;Li-Jihong/big-data: 用来记录大三上学期大数据课程设计&#xff1a;基于Hadoop和Spark的中文手写数字实时识别系统 (githu…

服务器如何远程桌面连接不上,服务器远程桌面连接不上解决办法

服务器远程桌面连接不上&#xff0c;是IT运维中常见的挑战之一。针对这一问题&#xff0c;专业的解决方法通常涉及以下几个方面的排查与操作&#xff1a; 首先&#xff0c;我们需要检查网络连接是否正常。远程桌面连接依赖于稳定的网络连接&#xff0c;因此&#xff0c;确认服务…

Rocky Linux 9.4 部署Zabbix 7.0

文章目录 Zabbix基本概念zabbix介绍zabbix特性zabbix结构 安装Zabbix主机名配置配置Zabbix-Server(1)禁用EPEL提供的Zabbix软件包(2)安装Zabbix Server、Web前端、Agent(3)创建初始数据库(4)Zabbix server配置数据库(5)为Zabbix前端配置PHP(6)启动Zabbix server和agent进程(7)放…

【JS重点知识05】正则表达式

目录 一&#xff1a;正则表达式简介 1 什么是正则表达式 2 正则表达式作用 二&#xff1a;语法格式&#xff1a; 1 定义正则表达式 2 检索、判断是否匹配 &#xff08;1&#xff09;test()方法 &#xff08;2&#xff09;exec()方法 三&#xff1a;元字符 普通字符&a…

【C++课程学习】:类和对象(拷贝构造和运算符重载)

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;C课程学习 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 ✍拷贝构造&#xff1a; &#x1f349;特点一&#xff1a; &#x1f349;特点二&#xff1a; &…

消息中间件比较:Redis,Kafka和RabbitMQ

对微服务使用异步通信时&#xff0c;通常使用消息代理。代理确保不同微服务之间的通信可靠且稳定&#xff0c;消息在系统内得到管理和监控&#xff0c;并且消息不会丢失。您可以从几个消息代理中进行选择&#xff0c;它们的规模和数据功能各不相同。这篇博文将比较三种最受欢迎…