1. 引言
随着互联网的普及,最早在21世纪初,电商开始高速发展,人们逐渐开始在网络上购物,商品评论也是最早源于电商平台,亚马逊最早在其平台上推出了商品评论功能,随着亚马逊的发展壮大,商品评论功能得到了广泛的应用和发展,也影响了其他电商平台的发展和功能设计,海量的评论数据随之产生,有时我们在电商平台打开一个商品界面,甚至能看到成千上万的已购用户评论信息。面对如此庞大且杂乱无章的数据,想要依靠人工进行处理、分类,从而提炼出有用信息几乎是不可能实现的,时间成本巨大。为了解决这个问题,专家学者们纷纷将目光投向文本挖掘领域,目前已经获得了一些进展,在未来有望取得更大的发展。商品评论可以帮助其他消费者了解产品的质量、性能和实际使用体验,从而为他们的购物决策提供参考,商家可以通过评论了解消费者对产品的反馈和意见,从而改进产品质量和服务,满足消费者的需求。商品评论的价值值得进行深入的挖掘和分析。
本文利用Python网络爬虫技术针对京东电商平台中商品的评论进行收集和分析,再对数据进行清洗和词向量化的处理后进行情感分析模型训练,通过Django搭建评论分析结果和模型训练可视化网站。对商品评论分析后网站将生成的可视化的图形直观简洁的展示给用户,在一定程度上使消费者在购买该商品前更加清晰的了解该商品。
2. 平台设计思路
本文搭建平台第一步通过Python爬虫技术将爬取到的商品和评论存储在MySQL数据库中,为后续的分析和可视化提供支持。第二步通过Django和Bootstrap关键技术实现网站的前后端构建。Django作为一个高效的Python Web框架,可以快速搭建起网站的后端服务,处理用户请求、管理数据库、提供API等功能。Bootstrap则提供了丰富的前端组件和样式,可以轻松地设计出美观、响应式的用户界面。第三步用户通过网站可以选择对应的商品进行可视化分析,后端对所选商品的评论进行数据清洗和jieba分词处理,通过训练好的Word2vec词向量模型进行评论向量化转化。以便后续的情感分析。经过处理后,评论数据被转化为词向量形式,使得评论能够被机器理解和处理。最后运用GRU模型或LSTM模型对处理后的商品评论进行情感分析。然后利用pyechart绘制相关的分析结果的可视化图表,将这些图表通过Django展示在前端页面上,向用户直观地展示商品评论分析结果。
3. 评论的采集和存储
3.1. 商品评论的采集
商品评论的采集通过编写自动化脚本实现,该脚本首先模拟浏览器访问京东商城的商品搜索页面,通过设置请求参数如Cookie和User-Agent来绕过反爬虫策略。输入商品关键词后,脚本构造搜索URL并发送请求,然后使用BeautifulSoup库解析返回的HTML页面,提取商品的基本信息包括商品ID、名称、价格、链接和图片链接。接着,脚本遍历搜索结果页面上的每个商品,提取详细的商品ID用于后续的评论信息抓取。通过使用商品ID构造访问评论的API链接,并通过循环分页方式获取所有需要的评论数据,其中评论信息通常包括评论内容、时间、评分等。最后,对获取的评论数据进行必要的清洗和解析,如去除HTML标签、转义字符等,确保数据的净化和统一格式。通过自动化执行极大地提高了商品评论采集的效率和准确性。
3.2. 商品评论的存储
商品评论的存储则通过ORM (对象关系映射)框架实现,使得可以在Python代码中直接操作数据库。在本项目中,使用Django的ORM框架与MySQL数据库进行交互。首先,在Django项目中定义数据模型Product和Review,这些模型分别对应数据库中的表,用于存储商品信息和评论信息。采集到的评论数据首先保存在CSV文件中,之后通过Pandas库读取这些文件,并解析数据。为了保证数据的一致性和可靠性,使用Django的数据库事务功能,通过transaction.atomic()创建一个事务块,确保商品信息和相关的评论数据要么全部成功写入数据库,要么在遇到错误时全部回滚。数据导入时,对每个商品首先创建一个商品对象并保存,然后遍历该商品的所有评论,为每条评论创建一个评论对象并关联到对应的商品对象上,最后保存评论对象到数据库。此外,通过批量处理和适当的索引优化数据库操作,提高了数据写入速度和查询效率。通过如上的步骤不仅确保了数据采集的自动化和系统性 [1] ,还利用ORM框架的高级特性简化了数据库操作,提高了评论数据处理的安全性和效率。
4. 评论的清洗和预处理
商品评论数据的清洗和预处理是确保后续情感分析模型准确性的重要步骤。通常情况下,通过爬虫程序获取的这些数据存在着大量脏数据,包括拼写错误、语法不规范、特殊符号等 [2] 。
为了避免由于脏数据导致后续的情感分析模型不准确,需要进行数据的清洗、使用词去除,评论数据分词,关键词的提取等一系列操作。在数据预处理的过程中,非中文字符的去除是一个必要的步骤。这可以通过Python正则表达式中的re.sub()方法来实现,通过定义相应的正则模式,可以有效地将非中文字符从评论数据中剔除,保留下中文文本以便后续处理。jieba分词是一款高效准确的中文分词工具,能够快速并准确地将中文文本分解成有意义的词语,对清洗好的数据本文采用jieba库中的lcut()方法对每条评论进行分词,在分词的过程中例如:“这个”、“顺着”、“的”等一些无意义的中文词汇可以通过加载停用词表一同删除。
5. Word2vec词向量化
本文采用了Word2vec技术来转化文本数据,以便后续进行深入的自然语言处理。Word2vec是一种广泛使用的词嵌入方法,它可以捕捉单词之间的语义关系,并将词语表示为向量形式 [3] 。本项目词向量化的设计思路如下:
第一步,从数据库中提取出通过爬虫技术搜集好的语料库,在进行了预处理后,使用gensim库中的Word2vec对预处理后的文本数据进行了词向量训练,模型参数设置如下:向量维度:100,决定了词向量的维数,窗口大小:8,指定了当前词与预测词之间的最大距离,最小词频:20,意味着词频少于20的词不会被考虑,迭代次数:5,定义了训练过程中数据集的遍历次数。训练过程中,模型通过学习词汇的上下文关系来优化词向量。每个词都被映射到一个100维的向量空间中,向量中的每一维都代表了某种潜在的语义属性。
第二步,将训练好后Word2Vec模型保存到指定文件中后,构建了两个关键的字典:词汇索引字典和词向量字典。词汇索引字典允许我们将每个词映射到一个唯一的整数索引,而词向量字典则将每个词映射到其对应的词向量。这些字典是通过解析Word2vec模型的输出并利用gensim的Dictionary工具生成的。
最后一步是文本向量化。这一过程涉及将分词后的文本转换为词向量的索引形式。如果词语在词汇索引字典中,则用其索引替换;如果不在,则用0表示。此外,所有文本都被填充或截断为相同的长度(本研究中设置为100),以满足后续情感分析模型训练的需要。Word2vec的使用不仅提高了模型处理自然语言的能力,而且由于其能够捕捉深层的语义关系,也能提高后续训练情感分类模型的准确性和效率。
6. 情感分析模型的训练
情感分析是网站的重要组成部分,在Word2vec词向量化的基础上,我们构建并训练了两种情感分析模型:门控循环单元(GRU)模型和长短期记忆网络(LSTM)模型。这些模型旨在从评论文本中识别出情感倾向,并对其进行分类,诸如积极、消极或中立等。GRU和LSTM模型作为深度学习中的经典模型,在自然语言处理领域具有广泛的应用。它们还是循环神经网络的两种变体,适用于处理序列数据。它们通过门控机制解决了梯度消失和梯度爆炸问题,能够有效地捕获长期依赖关系,并具备记忆长期信息的能力。在训练商品评论情感分析模型的训练任务中,由于评论具有长短不一的句子结构和变长的序列特点,GRU和LSTM模型能够有效地理解和分类评论内容,从而提高情感分析的准确性,使得模型能够更加准确地识别和理解用户的情感表达。
6.1. LSTM模型
在本研究中,我们采用了基于长短期记忆(LSTM)的循环神经网络模型,用于处理和预测文本数据中的情感标签。LSTM的核心优势在于其能够记忆长期依赖信息,这对于理解文本内容的上下文非常关键 [4] 。
我们的模型结构由几个关键层组成。首先,使用了一个嵌入层,该层将文本中的每个词转换为一个预定义维度的稠密向量,这些向量是通过预训练的Word2Vec模型获取的,并在训练过程中设置为不可训练。接着,模型中包括两个LSTM层,每个层都包含100个单元。这些层配置了dropout和recurrent_dropout策略,以防止模型过拟合。最后,通过一个全连接层,该层使用softmax激活函数输出三个类别的预测结果,对应于不同的情感标签。
模型的训练过程包括将分词后的评论数据通过嵌入层转换为向量,然后通过LSTM层处理,最终输出情感分类。训练集和测试集的划分比例为80%和20%,保证了模型能在未见过的数据上验证其泛化能力。为了优化模型的性能,我们使用Adam优化器,并将损失函数设置为类别交叉熵,这适用于多分类问题。模型训练了设定的周期数,每个周期都在训练集和测试集上进行评估,以监控训练进度和过拟合情况。
在每次训练迭代后,模型在测试集上进行性能评估,计算准确率和损失。除此之外,我们还绘并保存了训练和验证的准确率及损失值的变化曲线,以直观展示模型训练的动态过程。同时,通过混淆矩阵可视化模型在各类别上的预测效果,进一步评估模型的分类性能。
最后,我们将训练好的模型结构和权重分别保存,确保模型能够在后续使用中重新加载和使用。整个训练过程充分考虑了模型的泛化能力和实用性,使其不仅限于理论研究,也适用于实际应用场景。
6.2. GRU模型
门控循环单元(GRU)模型,是一种流行的循环神经网络(RNN)变体。与长短期记忆(LSTM)网络相比,GRU的结构较为简化,它合并了LSTM中的遗忘门和输入门为一个单一的更新门,从而简化了模型计算并减少了参数的数量,这使得GRU在某些情况下比LSTM更快地训练且更容易收敛。得到的情感分析结果有时更为优秀。
本文网站训练的GRU模型由几个关键组件组成。首先是一个嵌入层,它负责将词语映射到一个固定大小的密集向量空间。这些向量通过预训练的Word2Vec模型生成,并在本研究中被设置为不可训练,以保持词嵌入的稳定性。紧接着,模型包括两个GRU层,每层设有100个神经元,在该模型同样配置了dropout和recurrent_dropout,以减少模型在训练过程中的过拟合风险。最后是一个全连接层,采用softmax激活函数,用于输出三个预测类别,分别对应不同的情绪状态 [5] 。
在训练阶段,模型首先通过嵌入层处理输入的词向量序列,然后经过两个GRU层进行特征提取和序列建模。训练集和测试集的数据是通过分割整个数据集以80:20的比例得到的,确保了模型能在未见数据上进行有效的性能验证。本文使用Adam优化器进行训练,选择分类交叉熵作为损失函数,并在30个训练周期内追踪模型的准确率和损失值。
训练完成后,模型在测试集上进行性能评估,其准确率和损失值通过绘制的曲线图直观显示。此外,我们还绘制保存了了混淆矩阵来分析模型在各个类别上的分类效果,并计算了精确度、召回率和F1分数等统计指标,以全面评估模型的性能。最后,模型的结构和权重被保存到文件中,以便于未来的使用和进一步研究。
GRU模型由于其结构上的简化,在多个方面显示出了优越性,包括更快的训练速度和更好的泛化能力,使其成为处理复杂序列数据的有效工具。
7. 可视化训练与展示
7.1. 可视化训练
为了更有效方便的训练最优模型,网站具有可视化训练页面如图1。在页面上并允许动态调整Word2vec、LSTM、GRU模型训练的关键超参数,例如词向量维度、窗口大小、迭代次数(epoch)、批量大小(batch-size)以及神经网络的层数和隐藏单元数目等。此外,在此页面还可对搜集整理好并存入数据库中语料库进行管理。通过直观的操作界面如图2所示,用户可以执行对语料库的增删改查操作,这些操作的实时性和便利性是通过Django实现前后端交互的结果。整个可视化训练模块考虑了用户交互的直观性和操作的便捷性,以及模型训练过程的透明度和可监控性,大大提高了实验的效率和效果。
7.2. 可视化展示
数据库中存入了采集的300多个商品以及每个商品对应的前150条评论,用户可选择平台首页任意商品或者使用搜索功能查询想要商品进行分析,如图3,并且通过点击对应商品的开始分析按钮进入分析结果页面。
pyecharts是一款基于Python的强大可视化库,它支持丰富的图表类型并拥有灵活的配置方式,使得用户可以根据具体需求生成各式各样的图表。pyecharts库的主要功能包括数据绑定、样式配置、图表组合、图表嵌入和动态更新等,满足了网站中商品数据分析结果动态化展示的需求。
对于用户选择的商品所有评论数据进行情感分析和处理后,利用pyecharts绘制了包括词云图、评论类型占比图、用户身份图、评论柱状分析图在内的多种图形,从而形成了综合性的分析结果页面。该页面不仅直观展示了商品在电商平台上的好评率、好评数、中评数、差评数以及所属平台,还能让用户查看所选商品的在数据库中存储的所有评论 [6] 。

Figure 1. Word2Vec visual training
图1. Word2Vec可视化训练
为了提供更多的商品分析页面交互功能,我们提供了GRU和LSTM两种经过训练的情感分析模型供用户选择。用户通过页面上的下拉框选择了合适的情感分析模型后,可以点击“开始分析”按钮,系统将展示出相应的可视化分析结果。这些结果通过pyechart绘制的图表直观展现,如图4和图5这些可视化结果将有效协助用户对商品评论数据进行快速、准确的情感分析,支持用户做出更加明智的决策。

Figure 4. All comments on the selected product
图4. 所选商品所有评论
8. 结论
结合Django框架和pyechart等相关技术,本项目成功地开发了一个用户友好的评论情感分析网站。网站模型初始模型训练所需的语料库利用网络爬虫技术收集并打上情感标签,评论数据经过清洗和预处理后使用Word2Vec进行词向量化处理,使得文本数据转化为机器可处理的格式,为后续GRU和LSTM两种深度学习模型的训练提供数据支撑。网站设计考虑到了用户交互的直观性和便捷性,使用户可以轻松地进行商品搜索、评论数据的可视化分析以及模型的自定义训练和应用。这不仅增强了网站的实用性,也提高了用户的参与度和满意度。本网站的开发为电商平台提供了重要的参考价值。同时为消费者提供真实的商品评价可视化分析,帮助他们做出更明智的购买决策。
考虑到AI和机器学习领域的快速发展,未来可进一步优化情感分析模型,并扩展网站功能,如加入更多的语言支持和更复杂多样的数据可视化分析,以适应市场的更多需求。
基金项目
景德镇陶瓷大学大学生创新创业项目资助(编号:202310408018);景德镇市科技计划项目资助(批准号:20212GYZD009-05)。