3.3 词语搭配和双连词

一个搭配是异乎寻常地经常在一起出现的词序列。red wine 是一个搭配,而 the wine 不是。搭配的一个特点是其中的词不能被类似的词置换。例如:maroon wine(粟色酒)听起来就很奇怪。

要获取搭配,我们先从提取文本词汇中的词对,也就是双连词开始。使用函数bigrams()很容易实现:

  1. >>> list(bigrams(['more', 'is', 'said', 'than', 'done']))
  2. [('more', 'is'), ('is', 'said'), ('said', 'than'), ('than', 'done')]
  3. >>>

注意

如果上面省掉list(),只输入bigrams(['more', ...]),你将看到<generator object bigrams at 0x10fb8b3a8> 的输出形式。这是 Python 的方式表示它已经准备好要计算一个序列,在这里是双连词。现在,你只需要知道告诉 Python 使用list()将它转换成一个列表。

在这里我们看到词对 than-done 是一个双连词,在 Python 中写成('than', 'done')。现在,搭配基本上就是频繁的双连词,除非我们更加注重包含不常见词的的情况。特别的,我们希望找到比我们基于单个词的频率预期得到的更频繁出现的双连词。collocations() 函数为我们做这些。我们将在以后看到它是如何工作。

  1. >>> text4.collocations()
  2. United States; fellow citizens; four years; years ago; Federal
  3. Government; General Government; American people; Vice President; Old
  4. World; Almighty God; Fellow citizens; Chief Magistrate; Chief Justice;
  5. God bless; every citizen; Indian tribes; public debt; one another;
  6. foreign nations; political parties
  7. >>> text8.collocations()
  8. would like; medium build; social drinker; quiet nights; non smoker;
  9. long term; age open; Would like; easy going; financially secure; fun
  10. times; similar interests; Age open; weekends away; poss rship; well
  11. presented; never married; single mum; permanent relationship; slim
  12. build
  13. >>>

文本中出现的搭配很能体现文本的风格。为了找到 red wine 这个搭配,我们将需要处理更大的文本。