词表(Vocabulary) 是自然语言处理(NLP)和机器学习中一个核心概念,它指的是在处理文本数据时,模型所能识别、理解和生成的所有离散符号(Token)的集合。
根据不同的应用场景,词表可以包含不同层次的语言单位,常见的有:
1. 词级词表(Word-level Vocabulary)
这是最直观的一种形式,词表中的每个条目对应一个完整的单词(Token)。
- 特点:最符合人类的阅读习惯。
- 局限:难以处理大量的低频词、拼写错误或新造词(Out-of-Vocabulary, OOV)。
2. 字级词表(Character-level Vocabulary)
这里的词表包含了所有可能出现的字符(字母、标点符号、特殊符号)。
- 特点:词表大小固定且非常小(例如英语约100个字符),能处理任何拼写组合。
- 局限:序列过长,难以捕捉跨字符的语义信息(如“running”是“run”和“ing”的组合)。
3. 子词级词表(Subword-level Vocabulary)
这是当前主流模型(如BERT、GPT)的选择。词表中的条目是字母或字符的组合,即单词的子片段。
- 构建方法:通常使用 Byte-Pair Encoding (BPE) 或 WordPiece 等算法。
- 特点:兼具灵活性和表达力。能处理新词(如“unfathomable”被拆解为“un”、“##fathom”、“##able”),又能保留单词级别的语义信息。
为什么词表如此重要?
- 决定模型能力:词表的大小(Vocabulary Size)直接决定了模型能“看见”多少语言信息。一个太小的词表会导致大量的OOV问题,而一个太大的词表会增加模型的计算成本。
- 影响输入表示:在文本被输入模型前,需要通过词表将文字映射为整数索引(ID)。这个过程叫做“Tokenization”(分词或分词)。
- 影响生成质量:在文本生成任务中,模型只能从词表中选择下一个词(Token)进行输出。如果词表缺少某些领域的专业词汇,生成的文本可能会出现不准确或不自然的情况。
声明:文章均为AI生成,请谨慎辨别信息的真伪和可靠性!