介绍
将 输入文本 分割为独立的 词元,这是为大语言模型生成嵌入向量所必需的预处理步骤。
词元
既可以是 单个单词,也可以是包括标点符号在内的 特殊字符,如图:
编写分割程序
编写程序,将 输入文本 分割为 词元化文本,如下图:
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']
分词器很好地处理了文本,因为所有单词和特殊字符都被整齐地分开了。

