1.5 就职演说语料库

在第1章,我们看到了就职演说语料库,但是把它当作一个单独的文本对待。图fig-inaugural中使用的“词偏移”就像是一个坐标轴;它是语料库中词的索引数,从第一个演讲的第一个词开始算起。然而,语料库实际上是 55 个文本的集合,每个文本都是一个总统的演说。这个集合的一个有趣特性是它的时间维度:

  1. >>> from nltk.corpus import inaugural
  2. >>> inaugural.fileids()
  3. ['1789-Washington.txt', '1793-Washington.txt', '1797-Adams.txt', ...]
  4. >>> [fileid[:4] for fileid in inaugural.fileids()]
  5. ['1789', '1793', '1797', '1801', '1805', '1809', '1813', '1817', '1821', ...]

请注意,每个文本的年代都出现在它的文件名中。要从文件名中获得年代,我们使用fileid[:4]提取前四个字符。

让我们来看看词汇 America 和 citizen 随时间推移的使用情况。下面的代码使用w.lower() [1]将就职演说语料库中的词汇转换成小写,然后用startswith() [1]检查它们是否以“目标”词汇americacitizen开始。因此,它会计算如 American’s 和 Citizens 等词。我们将在第2节学习条件频率分布,现在只考虑输出,如图1.1所示。

  1. >>> cfd = nltk.ConditionalFreqDist(
  2. ... (target, fileid[:4])
  3. ... for fileid in inaugural.fileids()
  4. ... for w in inaugural.words(fileid)
  5. ... for target in ['america', 'citizen']
  6. ... if w.lower().startswith(target)) ![[1]](/projects/nlp-py-2e-zh/Images/eeff7ed83be48bf40aeeb3bf9db5550e.jpg)
  7. >>> cfd.plot()

/projects/nlp-py-2e-zh/Images/4cdc400cf76b0354304e01aeb894877b.jpg

图 1.1:条件频率分布图:计数就职演说语料库中所有以americacitizen开始的词;每个演讲单独计数;这样就能观察出随时间变化用法上的演变趋势;计数没有与文档长度进行归一化处理。