tiktoken
tiktoken 是由
OpenAI 创建的快速 BPE 分词器。tiktoken 来估计使用的令牌。对于 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 可能会将字符的令牌拆分到两个块中,导致 Unicode 字符格式错误。使用 RecursiveCharacterTextSplitter.from_tiktoken_encoder 或 CharacterTextSplitter.from_tiktoken_encoder 可确保块包含有效的 Unicode 字符串。
spaCy
spaCy 是一个用于高级自然语言处理的开源软件库,使用 Python 和 Cython 编程语言编写。
- 文本拆分方式:通过
spaCy分词器拆分。 - 块大小测量方式:按字符数测量。
SentenceTransformers
SentenceTransformersTokenTextSplitter 是一个专用于 sentence-transformer 模型的文本拆分器。默认行为是将文本拆分为适合您要使用的句子转换器模型令牌窗口的块。
要根据 sentence-transformers 分词器拆分文本并约束令牌计数,请实例化 SentenceTransformersTokenTextSplitter。您可以选择指定:
chunk_overlap:令牌重叠的整数计数;model_name:sentence-transformer 模型名称,默认为"sentence-transformers/all-mpnet-base-v2";tokens_per_chunk:每个块所需的令牌计数。
NLTK
我们可以使用NLTK 基于 NLTK 分词器 拆分,而不是仅按 “\n\n” 拆分。
- 文本拆分方式:通过
NLTK分词器拆分。 - 块大小测量方式:按字符数测量。
KoNLPY
KoNLPY: Korean NLP in Python 是一个用于韩语自然语言处理(NLP)的 Python 包。
使用 KoNLPY 的 kkma 分析器进行韩语令牌拆分
对于韩语文本,KoNLPY 包含一个名为Kkma(韩语知识语素分析器)的形态学分析器。Kkma 提供韩语文本的详细形态学分析。它将句子分解为单词,将单词分解为其各自的语素,并识别每个令牌的词性。它可以将文本块分割为单个句子,这对于处理长文本特别有用。
使用注意事项
虽然Kkma 以其详细分析而闻名,但请注意,这种精度可能会影响处理速度。因此,Kkma 最适合分析深度优先于快速文本处理的应用。
Hugging Face 分词器
Hugging Face 有许多分词器。 我们使用 Hugging Face 分词器 GPT2TokenizerFast 来计算文本长度(以令牌计)。- 文本拆分方式:按传入的字符拆分。
- 块大小测量方式:通过
Hugging Face分词器计算的令牌数。
连接这些文档 到 Claude、VSCode 等,通过 MCP 获取实时答案。

