1.4 路透社语料库

路透社语料库包含 10,788 个新闻文档,共计 130 万字。这些文档分成 90 个主题,按照“训练”和“测试”分为两组;因此,fileid 为'test/14826'的文档属于测试组。这样分割是为了训练和测试算法的,这种算法自动检测文档的主题,我们将在chap-data-intensive中看到。

  1. >>> from nltk.corpus import reuters
  2. >>> reuters.fileids()
  3. ['test/14826', 'test/14828', 'test/14829', 'test/14832', ...]
  4. >>> reuters.categories()
  5. ['acq', 'alum', 'barley', 'bop', 'carcass', 'castor-oil', 'cocoa',
  6. 'coconut', 'coconut-oil', 'coffee', 'copper', 'copra-cake', 'corn',
  7. 'cotton', 'cotton-oil', 'cpi', 'cpu', 'crude', 'dfl', 'dlr', ...]

与布朗语料库不同,路透社语料库的类别是有互相重叠的,只是因为新闻报道往往涉及多个主题。我们可以查找由一个或多个文档涵盖的主题,也可以查找包含在一个或多个类别中的文档。为方便起见,语料库方法既接受单个的 fileid 也接受 fileids 列表作为参数。

  1. >>> reuters.categories('training/9865')
  2. ['barley', 'corn', 'grain', 'wheat']
  3. >>> reuters.categories(['training/9865', 'training/9880'])
  4. ['barley', 'corn', 'grain', 'money-fx', 'wheat']
  5. >>> reuters.fileids('barley')
  6. ['test/15618', 'test/15649', 'test/15676', 'test/15728', 'test/15871', ...]
  7. >>> reuters.fileids(['barley', 'corn'])
  8. ['test/14832', 'test/14858', 'test/15033', 'test/15043', 'test/15106',
  9. 'test/15287', 'test/15341', 'test/15618', 'test/15648', 'test/15649', ...]

类似的,我们可以以文档或类别为单位查找我们想要的词或句子。这些文本中最开始的几个词是标题,按照惯例以大写字母存储。

  1. >>> reuters.words('training/9865')[:14]
  2. ['FRENCH', 'FREE', 'MARKET', 'CEREAL', 'EXPORT', 'BIDS',
  3. 'DETAILED', 'French', 'operators', 'have', 'requested', 'licences', 'to', 'export']
  4. >>> reuters.words(['training/9865', 'training/9880'])
  5. ['FRENCH', 'FREE', 'MARKET', 'CEREAL', 'EXPORT', ...]
  6. >>> reuters.words(categories='barley')
  7. ['FRENCH', 'FREE', 'MARKET', 'CEREAL', 'EXPORT', ...]
  8. >>> reuters.words(categories=['barley', 'corn'])
  9. ['THAI', 'TRADE', 'DEFICIT', 'WIDENS', 'IN', 'FIRST', ...]