介绍
您知道性骚扰普遍性的不可避免事实是由于低报告率吗?如果受害者不报告他们经历的骚扰,那么当局如何指导人们避免受到骚扰,罪犯的行为如何改变?分类和定位各种形式的性骚扰案例研究有助于受害者以匿名方式表达自己的经历,并有助于分类受害者经历的各种类型的性骚扰,以便快速评估分类以进行证言文件的归档,并且这也有助于通过考虑已经提交的论坛的分析来提供安全预防措施。
这些安全预防措施通过提供已在该地区提交的大多数类型的性骚扰的普遍位置和罪犯的行为来为个人提供头绪。从上述预测中,个人将受益匪浅,因为它们提供见解并创造有关事件情况的意识。
学习目标
- 预测社会上各种骚扰的多标签分类
- 在数据集上使用自然语言处理技术
- 迭代传统的机器学习算法
- 实施卷积神经网络
- 本博客讨论了应用这些方法来解决与骚扰相关的问题
本文是数据科学博客马拉松的一部分。
业务问题
这里将受害者的故事分成三种性骚扰类型,即我们将其转换为多标签分类,因为受害者可能同时面临一种或多种性骚扰。
业务限制
由于我的案例研究是多标签分类,因此误分类不再是一个严格的对错。包含实际类别子集的预测应该被视为比不包含任何类别的预测更好,即正确预测三个标签中的两个比完全没有预测更好。我们没有任何严格的延迟问题。解释性非常重要,因为它有助于找到为什么将故事分类为一种骚扰类型。
数据集描述
数据收集自safecity在线论坛和WIN World Survey(WWS)市场研究和民意调查调查,用于收集性骚扰流行国家的数据。数据集包含两个特征。特征1-包含受害者的故事(说明),特征2包含事件发生的地理位置(位置)。
我们的类标签是多标签分类,其中包含受害者经历的三种性骚扰类型(评论、注视和触摸)。
性能度量
对于多标签分类,实例的预测是一组标签,因此,我们的预测可以完全正确、部分正确或完全不正确。这使得多标签分类器的评估比单标签分类器的评估更具挑战性。但是,对于部分正确性的评估,我们可以使用以下指标进行评估。
准确率-这里,一个实例的准确率被计算为预测正确标签与标签的总数(预测和实际)的比例。可以通过所有实例的平均值来获得整体准确性。
这些指标可以在各个类标签上计算,然后平均所有类别。这称为宏平均。或者,我们可以在所有实例和所有类标签上全局计算这些指标。这称为微平均。
我们使用宏F1分数和微F1分数作为多标签分类的指标。
汉明损失用作多标签分类的度量,该度量计算不正确预测的标签与标签的总数的比例。
预处理
为了获得更好的见解,我们进行数据清理(例如删除符号、标点符号、特殊字符等)。当涉及到文本数据时,清理或预处理与模型构建一样重要。
以下是我们需要执行的预处理步骤:
- 小写
- 删除数字
- 删除标点符号
- 删除特殊字符
- 删除HTML标记
- 删除停用词
- 扩展缩写
探索性数据分析
确保数据已准备好进行建模工作非常重要。探索性数据分析(EDA)确保数据为机器学习做好准备。实际上,EDA确保数据更易用。没有适当的EDA,机器学习工作会出现精度问题,很多时候算法无法工作。EDA帮助我们了解数据并获得更好的见解。所以我们要进行EDA。
检查数据集中的空值
df.isnull().sum()
我们在数据框中添加了一个额外的特征,该特征计算受害者故事中的单词数。通过考虑我们数据框中的单词计数列绘制分布图。
- 从上图我们可以推断出,大多数受害者喜欢分享他们的经历,单词数不超过100个。
地理图
从我们的数据框中考虑Location列,然后计算受害者在特定地区遭受骚扰的次数。为了绘制地理图,我们构造了一个国家(经历性骚扰的地区)和从该特定地区报告的受害者数量的数据框。
- 从上图我们可以推断出,墨西哥地区(亮黄色区域)的受害者人数最多。
条形图
条形图用于检查每个类别中受害者故事的数量。
我们创建一个“标签”列:
- 当一个人只遭受评论骚扰时,我们标记为1
- 当一个人只遭受注视骚扰时,我们标记为2
- 当一个人只遭受猥亵骚扰时,我们标记为3
- 当一个人遭受评论和注视骚扰时,我们标记为4
- 当一个人遭受注视和猥亵骚扰时,我们标记为5
- 当一个人遭受评论和猥亵骚扰时,我们标记为6
- 当一个人没有遭受任何骚扰时,我们标记为7
- 当一个人同时遭受三种类型的骚扰时,我们标记为8
从上面的条形图中,我们可以观察到墨西哥女性遭受了最多的性骚扰。我们还需要清楚地了解在每个类别中经常出现的单词。以下是每个类别中最常见的单字、双字和三字词的条形图。
评论类别
注视类别
触摸类别
t-SNE
对受害者的故事进行向量化,以便进行维度缩减,以便易于可视化骚扰类别。
由于我们知道t-SNE在本质上是随机的,因此对于多次运行,我们会得到不同的可视化结果,因此我运行了多个困惑度和迭代次数,以获得上面的图形,这个图形清楚地表明一个类别可以从其他类别中分离出来。
词云
我们还实现了词云以可视化每个类别中频繁数据的情况。
评论类别
- 从上面可以推断出,对于评论性骚扰类型,大多数犯罪者都是男孩,这种事件通常发生在学院、车站、公交车、学校等地方。
注视类别
- 从上面可以推断出,对于注视性骚扰类型,大多数犯罪者都是男性,这种事件通常发生在街上,而受害者在行走、经过或去学院的路上。
触摸类别
- 从上面可以推断出,对于触摸性骚扰类型,大多数犯罪者都是男人,这种事件通常发生在公共场所,如公交车、车站,当人们拥挤时。
分散文本
使用分散文本可视化唯一术语及其频率。分散文本图表适用于分类数据作为二进制分类器,因此我们正在为每种骚扰类型创建分隔列,其具有分类值。
评论类别的分散文本图表
从上图可以推断出顶部评论单词和非评论单词。图表的右上方是最常共享的术语,而底部左侧则是最不常见的最常共享的术语。
盯梢类别的散点文本图
从上图中我们可以推断出最顶部的盯梢词汇和非盯梢词汇。图表的右上角是最常见的术语,左下角是最常见的术语中最不频繁的。
摸索类别的散点文本图
从上图中我们可以推断出最顶部的摸索词汇和非摸索词汇。图表的右上角是最常见的术语,左下角是最常见的术语中最不频繁的。
机器学习模型
为了训练模型,我们进行了基本的训练测试拆分并尝试了各种模型。
我们使用 BOW、TFIDF、GLOVE 300 维度执行了各种机器学习模型,并观察了各自指标的以下值。
从上面可以看出,使用 BOW 向量化器的 Linear SVC 的高宏观 F1 分数为 0.63,而且 BOW 和 TFIDF 向量化器在每个指标上都优于 GLOVE 向量化器。
我们还进行了深度学习模型的实现。
深度学习模型
卷积神经网络模型
我们通过将 Glove 300 维度传递到嵌入层中来构建卷积神经网络。
由于我们正在处理多标签分类,因此我们将最后一层传递到 sigmoid 激活函数中,并实现二元交叉熵损失函数。
CNN-LSTM 模型
我们还通过将 Glove 300 维度传递到嵌入层中,并添加 LSTM 层来构建卷积神经网络。
两个深度学习模型的总结
从上述指标中选择 CNN 作为最佳模型。
模型的部署
我使用 Flask 创建了 Web 应用程序并部署了我的最佳模型。以下是我部署的模型运行实例的视频。
结论
总之,本篇博客揭示了性骚扰这一紧迫问题,并强调了低报告发生率作为其普遍性的一个贡献因素。它强调了受害者报告其经历的重要性,以使当局能够指导人们并推动犯罪者行为的变化。
本博客还讨论了自然语言处理技术、传统机器学习算法和卷积神经网络的实现,其中 CNN 模型在 LSTM 层的增强下产生了更好的结果。通过这项工作,旨在赋予个人,提供指导,并促进社会变革以应对普遍存在的性骚扰问题。
主要收获
- CNN 模型在预测骚扰形式的多标签分类方面优于传统机器学习算法。
- CNN 模型中使用的 LSTM 层在性能指标上产生了显着的改进。
- 本文强调了 CNN 模型的优越性以及 LSTM 层对其性能的影响。
未来的工作
- 我们需要收集更多的数据,以帮助我们提高测试数据集的性能指标的值。
- 我们可以尝试使用BERT嵌入和FastText词嵌入。
- 我们可以通过改变架构来开发我们自定义的模型,以获得更好的性能指标值。
您可以在这里找到我的完整代码。
常见问题
参考资料
- https://aclanthology.org/D18-1303.pdf
- https://stackoverflow.com/questions/19790188/expanding-english-language-contractions-in-python/47091490#47091490
- https://www.kdnuggets.com/2020/09/geographical-plots-python.html
- https://analyticsindiamag.com/visualizing-sentiment-analysis-reports-using-scattertext-nlp-tool/
本文中展示的媒体不归Analytics Vidhya所有,作者自行决定使用。