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

深度学习N2周:构建词典

  • 🍨 本文为🔗365天深度学习训练营中的学习记录博客
  • 🍖 原作者:K同学啊

本周任务:使用N1周的.txt文件构建词典,停用词请自定义

1.导入数据

from torchtext.vocab import build_vocab_from_iterator
from collections import Counter
from torchtext.data.utils import get_tokenizer
import jieba, re, torchdata = ["我是K同学啊!","我是一个深度学习博主,","这是我的365天深度学习训练营教案,","你可以通过百度、微信搜索关键字【K同学啊】找到我"
]

2.设置分词器

# 中文分词方法
tokenizer = jieba.lcut# 加载自定义词典
jieba.load_userdict("D:/learn/my_dict.txt")

jieba是一个由python编写的中文分词库,用于对中文文本进行分词,其安装方法:

cmd命令:pip install jieba

my_dict.txt文件内容如下:

3.清除标点符号与停用词

在使用jieba进行分词时,可以通过去除标点符号来减少分词结果种的噪音。

# 去除标点符号的函数
def remove_punctuation(text):return re.sub(r'[^\w\s]', '', text)

在使用jieba进行分词时,可以通过去除停用词(即没有具体含义、对文本语义没有影响的词汇,如“的”、“是”、“这”)来减少分词结果中的噪音。标点符号与停用词的去除通常有助于提高文本分类任务的结果。

# 假设我们有一个停用词表,内容如下:
stopwords = set(["的", "这", "是"])# 去除停用词的函数
def remove_stopwords(words):return [word for word in words if word not in stopwords]

4.设置迭代器

# 定义一个迭代器来返回文本数据中的词汇
def yield_tokens(data_iter):for text in data_iter:# 去除标点符号text = remove_punctuation(text)# 分词并生成词汇text = tokenizer(text)# 去除停用词text = remove_stopwords(text)yield text

5.构建词典

# 使用 build_vocab_from_iterator 来构建词汇表
vocab = build_vocab_from_iterator(yield_tokens(data), specials=["<unk>"])# 将未知的词汇索引为0
vocab.set_default_index(vocab["<unk>"])

.build_vocab_from_iterator()函数详解

作用:从一个可迭代对象中统计token的频次,并返回一个vocab(词汇字典) 

6.文本数字化

# 打印词汇表中的内容
print("词典大小:", len(vocab))
print("词典内部映射:", vocab.get_stoi())text = "这是我的365天深度学习训练营教案"
words = remove_stopwords(jieba.lcut(text))
print("\n")
print("jieba分词后的文本: ", jieba.lcut(text))
print("去除停用词后的文本: ", remove_stopwords(jieba.lcut(text)))
print("数字化后的文本: ", [vocab[word] for word in words])

结果:

 查了很多资料,依旧没有解决这个问题。但通过看别人的帖子,理解了算法的原理。

7.总结

1.遇到的问题

解决:

pip install torchtext

2.掌握了如何从文本数据中提取词汇,并通过去除标点符号和停用词来减少噪音。还学会了如何使用jieba进行中文分词,并通过自定义词典来优化分词结果。可能因为torchtext与电脑配置冲突,一直无法运行到最后一步,就差一点点。。。

http://www.lryc.cn/news/2401924.html

相关文章:

  • Qt多线程访问同一个数据库源码分享(基于Sqlite实现)
  • 多类别分类中的宏平均和加权平均
  • 电子电路:什么是扩散电容?
  • 贪心算法应用:装箱问题(FFD问题)详解
  • 机器学习的数学基础:假设检验
  • 余氯传感器在智慧水务系统中如何实现IoT集成
  • 操作系统学习(九)——存储系统
  • 服务器安装软件失败或缺依赖怎么办?
  • linux nm/objdump/readelf/addr2line命令详解
  • 006网上订餐系统技术解析:打造高效便捷的餐饮服务平台
  • [10-2]MPU6050简介 江协科技学习笔记(22个知识点)
  • 基于行为分析的下一代安全防御指南
  • Redis持久化机制详解:RDB与AOF的深度剖析
  • 记录一次 apt-key curl导入失败的处理方式
  • Spring Boot 3.X 下Redis缓存的尝试(二):自动注解实现自动化缓存操作
  • 【03】完整开发腾讯云播放器SDK的UniApp官方UTS插件——优雅草上架插件市场-卓伊凡
  • C:\Users\中文名修改为英文名
  • Web 架构相关文章目录(持续更新中)
  • Redis 安装配置和性能优化
  • 购物商城网站 Java+Vue.js+SpringBoot,包括商家管理、商品分类管理、商品管理、在线客服管理、购物订单模块
  • PostgreSQL 安全纵深防御:从权限到加密
  • 【美团技术团队】从实际案例聊聊Java应用的GC优化
  • 在word中点击zotero Add/Edit Citation没有反应的解决办法
  • 整合swagger,以及Knife4j优化界面
  • Unity | AmplifyShaderEditor插件基础(第四集:简易shader)
  • 【安全攻防与漏洞】​​量子计算对HTTPS的威胁:后量子密码学进展
  • linux C语言中的动态库 静态库说明
  • Flash烧录速度和加载配置速度(纯FPGA ZYNQ)
  • 解构与重构:PLM 系统如何从管理工具进化为创新操作系统?
  • Redis:介绍和认识,通用命令,数据类型和内部编码,单线程模型