96SEO 2026-02-20 02:20 0
。

在大模型训练任务中#xff0c;就是作为大模型的输入。
传统的自然语言处理方法#xff0c;如基于条件随机场的序列标注#xff0c;主要采用基于词…
词元化是针对自然语言处理任务的数据预处理中一个重要步骤目的是将原始文本切分成模型可以识别和处理的词元序列。
在大模型训练任务中就是作为大模型的输入。
传统的自然语言处理方法如基于条件随机场的序列标注主要采用基于词汇的分词方式这与我们人类的语言认知更为契合。
但是这种分词方法在中文等语言中可能会导致对同一输入产生不同的分词结果从而生成包含大量低频词的庞大词表并可能出现未登录词OOV的问题。
因此一些语言模型开始使用字符作为最小单位进行分词例如ELMo
分词接下来我们将参考huggingface的材料【1】来分析这几类分词器并展示每种模型使用的标记器类型的示例。
本文首先对BPE进行分享。
tokenization【2】最初是作为一种文本压缩算法开发的随后被OpenAI用于预训练GPT模型时的分词。
许多Transformer模型都使用了该算法包括GPT、GPT-2、RoBERTa、BART和DeBERTa。
BPE
算法从一组基本符号如字母和边界字符开始迭代地寻找语料库中的两个相邻词元并将它们替换为新的词元这一过程被称为合并。
合并的选择标准是计算两个连续词元的共现频率也就是每次迭代中最频繁出现的一对词元会被选择与合并。
合并过程将一直持续达到预定义的词表大小【3】。
BPE训练开始于计算语料库中使用的唯一词汇集在完成标准化和预分词步骤后然后通过获取写这些词所用的所有符号来构建词汇表。
举个非常简单的例子假设我们的语料库使用了以下五个词
u]。
在实际情况下该基础词汇表至少会包含所有ASCII字符并可能包括一些Unicode字符。
如果一个例子使用了在训练语料库中不存在的字符该字符将被转换为未知标记。
许多NLP模型在分析包含表情符号的内容时表现不佳的原因可能这个就是其中一种。
GPT-2和RoBERTa的分词器相似性较高有一种方法来处理这个问题它们将词视为由字节组成而不是Unicode字符。
这样基础词汇表的大小就很小256但字符仍会被包含在内而不会被转换为未知标记。
这个技巧称为字节级BPE。
算法的一种扩展它将字节视为合并操作的基本符号从而实现更精细的分割并解决了未登录词的问题。
代表性语言模型如
字符视为基本字符基本词表的规模会非常庞大例如每个汉字都作为一个基本字符。
而使用字节作为基本字符可以将词汇表的大小限制在
在获得这个基础词汇表后通过学习合并规则将现有词汇表中的两个元素合并为一个新元素的规则添加新标记直到达到所需的词汇大小。
因此最开始这些合并将创建两个字符的标记随着训练的进行合并会生成更长的子词。
在分词器训练的任何步骤中BPE算法都会寻找最常见的现有标记对。
最常见的那一对将被合并然后重复下一步。
这意味着“hug”在语料库中出现了10次“pug”5次“pun”12次“bun”4次“hugs”5次。
我们通过将每个词拆分为字符构成我们初始词汇表的字符开始训练这样我们就可以将每个词视为标记的列表
u)出现在“hug”和“hugs”中因此在语料库中总共出现15次。
但这不是最常见的标记对最常见的对是(u,
g)出现在“hug”、“pug”和“hugs”中在词汇表中总共出现20次。
因此分词器学到的第一个合并规则是(u,
ug这意味着“ug”将被添加到词汇表中并且在语料库中的所有词中都应合并该对。
在这个阶段结束时词汇表和语料库如下所示
标准化预分词将词拆分为单个字符在这些拆分上按顺序应用学习到的合并规则
ug]因为字母“m”不在基础词汇表中。
同样“thug”将被分词为[[UNK],
hug]字母“t”不在基础词汇表中应用合并规则后首先会合并“u”和“g”然后合并“h”和“ug”。
为了快速方便验证代码因此我们在服务器上安装了jupyter来进行编程演示。
这里记录下安装和部署的方式。
一般域名就是https://你的服务器ip地址:8888/lab
我们需要将该语料库预分词为单词。
这里将使用gpt2分词器进行预分词国内的话为了方便我们依然采用model
snapshot_download(AI-ModelScope/gpt2,
/root/autodl-tmp/AI-ModelScope/gpt2
AutoTokenizer.from_pretrained(mode_name_or_path,
然后在预分词的同时我们计算每个单词在语料库中的频率并且计算基础词汇表由语料库中使用的所有字符组成将模型使用的特殊标记添加到词汇表的开头。
对于GPT-2唯一的特殊标记是|endoftext|。
另外说明下前面带有“Ġ”符号的词例如“Ġis”、“Ġthe”通常是在使用字节级别的BPEByte-level
BPE分词时生成的。
这个符号的作用是标记一个单词是以空格开头的即这个单词前面有一个空格。
这种标记方式在处理文本时有助于保持词与词之间的分隔使模型能够更好地理解上下文。
tokenizer.backend_tokenizer.pre_tokenizer.pre_tokenize_str(text)new_words
alphabet:alphabet.append(letter)
将每个单词拆分为单个字符以便开始训练。
计算每个标记对的频率。
找到出现次数最多的词对。
compute_pair_freqs(splits):pair_freqs
enumerate(pair_freqs.keys()):print(f{key}:
compute_pair_freqs(splits)best_pair
best_pair[1]vocab.append(best_pair[0]
接下来为了对新文本进行分词先进行预分词再拆分然后应用所有学习到的合并规则
tokenize(text):pre_tokenize_result
tokenizer._tokenizer.pre_tokenizer.pre_tokenize_str(text)pre_tokenized_text
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback