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

LSTM自然语言处理情感分析项目(一)构建词汇表

目录

一.构建词汇表

1.定义最大词汇单词表个数和UNK,PAD

2.定义创建字典的函数

3.初步构建词汇表

4.词汇表排序(4760)

5.将UNK和PAD加入字典(4762)

6.保存独热编码的字典文件

7.调用函数


思考:向模型中传递数据时,需要提前处理好数据

1、目标:将评论内容转换为词向量,即使用Embedding层将文本中的字符转换为固定维度的词向量

2、每个词/字转换为词向量长度(维度)200 (因为项目我们使用腾讯训练好的Embedding权重4762*200)      

3、每一次传入的词/字的个数是否就是评论的长度?     应该是固定长度,每次传入数据与图像相似。     例如选择长度为70。则传入的数据为70*200

4、一条评论如果超过70个词/字怎么处理?     直接删除后面的内容

5、一条评论如果没有70个词/字怎么处理?     缺少的内容,统一使用一个数字(非词/字的数字)替代。

  • 针对文本长度不足的情况,使用Padding填充;对超出长度的文本,删除多余部分。

6、如果语料库中的词/字太多是否可以压缩?     可以,某些词/字出现的频率比较低,可能训练不出特征。因此可以选择频率比较高的词来训练。例如选择4760个。(ps:剩下两个一个是'PAD',一个是‘UNK’)

7、被压缩的词/字如何处理? 可以统一使用一个数字(非词/字的数字)替代。

一.构建词汇表

1.定义最大词汇单词表个数和UNK,PAD

from tqdm import tqdm
import pickle as pklMAX_VOCAB_SIZE=4760
UNK,PAD='<UNK>','<PAD>'

tqdm用于显示后续for循环进程

pkl用于保存后续的词汇表字典文件

2.定义创建字典的函数

file_path是微博评论文件地址

max_size即为字典最大词汇数

min_freq是词的最小出现次数

def build_vocab(file_path,max_size,min_freq):tokenizer=lambda x:[y for y in x]vocab_dic={}

tokenizer是一个函数,用于后续的将评论切割成每个单词

vocab_dic用于保存单词的字典

3.初步构建词汇表

    with open(file_path) as f:i=0for line in tqdm(f):if i==0:i+=1continue#跳过第一行表头lin=line[2:].strip()if not lin:#检查line中有没有内容continuefor word in tokenizer(lin):vocab_dic[word]=vocab_dic.get(word,0)+1#统计每个字出现的次数,字典保存

打开评论文件,使用for循环一行一行读取(不用pandas读取的原因,评论中存在很多逗号,而csv文件就是以逗号来分隔开的)

i=0时是表头,直接跳过

line[2:]切片即提取评论正文部分,strip()去除末尾空格

tokenizer()会先将lin中的这一行评论内容分词

for word in tokenizer(lin):vocab_dic[word]=vocab_dic.get(word,0)+1

统计每个单词出现的次数,可以看见初步构建的单词表有10026个单词

4.词汇表排序(4760)

先判断出现次数是否大于最小值,再根据出现的次数从大到小排序,提取前4760个
        vocal_list=sorted([_ for _ in vocab_dic.items() if _[1]>min_freq],key=lambda x:x[1],reverse=True)[:max_size]#先判断出现次数是否大于最小值,再根据出现的次数从大到小排序,提取前4760个
获取排序之后的字典,值即为该单词的独热编码
        vocab_dic={ word_count[0]:idx for idx,word_count in enumerate(vocal_list) }#获取排序之后的字典

5.将UNK和PAD加入字典(4762)

        vocab_dic.update({UNK:len(vocab_dic),PAD:len(vocab_dic)+1})#增加UNK和PADprint(vocab_dic)

6.保存独热编码的字典文件

        pkl.dump(vocab_dic,open('simplifyweibo_4_moods.pkl','wb'))print(f"Vocab Size:{len(vocab_dic)}")
return vocab_dic

pkl保存之后再以load()打开,返回的是原文件类型

7.调用函数

if __name__=='__main__':vocab=build_vocab('simplifyweibo_4_moods.csv',MAX_VOCAB_SIZE,3)print('vocab')

http://www.dtcms.com/a/403375.html

相关文章:

  • 门户网站建设ppt方案企业网站建设教程pdf
  • 搭建网站的企业淘客帝国 wordpress
  • HarmonyOS 5 网络编程与数据存储实战:从RESTful API到本地持久化
  • Vue.js 生命周期详解
  • 云手机远程控制的作用
  • Vue3》》vite》》 vue-router 和文件路由
  • 个人网站搭建详细步骤线上做汉语教师网站
  • GUIAgent:大模型驱动的浏览器自动化助手
  • Ubuntu gdb attach 权限问题
  • 做设计一般用的素材网站是什么asp 做网站的好处
  • 破解php网站后台密码怎样在wordpress里面调出菜单
  • 构建AI智能体:四十三、智能数据分析机器人:基于Qwen-Agent与Text2SQL的门票分析方案
  • CSS模板语法修复总结
  • 班级网站界面东平网站建设
  • Linux开发工具(编辑器gcc/g++,make/Makefile,gdb)
  • shell编程:sed - 流编辑器(4)
  • 没有网站怎么做推广丹阳网站建设策划
  • 【Linux】Ext系列文件系统(下)
  • 国外网站域名备案邢台网站建设公司排名
  • 技术分享 | 基于Dify的多终端亚马逊云科技智能化运维助手
  • GPU服务器,Docker启动出现could not select device driver ““ with capabilities: [[gpu]].
  • HarmonyOS 5 性能优化全攻略:从启动加速到内存管理
  • 电子商务专业毕业从事什么工作网站建设网站优化相关资讯文章
  • 我用ChatGPT完成选题的全过程复盘
  • 抖音视频图片如何去水印?去水印工具分享
  • 精读《C++20设计模式》:重新理解设计模式系列
  • Windows IIS搭建ASP网站的流程和注意事项
  • 注册一家设计公司流程最新站长seo网站外链发布平台
  • 「ECG信号处理——(26)模拟心电生成器与Pan-Tompkins算法检测R波」2025年9月24日
  • mysql重置管理员密码