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

nlp之加载电商评论集

目录

    • 代码
    • 代码解读

代码

import pandas as pddf = pd.read_csv("../data/Clothing Reviews.csv")
print(df.info())df['Review Text'] = df['Review Text'].astype(str)
x_train = df['Review Text']
y_train = df['Rating']from tensorflow.keras.preprocessing.text import Tokenizer# 创建词典的索引,默认词典大小20000
dict_size = 20000
tokenizer = Tokenizer(num_words=dict_size)
# jieba: 停用词,标点符号,词性.....
tokenizer.fit_on_texts(x_train)
print(len(tokenizer.word_index), tokenizer.index_word)# 把评论的文本转化序列编码
x_train_tokenized = tokenizer.texts_to_sequences(x_train)
print(x_train_tokenized)
for v in x_train_tokenized[:10]:print(v, len(v))# 可以通过可视化方式展示评论的长度
import matplotlib.pyplot as plt
import matplotlib
import numpy as np
matplotlib.use('TkAgg')word_per_comment = [len(comment) for comment in x_train_tokenized]
plt.hist(word_per_comment, bins=np.arange(0, 200, 10))
plt.show()# 通过指定长度,把不等长list转化为等长
from tensorflow.keras.preprocessing.sequence import pad_sequencesmax_comment_length = 120
x_train = pad_sequences(x_train_tokenized, maxlen=max_comment_length)for v in x_train[:10]:print(v, len(v))

代码解读

逐行解读这段代码。

import pandas as pd

引入了pandas库,并以pd为别名。

df = pd.read_csv("../data/Clothing Reviews.csv")

使用pandas的read_csv函数读取一个CSV文件,并将其保存到变量df中。

print(df.info())

打印数据框df的信息,包括列名、非空值数量和数据类型。

<class ‘pandas.core.frame.DataFrame’>
RangeIndex: 23486 entries, 0 to 23485
Data columns (total 11 columns):
Column Non-Null Count Dtype


0 Unnamed: 0 23486 non-null int64
1 Clothing ID 23486 non-null int64
2 Age 23486 non-null int64
3 Title 19676 non-null object
4 Review Text 22641 non-null object
5 Rating 23486 non-null int64
6 Recommended IND 23486 non-null int64
7 Positive Feedback Count 23486 non-null int64
8 Division Name 23472 non-null object
9 Department Name 23472 non-null object
10 Class Name 23472 non-null object

df['Review Text'] = df['Review Text'].astype(str)

将数据框df中的Review Text列的数据类型转换为字符串。

x_train = df['Review Text']
y_train = df['Rating']

Review Text列分配给x_train,将Rating列分配给y_train

from tensorflow.keras.preprocessing.text import Tokenizer

tensorflow.keras.preprocessing.text模块导入Tokenizer类。

dict_size = 20000
tokenizer = Tokenizer(num_words=dict_size)

设置词典大小为20,000,并创建一个Tokenizer对象。

tokenizer.fit_on_texts(x_train)

x_train上调用fit_on_texts方法,这样tokenizer就可以根据x_train中的文本构建词典。

print(len(tokenizer.word_index), tokenizer.index_word)

打印词典中的词数量和词到索引的映射。

x_train_tokenized = tokenizer.texts_to_sequences(x_train)

使用texts_to_sequences方法将x_train中的文本转化为整数序列,并保存到x_train_tokenized

print(x_train_tokenized)

打印转化后的整数序列。

for v in x_train_tokenized[:10]:print(v, len(v))

打印x_train_tokenized中前10个序列及其长度。

import matplotlib.pyplot as plt
import matplotlib
import numpy as np

导入了matplotlib.pyplotmatplotlibnumpy库。

matplotlib.use('TkAgg')

设置matplotlib使用的后端为TkAgg

word_per_comment = [len(comment) for comment in x_train_tokenized]

计算每个评论的词数,并保存到word_per_comment列表中。

plt.hist(word_per_comment, bins=np.arange(0, 200, 10))

绘制一个直方图,显示评论的词数分布。直方图的分箱范围是0到200,每10个单位一个分箱。

plt.show()

显示上面绘制的直方图。

from tensorflow.keras.preprocessing.sequence import pad_sequences

tensorflow.keras.preprocessing.sequence模块导入pad_sequences函数。

max_comment_length = 120

设置评论的最大长度为120。

x_train = pad_sequences(x_train_tokenized, maxlen=max_comment_length)

使用pad_sequences函数将x_train_tokenized中的序列填充或截断到长度为120。

for v in x_train[:10]:print(v, len(v))

打印填充或截断后的前10个序列及其长度。

print('ok')

打印ok,表示代码运行完毕。

总之,这段代码的主要目的是从CSV文件中读取文本评论,然后使用Tokenizer将文本转化为整数序列,并对这些序列进行填充或截断,以确保它们都有相同的长度。

相关文章:

  • 真机环境配置教程
  • 项目进度延误,危机管理5大注意事项
  • 评论功能的选择难题:数据结构如何选定?
  • 什么是React中的有状态组件(stateful component)和无状态组件(stateless component)?
  • [每周一更]-(第69期):特殊及面试的GIT问题解析
  • 计算机网络重点概念整理-第七章 网络安全【期末复习|考研复习】
  • Redis学习笔记3:基于springboot的lettuce redis客户端validateConnection连接有效性检查
  • 2023-10-28 LeetCode每日一题(从数量最多的堆取走礼物)
  • PS 安装教程 2022版(全网最详细图文教程)
  • 自动驾驶之—LaneAF学习相关总结
  • 为什么Open3D可视化TensorFlow张量速度超慢
  • Go实现MapReduce
  • element-ui vue2 iframe 嵌入外链新解
  • 【C++初探:简单易懂的入门指南】一
  • ExoPlayer架构详解与源码分析(7)——SampleQueue
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • github从入门到放弃(1)
  • go append函数以及写入
  • gulp 教程
  • JS题目及答案整理
  • js中forEach回调同异步问题
  • Linux gpio口使用方法
  • python 装饰器(一)
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • springMvc学习笔记(2)
  • 飞驰在Mesos的涡轮引擎上
  • 记一次用 NodeJs 实现模拟登录的思路
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 深度解析利用ES6进行Promise封装总结
  • 使用权重正则化较少模型过拟合
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • Nginx实现动静分离
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (蓝桥杯每日一题)love
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (转) RFS+AutoItLibrary测试web对话框
  • .NET Core 和 .NET Framework 中的 MEF2
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .net开发时的诡异问题,button的onclick事件无效
  • .NET委托:一个关于C#的睡前故事
  • .Net中的集合
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • @private @protected @public
  • @RequestParam,@RequestBody和@PathVariable 区别
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku