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

使用 fastai 进行文本分类的简明指南 - Fastai Part 5

子词分词

对于中文而言,由于不存在"词"的概念,fastai通过SentencePiece提供的subword支持变得至关重要。由于词与词之间没有空格:

我喜欢学习 (I like studying)

SentencePiece会将其分割为:

我/喜欢/学习/

这是通过直接在原始中文文本上进行无监督学习过程来完成的,使模型能够泛化到新词和新表达。这对中文很重要,因为它允许模型学习正确的词边界,避免以意想不到的方式分割词语。因此,我们可以将它们应用于fastai的NLP管道中使用的AWD-LSTM或基于Transformer的模型。

下面是另一个例子:

我喜欢吃辣椒。
▁我 ▁喜欢 ▁吃 ▁辣 ▁椒 ▁。

每个token要么是一个字符,要么是一个频繁出现的组合,这是模型从训练数据(原始文本)中随时间学习到的。_标记了新子词的开始。如你所见,它正确地将(快乐)和(欢喜)组合为单个token喜欢(喜欢)。

具体来说,子词分词可以这样完成:

# 假设 `text` 是原始文本
def subword(vocab_size):sw = SubwordTokenizer(vocab_size=vocab_size)sw.setup(text)return ' '.join(first(sw([text])))

注意,根据词汇表的大小,子词分词可能会产生不同的结果。词汇表越大,每句话的token越少,训练时间越快,但嵌入矩阵也越大。这就是为什么我们需要找到平衡。

数值化 - 将Token转换为数字

在本系列的第2部分中,我们学习了如何将图像转换为数字以进行分类任务。同样的原理适用于文本。计算机只能处理数字,所以我们需要将前一步的token转换为数字。然后我们可以将它们输入到神经网络中。

我们将利用fastai的Numericalize()将token转换为整数。这是通过创建一个Vocab对象来完成的,它是token到整数的映射。Numericalize()然后使用这个映射将token转换为整数。然后我们可以将它们输入到fastai的Datasets对象中,该对象对整个数据集应用相同的转换。结果的dataset.items将包含整数。

下面是一个示例:

http://www.xdnf.cn/news/10544.html

相关文章:

  • 【仿muduo库实现并发服务器】使用正则表达式提取HTTP元素
  • java基础学习(二十一)
  • oscp练习 PG Wombo
  • 「完整」AI文档库 | 5月20最新发布,221页,《北京大学AI+Agent与Agentic+AI的原理和应用洞察与未来展望》
  • ChatOn:智能AI聊天助手,开启高效互动新时代
  • pikachu靶场通关笔记09 XSS关卡05-DOM型XSS-X
  • 第18讲、Odoo接口开发详解:原理、类型与实践
  • 【软件测试】火狐驱动下载镜像
  • Golang学习之旅
  • linux驱动 - 5: simple usb device驱动
  • 小白的进阶之路系列之十----人工智能从初步到精通pytorch综合运用的讲解第三部分
  • CppCon 2014 学习:Exception-Safe Coding
  • [免费]微信小程序网上花店系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
  • Cesium快速入门到精通系列教程四:加载渲染GEOJSON数据
  • BA-SAM: 用于 Segment Anything 模型的可扩展偏置模式注意力掩码
  • vue-13(延迟加载路由)
  • Oracle的Hint
  • 2025/6月最新Cursor(0.50.5版本)一键自动更换邮箱无限续杯教程
  • Spring 5 响应式编程:构建高性能全栈应用的关键
  • 数据库系统概论(十二)SQL 基于派生表的查询 超详细讲解(附带例题表格对比带你一步步掌握)
  • MySQL-多表关系、多表查询
  • Qt OpenGL 相机实现
  • 机器学习算法:逻辑回归
  • 操作系统复习
  • 方法重写与方法重载详解
  • CSS之动画(奔跑的熊、两面反转盒子、3D导航栏、旋转木马)
  • 谷歌CEO皮查伊眼中的“下一代平台“与未来图景
  • 基于FPGA的VGA显示文字和动态数字基础例程,进而动态显示数据,类似温湿度等
  • Pyomo中线性规划接口的使用
  • 为什么ping显示connect:network is unreachable,如何排查网络不通问题?