Chapter 2 正则表达式,文本标准化,编辑距离

2.2 单词

在我们讨论处理单词之前,我们需要决定什么算作一个单词。让我们通过观察一个语料库,一个计算机可读的文本或者语音集合,开始。举个例子,Brown语料库是一个百万单词的集合。其中包含不同体裁的(新闻,科幻,非科幻,学术等等)500个手写英文文本样本。这些样本被Brown大学在1963-1964年间(KuˇceraandFrancis,1967)收集。在下面的Brown语料库的句子中有多少个单词呢?

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

如果我们不将标点看作单词的话,这句话有13个单词。如果我们考虑标点的话,则有15个单词。我们是否考虑句号,逗号等等取决于任务的要求。标点对于寻找事物的边界(逗号,句号,冒号)以及识别一些意思的角度(问号,叹号,引号)十分关键。对于一些任务,比如语音片段的标签化,解析或是语音合成,我们有时将标点符号视为独立的单词。

Switchboard美式英语陌生人电话会话语料库在1990年代早期被收集。它包括2430个平均每个6分钟的会话,总计240小时的语音和约3百万个单词(Godfrey et al., 1992)。这样的口语语料库没有标点但是引入了其他的针对单词定义的难题。让我们看一个Switchboard语料库中的 utterance ; utterance 是一句话的口语关联 [1] :
[1] utterance原意为“a spoken word, statement, or vocal sound.”后文我准备将utterance译为语音。

I do uh main- mainly business data processing

这段语音有两种不连贯之处。破碎的单词 main- 被称为碎片。像 uhum 的单词被称作填充词或者填充停顿。我们应该将这些视为单词吗?再一次说明,这取决于应用背景。如果我们正在搭建一个语音转录系统,我们可能想要最后剔除这些不连贯。

但是我们有时也保留这些不连贯之处。像 uh 或者 um 这样的不连贯实际上对于语音识别预测即将出现的单词是有用的,因为他们可能标志着说话人正在重新开始一个从句或者一个想法,并且因此也对被视为常规单词的语音识别有用。因为人们使用不同的停顿词 [2] ,这也可以成为识别说话人的一个线索。实际上, Clark and Fox Tree (2002) 展示了 uhum 的不同意思。你认为他们分别表达什么意思呢?

[2] 本段之前我将disfluency译作了不连贯之处,即指口语中的停顿。本段起我将译作停顿词。

大写的token [3] 比如 They 和小写的token比如 they 是一个单词吗?这些单词在某些任务中(语音识别)会被搅在一起,然而对于部分语音或者命名实体标签,大写是一个有用的特征那个被保留。

[3] token指的是语料库中的单个单词。前文中被我直译为标签,但这不太符合原意。之后我将直接使用token,后文有对于token的详细说明。

对于一些被改变的形态比如 catscat 呢?这两个单词有相同的词源 cat 单具有不同的词态。lemma [4] 是具有相同词根,相同的主要词性,以及相同的词义的词汇形态集合。词态是完全变形或者派生的词汇形态。对于像阿拉伯语这种形态复杂的语言,我们经常需要处理词形化。对于许多英文处理任务,词态就足够了。

[4] lemma就像是日语中的辞书形,指词汇出现在词典的基础形态。后文为将其与前后缀的词根相区分,将直接使用lemma。

英语中有多少单词呢?想要回答这个问题我们需要区分两种对于单词的讨论方式。type是指语料库中不同单词的数量,如果词汇中的单词集合是V,type的数量就是词汇的规模|V|。token是所有单词的总数。如果忽略标点,下面这个Brown语料库的句子有16个token和14个type:

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

当提及语言中的单词数量的时候,我们通常指的是单词的type数量。

Corpus Tokens= N Types= V
Shakespeare 884 thousand 31 thousand
Brown corpus 1 million 38 thousand
Switchboard telephone conversations 2.4 million 20 thousand
COCA 440 million 2 million
Google N-grams 1 trillion 13 million
图 2.10 一些英语语料库的大致type和token数量。最大的谷歌N-gram语料库包含1300万个type,但这只计算了出现超过40次及以上的type,实际数字将更大。

图2.10展示了不同主流英语语料库中计算得到的大致type和token数量。我们观察的语料库越大,找到的单词type就越多。并且实际上,这个type数量|V|和token数量N的关系被称为Herdan’sLaw (Herdan, 1960) 或者 Heaps’Law (Heaps, 1978) 。这些都以发现者命名(分别在语言学和信息检索领域)。该公式在式2.1中展示,其中k和β为正常数,且0<β<1。

\begin{equation}
|V| = kN^β \tag{2.1}
\end{equation}

β的值取决于语料库规模和体裁,但是至少对于图2.10中的大型语料库,β在 .67 到 .75 之间。大致上我们可以说文本的词汇规模增长速度远快于单词长度的平方根。

另一个确定语言中单词数量的方法是用lemma数量代替词形type。词典可以帮助给出lemma的数量。词典的条目和加粗字体的数量是lemma数量的一个大致上限(因为一些lemma拥有多重加粗形式)。牛津英语词典1989年版拥有615000个词条。


喵喵喵?