tiktoken
tiktoken 是由
OpenAI 创建的快速 BPE 分词器。tiktoken 来估算使用的 token 数。对于 OpenAI 模型,它的估算通常更为准确。
- 文本如何分割:通过传入的字符。
- 块大小如何衡量:通过
tiktoken分词器。
tiktoken 配合使用。
tiktoken 合并块,请使用其 .from_tiktoken_encoder() 方法。注意,此方法产生的分割块可能大于 tiktoken 分词器衡量的块大小。
.from_tiktoken_encoder() 方法接受 encoding_name 参数(如 cl100k_base)或 model_name 参数(如 gpt-4)。所有其他参数如 chunk_size、chunk_overlap 和 separators 用于实例化 CharacterTextSplitter:
RecursiveCharacterTextSplitter.from_tiktoken_encoder,每个超出大小的分割块将被递归地再次分割:
TokenTextSplitter 分割器,它直接使用 tiktoken,并确保每个分割块都小于块大小。
TokenTextSplitter 可能会将某个字符的 token 分割到两个块中,导致 Unicode 字符损坏。请使用 RecursiveCharacterTextSplitter.from_tiktoken_encoder 或 CharacterTextSplitter.from_tiktoken_encoder 以确保块包含有效的 Unicode 字符串。
spaCy
spaCy 是一个用 Python 和 Cython 编写的开源高级自然语言处理软件库。
- 文本如何分割:通过
spaCy分词器。 - 块大小如何衡量:通过字符数。
SentenceTransformers
SentenceTransformersTokenTextSplitter 是专为 sentence-transformer 模型设计的文本分割器。默认行为是将文本分割为适合所选 sentence-transformer 模型 token 窗口的块。 要根据 sentence-transformers 分词器分割文本并限制 token 数,请实例化SentenceTransformersTokenTextSplitter。您可以选择指定:
chunk_overlap:token 重叠的整数数量;model_name:sentence-transformer 模型名称,默认为"sentence-transformers/all-mpnet-base-v2";tokens_per_chunk:每个块所需的 token 数量。
NLTK
我们不只是在"\n\n" 处分割,还可以使用 NLTK 基于 NLTK 分词器进行分割。
- 文本如何分割:通过
NLTK分词器。 - 块大小如何衡量:通过字符数。
KoNLPY
KoNLPy: Korean NLP in Python 是用于处理韩语自然语言处理(NLP)的 Python 包。
使用 KoNLPY 的 kkma 分析器进行韩语 Token 分割
对于韩语文本,KoNLPY 包含一个名为Kkma(韩国知识形态分析器)的形态分析器。Kkma 对韩语文本提供详细的形态分析,将句子分解为单词,将单词分解为其各自的词素,并识别每个 token 的词性。它可以将一段文本分割成单独的句子,这对于处理长文本特别有用。
使用注意事项
虽然Kkma 以其详细分析著称,但需要注意的是,这种精度可能影响处理速度。因此,Kkma 最适合那些注重分析深度而非快速文本处理的应用程序。
Hugging Face 分词器
Hugging Face 提供许多分词器。 我们使用 Hugging Face 分词器 GPT2TokenizerFast 来计算文本的 token 长度。- 文本如何分割:通过传入的字符。
- 块大小如何衡量:通过
Hugging Face分词器计算的 token 数。
连接这些文档 到 Claude、VSCode 等,通过 MCP 获取实时答案。

