因为在构建基于大语言模型(LLM)的应用时,分词器决定了文本如何被解析和理解。分词器的类型可分为以下三种: - 词级分词器(Word):基于空格和标点符号拆分文本。
- 字符级分词器(Character):将文本拆分为单个字符,包括标点。
- 子词级分词器(Subword):将文本拆分为子词单元,常用于大多数LLM,如BPE(Byte-Pair Encoding)和WordPiece。
其中,BPE由 OpenAI(tiktoken)使用,它拥有更大的词汇表,处理表情符号和拼写错误时表现更佳。例如,"😞" 在tiktoken中可能被正确识别,而在WordPiece中会被标记为[UNK](Unknow)。 而WordPiece由Cohere和一些较小的Transformer使用,例如MiniLM-L6-v2拆分效果细腻,但词汇表较小,可能导致更多的子词分割。举个栗子:"Gucci" 会被拆成 ['gu', 'undefinedge'],难以理解用户的真实意图;而tiktoke 则尝试将'pckage'拆分为更有意义的部分,如['p', 'ck', 'age'],虽然不完美,但稍好一些。 - 日期和货币格式:各种不同的日期和货币表示方式会增加模型理解的难度,如 "20th October 2024", "2024-20-10", "20 October 2024", "20/10/2024",在分词和嵌入时会导致不同的理解,因此统一化日期格式能帮助模型更准确地理解和处理这些信息。
基础了解完毕,要想分词器用的好,这些技巧少不了,如下所示: 清洗输入文本:标准化日期格式,消除多余空格,统一货币表示等,提升模型表现。例如,将所有日期格式统一为 "2024-10-20",减少模型理解的难度。 选择合适的分词器:根据具体应用需求选择最适合的分词器,了解其词汇表和处理方式。如果你的应用需要处理大量表情符号,选择像tiktoken这样的BPE分词器会更合适。 评估与可视化:使用评估工具和可视化手段检查分词和嵌入效果,确保模型理解准确。通过绘制嵌入距离矩阵,观察不同分词器在处理相似和不同情感时的表现差异。
参考文献: [1] https:///2024/10/21/you-should-probably-pay-attention-to-tokenizers/
|