1. 引言
随着互联网的快速发展和普及,大量由用户生成的内容被广泛发布在网络平台上,如电影评论、产品评价以及社交媒体帖子。这些内容不仅承载着用户的情感表达,还蕴含着有价值的信息,对企业决策、产品改进和用户体验优化等方面具有重要影响。情感分析作为自然语言处理(NLP)领域的重要分支,致力于从文本中提取情感信息并进行分类。
近年来,情感分析技术在电子商务、娱乐、公共服务等多个行业得到了广泛应用。例如,在电影行业,通过分析影评平台上的用户评论,电影制作公司可以深入了解观众的情感反馈,进而优化影片的制作和营销策略[1]。然而,尽管情感分析技术在许多领域取得了显著进展,依然面临多语言文本处理、数据质量控制、模型泛化能力等方面的挑战。翻译对文本情感的影响是一个未被充分研究的领域,而理解这种影响对多语言情感分析至关重要[2]。
本研究旨在构建一个完整的情感分析系统,以IMDb影评数据集为基础,涵盖从数据收集、文本预处理到模型训练和性能评估的整个流程。研究重点是比较朴素贝叶斯和支持向量机(SVM)两种经典机器学习模型在情感分类任务中的表现,并探索翻译对情感分析效果的影响,为多语言情感分析提供新的思路和实践经验。
2. 文献综述
情感分析中使用的分类器可大致分为机器学习、深度学习与集成学习3类。机器学习分类器使用数学模型预测情感;深度学习分类器利用人工神经网络进行情感预测;集成学习方法结合多个分类器实现情感分析[3]。分类器的选择取决于情感分析任务的具体要求与用例。
机器学习方法首先通过预处理与删除任何无关信息的方式标准化文本数据;然后应用TF-IDF、N-grams 等特征提取技术将文本表示为可输入机器学习分类器的数字特征。机器学习情感分析方法常用的分类器包括支持向量机、朴素贝叶斯、逻辑回归与决策树等(见图1)。
早期研究多集中于验证基础机器学习算法在情感分析任务上的可行性。例如,Athindran等[4]利用朴素贝叶斯对某社交媒体平台的客户评论进行分析,取得了77%的准确率,证明了该方法在特定场景下的有效性。然而,此类研究通常基于规模有限、领域特定的数据集(如电商或社交媒体评论),其结论的泛化能力存在局限。Vanaja与Belwal [5]在亚马逊产品评论上对比了朴素贝叶斯与支持向量机(SVM),发现前者准确率(90.42%)高于后者(83.42%)。这一矛盾性结果提示,模型性能高度依赖于数据特征、预处理流程及任务定义,而非算法本身存在绝对的优劣。Iqbal等人的研究[6]进一步表明,通过精心设计特征组合(如结合N-gram),最大熵模型在IMDb等标准数据集上能达到88%以上的准确率。这些研究虽然展示了传统机器学习方法的潜力,但普遍存在对上下文语义理解不足、对跨语言或翻译文本处理研究缺失等问题。
因此,本研究选取大规模的IMDb影评数据集,系统比较NB与SVM模型,并着重探讨翻译对模型性能的影响,旨在弥补现有研究在跨语言情感分析泛化性探讨方面的不足。
Figure 1. The process of sentiment analysis using machine learning methods
图1. 机器学习方法情感分析过程
3. 相关技术
3.1. IMDb影评数据集
本研究选择IMDb影评数据集,包含大量标注为“正面”或“负面”的影评。数据集包括评论与情感两列,评论融合了故事情节与个人观点,其语言复杂性增加了情感分析的难度。这些数据以文本形式存储,标签为二分类,有利于构建情感分类模型。
3.2. 朴素贝叶斯(NB)
朴素贝叶斯是基于贝叶斯定理的分类算法,其假设特征之间相互独立,使得计算条件概率更加简化,特别适用于文本分类等领域,在处理大规模数据集与高维特征空间时具有高效性[7]。朴素贝叶斯分类模型是一种常见的分类模型,其基本结构如图2所示,其中,C表示分类类别,x表示各特征属性。设样本集合
,样本的特征属性集合X可设为
,类别集合
,可得到
由于P(X)为固定值,因此,在比较后检验概率的大小时,只需考虑分子的大小即可:
3.3. 支持向量机(SVM)
SVM是有监督学习算法的一种,可以用来解决许多关键问题,比如模式识别领域中的数据分类问题,SVM要解决的问题一般用一个经典的二分类问题来描述[8]。其中,支持向量机通过寻找最优超平面来实现数据点的二分类,这个超平面被设计为最大化两个类别的支持向量到超平面的距离,从而提高模型的泛化能力。支持向量机在处理线性可分问题时表现出色,同时也能通过核函数处理非线性问题。
4. 操作步骤
4.1. 数据收集
进入IMDb官网下载数据集,共50,000条影评,其中25,000作为训练集,25,000作为测试集,并使用Google Translate将影评翻译为中文。
4.2. 文本预处理
文本预处理是自然语言处理(NPL)中的关键步骤,对于情感分析而言尤为重要。
4.2.1. 数据清洗
英文文本
首先查看原始文本(见图2):
Figure 2. Original English text
图2. 原始文本
URL是通常在文本分析中不需要的内容,尤其是当文本关注的是内容和情感时,链接并不提供任何语义信息,因此需要去除文本中的URL。HTML标签通常用于网页的布局,在文本分析中往往也没有实质性的内容。
通过正则表达式去除了文本中的HTML标签。<.*?>:匹配所有以<开头,>结尾的内容。http\S+:匹配以http开头的URL,S+表示匹配所有非空白字符。|是正则表达式中的“或”操作符,表示匹配http或www或https开头的字符串。https\S+和www\S+:匹配以https或www开头的URL。清理掉了无关的超链接信息,减少了文本中的杂项内容。成功地去掉了文本中的<br/>等标签,使得文本内容更加简洁(见图3)。
Figure 3. Removal of URLs and HTML tags
图3. 去除URL和HTML
Figure 4. Removal of punctuation and emoticons
图4. 去除标点符号
标点符号在一些任务中可能没有语义上的帮助,尤其是当任务关注的是词汇或情感时。表情符号通常无法被编码,会引入错误,所以需要去除标点符号和表情符号。使用正则表达式来匹配并去除标点符号,表情符号。\w:匹配字母、数字和下划线。\s:匹配空格、换行符等空白字符。[,.!?]:保留常见的标点符号,避免删除必要的标点。文本变得更加简洁,去掉了表情符号、句号、逗号、问号等,这对于后续的模型训练会有帮助(见图4)。
为了统一文本的格式,需要将所有字符转换为小写。这样,大小写不一致的词汇会被认为是同一个词。使用Python字符串的lower()方法将文本转换为小写。\s+:匹配一个或多个空白字符。' ':将匹配到的多个空白字符替换为一个空格。strip():去除文本两端的空白字符。通过转换为小写,消除了大小写带来的不一致性,为后续的分析提供了更加统一的文本数据(见图5)。
Figure 5. Converted to lowercase
图5. 转换为小写
文本中的多余空格会影响文本的处理效果,因此需要去除。使用正则表达式将多个连续空格替换为单个空格,并去掉两端的空格。去除多余空格后,文本格式变得更加规整,不再包含多个连续的空格(见图6)。
Figure 6. Removal of extra spaces
图6. 去除多余空格
分词是文本处理中的重要步骤。它将文本切分为一个个单独的词,为后续的分析、特征提取或建模做好准备。需要使用nltk库中的word_tokenize进行分词(见图7)。
Figure 7. Word segmentation
图7. 分词
停用词是指那些对文本分析没有实际帮助的词,如“the”、“is”、“in”等。去除停用词有助于减少分析的噪音,提高处理效率。使用nltk提供的停用词列表来进行过滤(见图8)。
Figure 8. Removal of stopwords
图8. 去除停用词
最后,将处理后的词汇拼接回文本(见图9):
Figure 9. Text concatenation
图9. 拼接文本
通过上述步骤,对原始文本进行了完整的清洗流程,包括去除HTML标签、URL、表情符号、标点符号,统一大小写,去除多余空格,并最终分词和去除停用词。每一步都确保了数据的清洁和统一,为后续的文本分析或机器学习任务做好了准备。
用Google Translation将文本翻译为中文,进行数据清洗中文文本(见图10):
Figure 10. Original Chinese text
图10. 中文原始文本
去除特殊字符和表情符号(见图11):
Figure 11. Removal of special characters and emoticons
图11. 去除特殊字符和表情符号
去除链接(见图12):
Figure 12. Removal of links
图12. 去除链接
中文分词指的是将一个汉字序列切分成一个个单独的词,分词的过程实际上就是将连续、完整的汉字序列,按照一定的方法,组合成词序列的过程[9]。中文分词的实现,一般均是在程序中直接调用某个成品分词系统的接口函数,jieba目前被认为是最好用的基于Python实现的分词系统,很容易就可以实现分词调用和词性标注,可以一定程度上实现的未登录词识别,由于中文缺乏空格分隔符,需依赖分词算法。还能通过自建词库扩展实现新词的登录。
使用jieba.lcut()进行分词,以便对其进行分析。输出为列表形式,每个元素是一个分词单元(见图13)。
Figure 13. Word segmentation
图13. 中文分词
删除语义贡献较小的常用词,如“的”“了”“是”,以突出文本中的关键信息。这样可以降低冗余信息对分析的干扰,提升分析结果的有效性。使用停用词表(stopword.txt),里面包含一组需删除的高频无意义词。使用set函数用于快速查询停用词(见图14)。
Figure 14. Remove stop words
图14. 删除停用词
4.2.2. 特征提取
英文
采用TF-IDF向量化影评文本,生成稀疏特征矩阵供模型训练。TF-IDF是一种用于评估文本中单词重要性的统计方法。它可以衡量一个词在某个文档中出现的频率,同时考虑到这个词在所有文档中的分布情况,从而帮助找到对文档主题有代表性的关键词[10]。
首先使用TfidfVectorizer中的get_feature_names_out方法查看所有的特征词(见图15):
Figure 15. View feature words
图15. 查看特征词
然后使用TfidfVectorizer的fit_transform方法生成稀疏矩阵元素,将稀疏矩阵元素转化为密集数组,方便查看特征向量(见图16)。
Figure 16. Convert the sparse matrix to a dense matrix
图16. 将稀疏矩阵转换为稠密矩阵
发现有很多为0的TF-IDF值,使用nonzero()函数去除0值,打印所有非零特征词的TF-IDF值(见图17)。
Figure 17. TF-IDF of non-zero feature words
图17. 非零特征词的TF-IDF
中文
使用词袋模型进行特征提取,将文本视为一个单词袋,忽略单词的顺序和语法结构,仅关注单词的出现频率。每个文本被表示为一个固定大小的向量,其中每个位置对应一个特定单词的出现次数。
使用DataFrame将词频矩阵可视化(见图18)。
Figure 18. Word frequency martix
图18. 词频矩阵
4.3. 模型训练与测试
4.3.1. 朴素贝叶斯(NB)模型训练
训练一个朴素贝叶斯分类器来对文本进行分类(见图19)。朴素贝叶斯通过计算先验概率和条件概率,推断文本类别。假设词汇独立性,其分类效果依赖于特征质量。MultinomialNB()是sklearn.naive_bayes模块的一个类,它实现了多项式朴素贝叶斯分类器,通常用于文本分类任务。该分类器假设特征是独立的,并且服从多项式分布。
Figure 19. Naive bayes training
图19. 朴素贝叶斯训练
fit()方法用于训练SVM模型。它接收训练数据的特征矩阵和训练数据的标签。通过寻找最优的超平面来拟合训练数据,并确定每个类别的决策边界。模型学习数据中的模式,用于对新的数据进行预测。
predict()方法用于对新的输入数据进行分类。该方法返回一个类别标签的预测结果列表。目标是使用训练好的模型对测试数据进行预测,并根据这些预测与真实标签进行比较,以评估模型的性能。
accuracy_score()是一个评估模型准确度的函数,来自sklearn.metrics模块。它计算模型预测结果与实际标签之间的匹配程度,并返回一个准确率值,表示分类器的性能。准确率是分类正确的样本占总样本数的比例。
4.3.2. 支持向量机(SVM)模型训练
训练一个SVM模型,自动学习如何将不同类别分开。它通过找到决策边界,将数据点分类。SVM通过寻找最大间隔超平面分类数据,适合处理高维稀疏数据。
使用SVM进行训练并预测代码及结果(见图20)。
Figure 20. Support vectot machine
图20. 支持向量机训练
5. 实验与结果
5.1. 实验结果
5.1.1. 朴素贝叶斯与支持向量机
模型 |
数据集 |
准确率 (Accuracy) |
召回率–正类 (Recall-Positive) |
召回率–负类 (Recall-Negative) |
F1分数 (F1-Score) |
朴素贝叶斯 |
英文(EN) |
84.37% |
0.8721 |
0.8152 |
0.8612 |
支持向量机 |
英文(EN) |
86.17% |
0.8450 |
0.8785 |
0.8413 |
朴素贝叶斯 |
中文(ZH) |
82.37% |
0.8510 |
0.7965 |
0.8320 |
支持向量机 |
中文(ZH) |
83.16% |
0.8201 |
0.8432 |
0.8189 |
根据获得数据可见,支持向量机在准确率上略高于朴素贝叶斯,表明在整体分类任务中,SVM对数据的分类效果稍好,能够更好地预测情感标签。召回率反映了模型对正类(例如积极情感或消极情感)的识别能力,即在所有实际为正类的样本中,模型正确识别的比例。朴素贝叶斯略好于SVM,表明其在识别正类情感方面更出色。F1分数综合考虑了模型的精确度和召回率,朴素贝叶斯在F1分数上表现略优于支持向量机,表明其在保持较高召回率的同时,也能够相对保持较高的精确度,从而在综合性能上略胜一筹。
因此,如果情感类别不平衡或者需要更高的正类识别能力,朴素贝叶斯可能会更有优势;而如果任务偏向于整体准确性,支持向量机则可能表现更好。
5.2.2. 翻译对分类性能的影响
总体来看,翻译后的中文数据比原始英文数据的分类准确率低。朴素贝叶斯和支持向量机的准确率都在中文翻译版本上有所下降,说明翻译过程可能引入了额外的噪声,导致模型在理解和分类情感时产生了一些偏差。
翻译会显著改变文本所携带的感情。原文的正面或负面情感在翻译后经常变得中性,在机器翻译中,这种现象更为明显。支持向量机在翻译后的中文数据中表现相对更好。支持向量机可能对语义信息和特征更敏感,因此在翻译过程中丢失的部分信息影响较小,而朴素贝叶斯的表现可能更依赖于原始数据中的词频和统计模式,翻译可能更容易影响其分类效果。同时,翻译还可能影响模型的泛化能力。
6. 结论与未来工作
本研究通过比较朴素贝叶斯和支持向量机(SVM)在情感分类任务中的表现,揭示了两种经典机器学习模型的优劣势。结果表明,SVM在整体准确率上优于朴素贝叶斯,能够更好地进行情感标签预测。然而,朴素贝叶斯在召回率和F1分数上略优,尤其在情感类别不平衡的情况下,能够较好地识别正类情感。因此,对于需要高召回率或更好正类识别的任务,朴素贝叶斯可能更为适用;而当任务侧重于整体分类准确性时,支持向量机则显示出更为优越的表现。
在多语言情感分析的实验中,翻译对分类性能的影响不容忽视。翻译的质量是影响情感一致性的关键因素。常见问题包括情感词的缺失和替换;翻译不准确导致情感发生变化;翻译文本中否定表达的位置或形式被误解。SVM在翻译后的中文数据中表现相对更好,可能由于其对语义信息和特征的敏感性较高,而朴素贝叶斯则更依赖于原始数据的词频和统计模式,受到翻译影响较大。这一发现强调了翻译质量和语义差异对情感分析模型性能的重要性。
未来的工作可以着重于进一步优化模型在多语言环境下的适应性。首先,针对翻译带来的信息损失,可以采用更精确的情感词典对齐或训练针对不同语言的情感分析模型。其次,探索深度学习等更复杂模型在多语言情感分析中的表现,可能有助于提高翻译后数据的处理能力。此外,考虑到情感分析中的语言和文化差异,未来的研究还可以从跨文化情感分析的角度出发,进一步探索如何减轻翻译对模型泛化能力的负面影响,从而提升情感分析系统的准确性。