全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 python论坛
1982 1
2017-03-17
原作者:Neal Caren - University of North Carolina, Chapel Hill


报纸对于男性和女性的描述会有差别吗?快速回答这一问题的一个方式就是直接对比描述男女的语句中的词汇,本节将提供一个使用Python进行这种分析的案例。


我们选取了纽约时报 2013.02.27-2013.03.06 一周内的新闻,从 LexisNexis 数据库下载了除了修正和讣告外可获得的全部文章,总计 1379 篇,平均每天的新闻量在 200 篇左右。


在分析之前,我们利用 Python 对数据进行了如下预处理:移除元数据、将每篇文章的文本存储在单独的文件中,再将所有的文件存储在“ articles ”文件夹中。虽然这种处理方式不是最有效的,但是文本数据常以这种形式出现,所以有必要进行这一操作以便于后续处理方法的讲解。


首先要加载几个模块,而需要下载的工具包只有文本数据处理和分析的强大套件 NLTK 。在本例中,只使用 NLTK 函数将文本分为句子,此外,glob 是检索字典内容的重要模块;string.punctuation 则是一个包含所有ASCII标点符号的字符串,也就是常见的  !"#$%&'()*+,-/:;<=>?@[\]^_{|}~. 。



复制代码

本例分析的核心目的是:识别某段言论谈论的是男性、女性、男性和女性或者都不是。

作为初始判断,如果一句话出现类似“he”、“dad”或者“Mr.”的词汇,就认为该语句描述的是男性;如果一句话出现类似“she”、“mother”或者“Ms.”的词汇,就认为该语句描述的是女性。

这种分类方式虽然不是最精确的,但是出于文本分析的特性,用该方法进行分类十分有效。为了使这些基础词汇的选定更具科学性,我们参考了 Danielle Sucher 在其浏览器插件 Jailbreak the Patriarchy 提供的词汇列表。

复制代码

可以看到,在这里将分类词汇保存为集合(set)而不是列表,这是因为我们后续需要查看句子中的词汇是否与这些分类词汇重叠,Python会返回集合的交集。

接着我构造了下面的函数,用于定义语句性别分类。这个函数的输入为句子词汇的集合,它能够根据句子中目标词汇出现的频数初步判断句子的类别。


复制代码

本例有意忽略了对专有名词的判断,特别是人名(很难讲 'Boehner' 就一定是一个男性的名字),所以需要一个识别出这类词的方式,以把它们提取出来。采用的方法是:记录一个词汇首字母大写和非大写的次数。当我们拥有的文本数据足够多,且不考虑句子首字母一定为大写的情况时,以这种方法来识别专有名词的效果还是相当不错的。

复制代码

可以看到,上述函数利用了 .get( ) 来检索专有名词字典存储的值,这是为了避免当字典里不存在相应键值时返回错误信息。

  • proper_nouns[word_lower].get(case,0) :当大小写同时存在时,返回 word_lower 的值,否则,返回0。
  • 只有当词汇不存在时,except 语句才会被执行。

本例会同时使用两个计数器跟踪记录每句话的每个词汇,这一函数没有任何输出,但是改变了word_freq、 word_counter 和 sentence_counter 字典。

复制代码

接下来,我们开始准备对感兴趣的目标词汇进行计数统计。我们需要构建 increment_gender 函数中对应的字典,它们其中的一些可能在接下来的分析中并不重要(例如 word_counter 和 sentence_counter ),本例也一起将它们构造出来,并把其中的元素初始化为0,以方便时刻回忆起它们的具体意义。

复制代码

在做分析之前,将所有要用到的文本语料以 txt 格式存在了一个名为 articles 的文件夹中,为了导入数据,我们需要先获得它们的文件名。

复制代码

我们的基本思路为:

  • 逐个导入文件,拆分成句,然后对每一个句子进行分析。
  • 具体到每一个句子上,首先处理的流程会包括分词和去掉标点符号。
  • 在此基础上,将所有非句首的单词进行大小写检查,确认它是否是一个专属名词。接着,我们开始判断这个句子是否在讨论男人或女人,判断的依据为性别词列表中词汇的出现频数。
  • 在分析的最后,将所有属于合适的男性或女性言论中的单词加入对应的词库——例如 "She is lovely." 这个句子被判断为谈论女性的言论,那么就把 'she'、'is' 和 'lovely' 三个词加入女性词库;同时,在上文提及的词汇大小写记录中,'is' 和 'lovely'这两个词对应的非大写次数也会增加。



复制代码
在解析完所有的文本之后,我们就可以开始进行词频分析了。


以上内容转自 数析学院,具体的词频分析过程可以直接查看原文
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2017-3-20 16:20:59
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群