上一篇介绍了数据集制作,但又没完全介绍。这篇将数据集文本进行分词保存pkl模型

imdb共有124020个数据,用于训练影评是积极(pos)话说消极(neg)的。消极文本的命名是在“_”后缀数字都是小于5的,反之不小于5的后缀命名是积极的评论文本。

代码如下:

# -*-coding:utf-8-*-
import pickle
from tqdm import tqdm
import dataset
from torch.utils.data import DataLoaderclass Vocab:UNK_TAG = "<UNK>"  # 表示未知字符PAD_TAG = "<PAD>"  # 填充符PAD = 0UNK = 1def __init__(self):self.dict = {  # 保存词语和对应的数字self.UNK_TAG: self.UNK,self.PAD_TAG: self.PAD}self.count = {}  # 统计词频的def fit(self, sentence):"""接受句子,统计词频:param sentence:[str,str,str]:return:None"""for word in sentence:self.count[word] = self.count.get(word, 0) + 1  # 所有的句子fit之后,self.count就有了所有词语的词频def build_vocab(self, min_count=1, max_count=None, max_features=None):"""根据条件构造 词典:param min_count:最小词频:param max_count: 最大词频:param max_features: 最大词语数:return:"""if min_count is not None:self.count = {word: count for word, count in self.count.items() if count >= min_count}if max_count is not None:self.count = {word: count for word, count in self.count.items() if count <= max_count}if max_features is not None:# [(k,v),(k,v)....] --->{k:v,k:v}self.count = dict(sorted(self.count.items(), lambda x: x[-1], reverse=True)[:max_features])for word in self.count:self.dict[word] = len(self.dict)  # 每次word对应一个数字# 把dict进行翻转self.inverse_dict = dict(zip(self.dict.values(), self.dict.keys()))def transform(self, sentence, max_len=None):"""把句子转化为数字序列:param sentence:[str,str,str]:return: [int,int,int]"""if len(sentence) > max_len:sentence = sentence[:max_len]else:sentence = sentence + [self.PAD_TAG] * (max_len - len(sentence))  # 填充PADreturn [self.dict.get(i, 1) for i in sentence]def inverse_transform(self, incides):"""把数字序列转化为字符:param incides: [int,int,int]:return: [str,str,str]"""return [self.inverse_dict.get(i, "<UNK>") for i in incides]def __len__(self):return len(self.dict)def collate_fn(batch):"""对batch数据进行处理:param batch: [一个getitem的结果,getitem的结果,getitem的结果]:return: 元组"""reviews, labels = zip(*batch)return reviews, labelsdef get_dataloader(train=True):imdb_dataset = dataset.ImdbDataset(train)my_dataloader = DataLoader(imdb_dataset, batch_size=200, shuffle=True, collate_fn=collate_fn)return my_dataloaderif __name__ == '__main__':ws = Vocab()dl_train = get_dataloader(True)dl_test = get_dataloader(False)for reviews, label in tqdm(dl_train, total=len(dl_train)):for sentence in reviews:ws.fit(sentence)for reviews, label in tqdm(dl_test, total=len(dl_test)):for sentence in reviews:ws.fit(sentence)ws.build_vocab()print(len(ws))print(ws)pickle.dump(ws, open("./models/vocab.pkl", "wb"))   #在models文件夹中保存数据,需要自己建一个文件夹 不然会找不到路径

在models文件夹下生成数据模型。

记得点赞关注加收藏,多支持博主,才能有动力日更不断!!!

有需要写代码的,可以私聊我,或加扣:334542894

NLP自然语言处理-英文文本电影影评分类2-pytorch版本相关推荐

  1. 数据分析学习总结笔记16:NLP自然语言处理与文本探索性分析

    文章目录 1 引言 2 数据集 3 文本统计信息分析 4 Ngram模型探索 5 基于pyLDAvis的主题模型探索 6 绘制词云图 7 情感分析 7.1 TextBlob 7.2 Vader Sen ...

  2. NLP自然语言处理的文本数据增强——回译(内含python工具包)

    回译 自然语言处理过程经常面临缺乏数据,因此需要进行数据增强.其中,回译,即将中文翻译成外文,再翻译回中文的操作可以扩展数据集,是一种好办法. 这里直接提供工具包NLP工具包-回译数据增强,可以直接调 ...

  3. 【NLP自然语言处理】文本特征提取

    目录 1.文本表示方法: 2.Count Vecotrs(Bag of Words词袋模型) 3.TF-IDF模型 3.1 jieba 下载结巴 : 使用结巴进行分词 3.2TF-IDF提取文本特征实 ...

  4. 英文文本分类——电影评论情感判别

    目录 1.导入所需的库 2.用Pandas读入训练数据 3.构建停用词列表数据 4.对数据做预处理 5.将清洗的数据添加到DataFrame里 6.计算训练集中每条评论数据的向量 7.构建随机森林分类 ...

  5. 电影影评的文本分类——基于tensorflow

    一.绪论 我们将用来自互联网电影数据库的IMDB数据集,其中包含50,000个电影影评的文本.这里将要将其分为25,000个用于训练,25,000个用于测试.训练集和数据集是平衡的,这意味着他们包含相 ...

  6. NLP之TEA:自然语言处理之文本情感分析的简介、算法、应用、实现流程方法、案例应用之详细攻略

    NLP之TEA:自然语言处理之文本情感分析的简介.算法.应用.实现流程.实现方法之详细攻略 目录 TEA的简介 TEA的应用 TEA的实现流程 TEA的实现方法 T1.词袋模型 TEA的案例应用 TE ...

  7. 自然语言处理实战——对电影评论进行情感分析(英文)

    写在前: 本次的训练集和测试集还有停用词我都放在我的公众号里面了(为了方便大家提取特意去开的公众号哈哈哈哈) 公众号:YOLO的学习进阶日常 对话框输入:英文文本分析 数据源 做本次实战的契机是疫情期 ...

  8. 使用google的bert结合哈工大预训练模型进行中文/英文文本二分类,基于pytorch和transformer

    使用bert的哈工大预训练模型进行中文/英文文本二分类,基于pytorch和transformer 前提 简要介绍 开始 导入必要的包和环境 准备并读取数据 导入模型的tokenizer 对数据进行t ...

  9. 【英文文本分类实战】之四——词典提取与词向量提取

    ·请参考本系列目录:[英文文本分类实战]之一--实战项目总览 ·下载本实战项目资源:神经网络实现英文文本分类.zip(pytorch) [1] 提取词典   在这一步,我们需要把训练集train.cs ...

最新文章

  1. 下载和安装Nginx之普通的HTTP和HTTPS服务器
  2. 一个简单的tcpserver
  3. 鸿蒙之境的称号,《神都夜行录》鸿蒙之境80级古都凶煞打法
  4. 请问为什么像cellspacing=0和bgcolor=red的属性在style里面不起作用呢?
  5. 关于C++中二维vector使用
  6. VB与Java颜色值的转换
  7. 矩阵转置(信息学奥赛一本通-T1126)
  8. java在线支付---02_分析易宝支付的工作流程
  9. php 方法注释代码规范,PHP开发代码规范
  10. python中rgb颜色_python颜色显示
  11. AAAI、IJCAI和ACL录用三名清华本科生成果,华人NLP最杰出HowNet成功融入DL模型
  12. 电脑坏掉之后,Oracle数据恢复
  13. 一文学会「内存映射」
  14. vyos配置dns迭代查询
  15. waiting for headers
  16. 移动硬盘装ubuntu
  17. 冯雪 手术机器人的应用_智能手术机器人及其应用_谢俊祥.
  18. 马上6等待服务器响应,解决网页响应慢,等待时间过长,waiting(TTFB)时间过长...
  19. 【科创人】联软科技张建耀:不擅长营销的拓荒高手,企业长期发展必经管理变革
  20. Win32汇编练习(SMU—循环结构)

热门文章

  1. node-sass安装失败 error D:\xxx\xxx\node_modules\node-sass: Command failed.(window + mac M1 pro)
  2. 关于lightroom 安装出现乱码问题
  3. 换手机了,如何将微信聊天记录转移到其他手机上?
  4. 手动搭建Hadoop环境
  5. 【干货】好看小视频去水印软件使用介绍
  6. HTML CSS 学习总结
  7. jquery checkbox选中事件监听
  8. 学习 Go 语言 0x04:《Go 语言之旅》中切片的练习题代码
  9. CF546C. Soldier and Cards(队列+模拟)
  10. 王爽 汇编语言 第三章 实验二