如何:
我们首先使用请求模块将AFINN数据添加到字典中。 此外,我们使用了请求模块,除了添加了相关的s语外,还添加了武器/毒品。 为此,我们在RapGenius上请求了这些页面,并创建了一种将单词添加到具有相应情感分数的字典中的方法。 对于情感评分,我们将从RapGenius抓取的歌词处理为一个字符串,确保删除特殊字符,并将歌词字符串转换为小写形式,以确保它们正确地输入到我们的攻击词典中。 为了分析情绪,我们在空格处分割字符串以创建单词列表,并使用for循环遍历列表,检查每个单词是否在词典中。 如果是,则将其键控值加到一个总和上,直到列表通过为止。 然后,将最终值除以列表的长度,创建情感与总单词的比率,以创建情感评分。 在更大范围内,我们通过计算专辑中歌曲的平均情感来确定侵略性专辑,并通过计算唱片的平均情感来确定艺术家的侵略性。 为了计算艺术家的侵略性,我们创建了一个包含整个唱片目录歌词的字符串,并在其上运行了情感分析算法。 之后,我们将其添加到字典中,该字典将用于通知我们创建的网络。
长期定位:为了将来的研究目的(例如:如果您想分析某个艺术家的时间变化),使用更好的数据结构将使您在访问特定艺术家的专辑,歌曲及其攻击得分时具有更大的灵活性。 出于这些目的,创建一个以专辑为键,其值作为另一个字典的字典,该字典将歌曲作为键映射到其情感分数值,将是一种更好的信息存储方法。 这样,您可以使用相同的结构访问歌曲的情感,专辑的情感和艺术家的情感。 用于创建此数据结构的代码在git上提供,但是由于我们的分析范围(就专辑或歌曲而言,不是暂时的或特定的),因此使用大字符串进行情感分析。
我们发现,大多数说唱歌手拥有略有攻击性的歌词,在我们的情感评分中,平均攻击度约为0到-0.1。
概述:
我们决定使用网络以视觉方式展示我们的发现。 我们的网络由说唱歌手为节点,协作为链接。 链接按协作次数加权,因此如果艺术家进行了多次协作,则艺术家之间的联系会更牢固。 我们还使用Louvain方法将该网络分类为社区,以更好地了解该网络。 为了可视化侵略性,我们使用情感评分来确定节点的大小,以便以较大的节点代表具有较高侵略性的艺术家。
设定:
为了创建该网络,我们使用嵌套循环首先遍历列表中的每个说唱歌手,然后依次浏览该说唱歌手的每个协作者。 一旦我们在嵌套循环中隔离了一个协作者,便能够使用add_edge()函数将其添加到网络中。
此时,我们还增加了边缘的权重并设置了节点大小。 对于权重,我们为每个艺术家创建了一个合作者字典,以跟踪每个说唱歌手的协作次数,然后将权重设置为字典中的协作次数。 对于节点的大小,我们使用在另一个函数中计算出的攻击得分来确定大小。
但是,我们遇到的一个问题是网络太忙而看不到任何有意义的模式。
为了使尺寸保持在可管理的范围内,我们仅包括从Wikipedia页面上为嘻哈音乐人抓取的音乐人,即使其中许多人也与该列表中未包含的音乐人合作。
最后,我们尝试通过将其分类为社区来使网络更具可读性。 为此,我们使用了community.best_partition(),它基于Louvain方法创建了社区。
此外,我们创建了一个协作网络,其节点大小指示艺术家各自的攻击得分。
攻击与协作相关联,因为社区是根据网络中的攻击趋势创建的。 我们意识到进行了全面的分析,或者根据合作关系的因果关系使用我们的分析尚无定论,因为必须通过时间手段分析因果关系。 为了获得这些见识,必须进行进一步的研究,但是创建协作网络是分析说唱社区整体的重要基础。 在视觉上,我们可以看到在与攻击有关的节点大小的协作网络中,攻击大小在颜色社区中的运行类似,这表明在某种程度上,攻击可以是社区中普遍存在的主题。
攻击性词词典:
尽管我们的攻击性单词词典非常全面,但我们的自然语言处理方式并未考虑上下文,这意味着将攻击性单词用于自我的悲伤单词(涉及自我厌恶,悲伤,自杀意念的歌曲)也将被视为具有攻击性。 尽管这些可以说是侵略性的,但这种侵略与黑帮说唱生活方式的主题不符。 例如,爱情歌曲《德雷克的马文的房间》(Marvin’s Room by Drake)是使用我们的情感分析得出的负面得分。 为了改善这一点,这些歌词的未来情感分析可以使用机器学习来进一步说明上下文。
时间变化:
未来的研究可能会考虑艺术家侵略性随时间的变化。 这样做可以进一步了解侵略性随时间变化的方式,从而可以更直观地了解与艺术家合作之前和之后的情况。
网络创建:
我们考虑了太多的艺术家,以至于很难形象化网络。 将来,基于说唱中较小的子类型制作单独的网络可能会更好。
尽管我们的数据表明了侵略与社区之间的相关性,但侵略的因果关系在很大程度上尚无定论。 但是,在对方法论进行分析后,可以做出许多改进以更好地理解数据集,主要是:
- 数据结构的改善
- 分析工作效率更高
- 对艺术家数据的时间理解
- 减少数据中的噪音
- 在情感分析中实施上下文机器学习