# 2.2 词

在我们谈论处理词之前，我们需要先确认下到底什么算作一个单词。让我们先看一个具体的语料库（_corpus_）（复数 corpora），一个计算机可读的文本或语音集合。例如 Brown 语料库（_Brown corpus_）是布朗大学在 1963-64 年间（Kucera and Francis, 1967）\[^1]收集的 500 篇不同体裁（报纸、小说、非小说、学术等）的英语书面文本样本集合，共有约 100 万个词。下面来自该语料库的句子中有多少个词？

> He stepped out into the hall, was delighted to encounter a water brother.

如果我们不把标点符号算作词，那么这个句子就有 13 个词，否则就有 15 个。我们是否把句号（“.”）、逗号（“,”）等当作词，要视任务而定。标点符号对于寻找边界（逗号、句号、冒号）和分析含义（问号、感叹号、引号）至关重要。对于某些任务，如词性标注（_part-of-speech tagging_）或解析（_parsing_）或语音合成（_speech synthesis_），我们有时会把标点符号当作单独的词来处理。

Switchboard 语料库是在 20 世纪 90 年代初收集到的美国陌生人之间的英语电话对话的集合，它包含了 2430 次平均每次 6 分钟的对话，共计 240 个小时的语音和约 300 万个单词（Godfrey et al., 1992）\[^2]。这样的口语化文本没有标点符号，但在定义词语方面却带来了更复杂的问题。我们来看看 Switchboard 中的一个表达，一个**表达**（_译者注：utterance，以下均使用 utterance_）是一个句子的口语化版本：

> I do uh main- mainly business data processing

这个 utterance 有两种类型的**卡顿**（_译者注：disfluency，或者叫不流利_）。_main-_ 这种断开的词叫做**片段**（_fragment_）。像 _uh_ 和 _um_ 这样的词叫**填充词**（_fillers_）或**填充停顿**（_filled pauses_）。我们是否应该认为这些也是词呢？同样，这取决于具体应用。如果我们要建立一个语音转录（_speech transcription_）系统，我们最终可能想要要去掉这种卡顿。

但我们有时也会保留卡顿。其实在语音识别中，像 _uh_ 或 _um_ 这样的卡顿对预测接下来的词很有帮助，因为它们可能预示着说话人重新组织语言或想法，所以对于语音识别来说，它们会被当作常规单词来对待。由于人们卡顿的习惯不同，所以它们也可以成为识别说话人的线索。事实上 Clark 和 Fox Tree(2002)\[^3]表明，_uh_ 和 _um_ 有不同的含义。你认为它们分别是什么含义？

像 _They_ 这样的大写单词和像 _they_ 这样的非大写单词是同一个词吗？在某些任务（语音识别）中，这些词被归为一类，而对于词性标注或命名实体识别（_named-entity tagging_）来说，大写作为一个很有用的特征是被保留的。

那像 _cats_ 与 _cat_ 这样的变形形式（_inflected forms_）呢？这两个词的**词素**（_lemma_）都是 _cat_，但却是不同的词形（_wordform_）。**词素**是一组具有相同词干（_stem_）、相同主词性和相同词义的词汇形式（_lexical form_）。词形是该词的完整变形或派生（_derived_）形式。对于像阿拉伯语这样形态复杂（_morphologically complex_）的语言，我们经常需要进行词形还原（_lemmatization_）。然而对于英语中的许多任务，词形就足够了。

英语有多少个单词？要回答这个问题，我们需要区分词型（_type_）和词例（_token_）。Type 是指语料库中不同单词的数量，如果用 $V$ 来表示词汇表中词的集合，那么 type 的数量就是词汇表大小 $|V|$。Token 是指所有单词总数 $N$。如果我们忽略标点符号，那么下面的 Brown 句子有 16 个 token，14 个 type（_译者注：即 `n_token = len(sentence.split())`，`n_type = len(set(len(sentence.split())))`，注意去掉标点符号_）：

> They picnicked by the pool, then lay back on the grass and looked at the stars.

当我们说的一个语言中词的数量时，一般指的是词型 type 的数量。

![Fig 2.11](https://3093171334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MW3NiWho4LahPy-qHsS%2Fuploads%2Fgit-blob-38b48a04d48deb0cade3b0d01dd3b412c137d4b0%2Ffig2.11.png?alt=media)

图 2.11 显示了一些常见英语语料库中大致的 type 数和 token 数。语料库越大，type 数越多，事实上，type 数 $|V|$ 和 token 数 $N$ 之间的这种关系被称为 **Herdan 法则**（_Herdan’s Law_）（Herdan，1960）\[^4] 或 **Heaps 法则**（_Heaps’ Law_）（Heaps，1978）\[^5] ，以其发现者的名字命名（分别在语言学和信息检索领域），如式 2.1，其中 $k$ 和 $\beta$ 为正常数，且 $0 \lt \beta \lt 1$。

$$|V| = kN^\beta \tag{2.1}$$

$\beta$ 的值取决于语料库大小和体裁。对于图 2.11 中的大型语料库来说，$\beta$ 的范围在 0.67 到 0.75 之间。那么大致上我们可以说，一个文本的词汇表大小上升的速度明显快于其 token 数的平方根。

衡量一个语言中单词数量的另一个标准是词素 lemma 的数量，而不是词形 type 的数量。词典可以大致给出 lemma 的数量；词典条目或黑体字形式是 lemma 数量的一个非常粗略的上限（因为有些 lemma 有多种黑体字形式）。1989 年版《牛津英语词典》（_Oxford English Dictionary_）有 615,000 个词条。

\[^1]: Kucera, H. and Francis, W. N. (1967). Computational Analysis of Present-Day American English. Brown University Press, Providence, RI.\
\[^2]: Godfrey, J., Holliman, E., and McDaniel, J. (1992). SWITCHBOARD: Telephone speech corpus for research and development. ICASSP.\
\[^3]: Clark, H. H. and Fox Tree, J. E. (2002). Using uh and um in spontaneous speaking. Cognition 84, 73–111.\
\[^4]: Herdan, G. (1960). Type-token mathematics. Mouton.\
\[^5]: Heaps, H. S. (1978). Information retrieval. Computational and theoretical aspects. Academic Press.
