大模型原理:文本分词 作者:马育民 • 2026-01-01 20:03 • 阅读:10004 # 介绍 将 **输入文本** 分割为独立的 **词元**,这是为大语言模型生成嵌入向量所必需的预处理步骤。 ### 词元 既可以是 **单个单词**,也可以是包括标点符号在内的 **特殊字符**,如图: [](https://www.malaoshi.top/upload/0/0/1GW2VwVmxN0Q.png) # 编写分割程序 编写程序,将 `输入文本` 分割为 `词元化文本`,如下图: [](https://www.malaoshi.top/upload/0/0/1GW2VxW6Khi4.png) ``` import re text = "Hello, world. Is this-- a test?" # 根据 ,.:;?_!"() \' -- 以及空格、tab分割文本 result = re.split(r'([,.:;?_!"()\']|--|\s)', text) # 去掉多余的空格 result = [item for item in result if item.strip()] print(result) ``` 执行结果: ``` ['Hello', ',', 'world', '.', 'Is', 'this', '--', 'a', 'test', '?'] ``` 分词方法已成功实现了将文本分割为 **单个单词** 和 **标点符号**,这里文本被分割成10个独立的词元 **注意:**这里是将 **空白字符** **直接移除**,目的是 **减轻内存和计算的负担**。但有时,需要 **保留空白字符**,如:**Python代码对 缩进 和 空格** 具有高敏感性。 # 准备文本文件 使用Edith Wharton的短篇小说《The Verdict》,详见链接: https://gitee.com/65242847/large-model/blob/master/the-verdict.txt ### 预览文本文件 查看字符数,和前100个字符: ``` with open("the-verdict.txt", "r", encoding="utf-8") as f: raw_text = f.read() print("字符总数:", len(raw_text)) print("预览前100个字符:", raw_text[:99]) ``` ### 目标 将这篇包含20479个字符的短篇小说分割为独立的单词和特殊字符,以便将其转换为嵌入向量,进而用于大语言模型训练。 **提示:**构建大语言模型需要处理数百万篇文章和成千上万本图书。这里为了学习,使用小规模的文本样本,主要是理解 **文本处理步骤** ### 分割文本 ``` import re with open("the-verdict.txt", "r", encoding="utf-8") as f: raw_text = f.read() # 根据 ,.:;?_!"() \' -- 以及空格、tab分割文本 result = re.split(r'([,.:;?_!"()\']|--|\s)', raw_text) # 去掉多余的空格 result = [item for item in result if item.strip()] print("单词数量:", len(result)) print(result[:99]) ``` 执行结果: ``` 单词数量: 4690 ['I', 'HAD', 'always', 'thought', 'Jack', 'Gisburn', 'rather', 'a', 'cheap'] ``` 分词器很好地处理了文本,因为所有单词和特殊字符都被整齐地分开了。 原文出处:http://malaoshi.top/show_1GW2Vy13an5d.html