【Pytorch神经网络理论篇】 37 常用文本处理工具:spaCy库+torchtext库

简介: spacy是一个具有工业级强度的PythonNLP工具包,它可以用来对文本进行断词、短句、词干化、标注词性、命名实体识别、名词短语提取、基于词向量计算词间相似度等处理。

同学你好!本文章于2021年末编写,获得广泛的好评!


故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现,


Pytorch深度学习·理论篇(2023版)目录地址为:


CSDN独家 | 全网首发 | Pytorch深度学习·理论篇(2023版)目录


本专栏将通过系统的深度学习实例,从可解释性的角度对深度学习的原理进行讲解与分析,通过将深度学习知识与Pytorch的高效结合,帮助各位新入门的读者理解深度学习各个模板之间的关系,这些均是在Pytorch上实现的,可以有效的结合当前各位研究生的研究方向,设计人工智能的各个领域,是经过一年时间打磨的精品专栏!

https://v9999.blog.csdn.net/article/details/127587345


欢迎大家订阅(2023版)理论篇

以下为2021版原文~~~~



463cbbc9d83a48a0a26602446816b2d4.png


在NLP的发展过程中,人们也开发了很多非常实用的工具,这些工具可以帮助开发人员快速地实现自然语言相关的基础处理,从而可以更好地将精力用在高层次的语义分析任务中下面详细介绍该领域中比较优秀的工具。


1 spaCy库


1.1 简介


spacy是一个具有工业级强度的PythonNLP工具包,它可以用来对文本进行断词、短句、词干化、标注词性、命名实体识别、名词短语提取、基于词向量计算词间相似度等处理。


spaCy库里大量使用了Cython来提高相关模块的性能,因此在业界应用中很有实际价值。


1.2 安装


1.2.1 安装spacy本体


pip install spacy
# 查看安装的spacy版本
python -m spacy info
# 显示
Location           /usr/local/lib/python3.5/dist-packages/spacy
Platform           Linux-4.15.0-45-generic-x86_64-with-Ubuntu-16.04-xenial
Installed models    en_core_web_md, en
Python version     3.5.2          
spaCy version      1.8.0    


1.2.2 安装语言包(en)


意下载与自己spacy对应版本的en_core_web_sm:

https://github.com/explosion/spacy-models/tags

https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.2.0/en_core_web_sm-3.2.0.tar.gz

1.2.3 安装 en_core_web_sm-3.2.0.tar.gz


pip install en_core_web_sm-3.2.0.tar.gz
# en_core_web_xx,xx代表模型大小{sm:小型,md:中型…}


1.2.4 增加软连接


python -m spacy download en


1.2.5 成功


1ccd5ac6d13842bdbb154a4ff333bdb4.png


2 与PyTorch深度结合的文本处理库torchtext


🚀torchtext是一个用于文本预处理的库,使用起来也十分简便。


这是torchtext的github链接:https://github.com/pytorch/text


2.1 torchtext库简介


torchtext是一个可以与PyTorch深度结合的文本处理库。它可以方便地对文本进行预处理,如截断补齐、构建词表等。


28dc7185cb244ffd9f9c27c285c8a1f6.png


torchtext对数据的处理主要包Field、Dataset和迭代器这3部分。


2.1.1 ⭐Field


指定要如何处理某个字段,比如指定分词方法,是否转成小写,起始字符,结束字符,补全字符以及词典等。


2.1.2 ⭐Dataset


用于加载数据,torchtext的Dataset是继承自pytorch的Dataset,提供了一个可以下载压缩数据并解压的方法(支持.zip, .gz, .tgz)。splits方法可以同时读取训练集,验证集,测试集。TabularDataset可以很方便的读取CSV, TSV, or JSON格式的文件


2.1.3 ⭐迭代器


迭代器:返回模型所需要的、处理后的数据,主要分为Iterator、Bucketlerator、BPTTIterator这3种。


迭代器的3种类型具体如下。
iterator:标准迭代器。
Bucketlerator:相比于标准迭代器,会将类似长度的样本当作一批来处理。因为在文本处理中经常需要将每一批样本长度补齐为当前批中最长序列的长度,所以当样本长度差别较大时,使用Bucketlerator可以提高填充效率。除此之外,我们还可以在Field中通过fx_length参数来对样本进行截断补齐操作。
BPTTIterator :基于时间的反向传播(Back-Prepagation Through Time,BPTT)算法的迭代器,一般用于语言模型中。


2.2 torchtext库及其内置数据集与调用库的安装


为了方便文本处理,torchtext库又内置了一些常用的文本数据集,并集成了一些常用的其他文本处理库。在使用时,可以利用torchtext库中提供的API进行内置数据集的下载和其他文本处理库的间接调用。


2.2.1 安装torchtext


pip install torchtext==0.9.0


2.2.2 查看torchtext库的内置数据集


安装好torchtext库后,可以在如下路径中查看torchtext库的内置数据集:
本地Anaconda的虚拟环境路径\Lb\site-packages\txt\datasets\__init__.Py


2.2.3 安装torchtext库的调用模块


安装torchtext库的调用模块在使用torchtext库的过程中,如果还要间接使用其他的文本处理库,则需要额外下载并安装。


2.3 torchtext库中的内置预训练词向量


torchtext库中内置若干个预训练词向量,可以在模型中直接拿来对本地的权重进行初始化。

目录
相关文章
|
2月前
|
C++
基于Reactor模型的高性能网络库之地址篇
这段代码定义了一个 InetAddress 类,是 C++ 网络编程中用于封装 IPv4 地址和端口的常见做法。该类的主要作用是方便地表示和操作一个网络地址(IP + 端口)
162 58
|
2月前
|
网络协议 算法 Java
基于Reactor模型的高性能网络库之Tcpserver组件-上层调度器
TcpServer 是一个用于管理 TCP 连接的类,包含成员变量如事件循环(EventLoop)、连接池(ConnectionMap)和回调函数等。其主要功能包括监听新连接、设置线程池、启动服务器及处理连接事件。通过 Acceptor 接收新连接,并使用轮询算法将连接分配给子事件循环(subloop)进行读写操作。调用链从 start() 开始,经由线程池启动和 Acceptor 监听,最终由 TcpConnection 管理具体连接的事件处理。
60 2
|
2月前
基于Reactor模型的高性能网络库之Tcpconnection组件
TcpConnection 由 subLoop 管理 connfd,负责处理具体连接。它封装了连接套接字,通过 Channel 监听可读、可写、关闭、错误等
82 1
|
2月前
|
负载均衡 算法 安全
基于Reactor模式的高性能网络库之线程池组件设计篇
EventLoopThreadPool 是 Reactor 模式中实现“一个主线程 + 多个工作线程”的关键组件,用于高效管理多个 EventLoop 并在多核 CPU 上分担高并发 I/O 压力。通过封装 Thread 类和 EventLoopThread,实现线程创建、管理和事件循环的调度,形成线程池结构。每个 EventLoopThread 管理一个子线程与对应的 EventLoop(subloop),主线程(base loop)通过负载均衡算法将任务派发至各 subloop,从而提升系统性能与并发处理能力。
123 3
|
2月前
基于Reactor模式的高性能网络库github地址
https://github.com/zyi30/reactor-net.git
48 0
|
2月前
基于Reactor模型的高性能网络库之Poller(EpollPoller)组件
封装底层 I/O 多路复用机制(如 epoll)的抽象类 Poller,提供统一接口支持多种实现。Poller 是一个抽象基类,定义了 Channel 管理、事件收集等核心功能,并与 EventLoop 绑定。其子类 EPollPoller 实现了基于 epoll 的具体操作,包括事件等待、Channel 更新和删除等。通过工厂方法可创建默认的 Poller 实例,实现多态调用。
198 60
|
2月前
|
安全 调度
基于Reactor模型的高性能网络库之核心调度器:EventLoop组件
它负责:监听事件(如 I/O 可读写、定时器)、分发事件、执行回调、管理事件源 Channel 等。
178 57
|
2月前
基于Reactor模型的高性能网络库之时间篇
是一个用于表示时间戳(精确到微秒)**的简单封装类
127 57
|
2月前
|
缓存 索引
基于Reactor模式的高性能网络库之缓冲区Buffer组件
Buffer 类用于处理 Socket I/O 缓存,负责数据读取、写入及内存管理。通过预分配空间和索引优化,减少内存拷贝与系统调用,提高网络通信效率,适用于 Reactor 模型中的异步非阻塞 IO 处理。
95 3
|
2月前
高性能网络库设计之日志组件
高性能网络库设计之日志组件
105 2

热门文章

最新文章

推荐镜像

更多