[玩转AIGC]LangChain文本分词器

LangChain提供了多种不同类型的文本分词器,我们常说的tokenizer就是分词器的一种。

我们知道对于LLaMA与LLaMA2的文本分词器为基于sentencepiece的BPE模型,由Google提出,而openai的文本分词器为tiktoken,据openai官方介绍,tiktoken是一个快速的BPE(Byte-Pair Encoding)分词器,支持词汇的扩展。

Byte Pair Encoding是大语言模型当前使用最多的Tokenizer方法。最简单的tokenize方法是:
将每个单词看成一个token,然后对其编号,实际上单词还有前缀,后缀,会有大量单词重复,需减少编码数量,对数据进行压缩,提高编码效率,BPE编码的目的是用一个有限的词表在token数量降到最低的情况下解决所有单词的分词

在这里插入图片描述
上面对其他常见的文本分类器进行简单介绍,下面主要来介绍LangChain:

LangChain提供了多种不同类型的文本分词器,表格如下:

Name: 文本分词器的名称

Splits On: 文本分词器是如何分词的

Adds Metadata: 用于控制文本分割器是否添加关于每个文本块来自何处的元数据。

Description: 文本分割器(splitter)的描述,以及适合在什么时候使用

Name(名称)Splits On(分割依据)Adds Metadata(是否添加元数据)Description(描述)
Recursive(递归式)用户定义的字符列表递归地将文本进行分割。递归分割文本的目的是尽量将相关的文本片段放在一起。推荐在开始分割文本时使用。
HTMLHTML特定字符基于HTML特定字符进行文本分割。特别地,它会添加关于每个块的来源信息(基于HTML标记)。
MarkdownMarkdown特定字符基于Markdown特定字符进行文本分割。特别地,它会添加关于每个块的来源信息(基于Markdown标记)。
Code编程代码(Python、JS)特定字符基于编程语言特定的字符进行文本分割。提供了15种不同的编程语言选择。
TokenTokens基于标记进行文本分割。有几种不同的标记计量方法。
Character用户定义的字符基于用户定义的字符进行文本分割。这是一种较简单的方法。
[Experimental] Semantic Chunker ([实验性] 语义块分割器)句子首先按句子进行分割。然后,如果相邻的句子在语义上足够相似,它们会被合并在一起。这个方法是从Greg Kamradt那里得到的。

以上是关于各个分割器的描述,包括它们的分割依据、是否添加元数据以及相应的描述。

可以使用由Greg Kamradt创建的Chunkviz实用工具评估文本分割器。Chunkviz是一个很好的工具,可以可视化您的文本分割器的工作方式。它将展示您的文本如何被切分,并帮助您调整分割参数。

对于Adds Metadata,在langchain中,"Adds Metadata"是用于文本分割器(text splitter)的一个参数或选项。该参数用于控制文本分割器是否添加关于每个文本块来自何处的元数据。

作用:
添加元数据可以提供关于每个文本块的来源信息,即哪个文本或文档被分割成了这些块。这对于跟踪和追溯分割后的文本块非常有用,尤其是在处理大型文本集合或进行后续分析时。

实现方式:
具体的实现方式取决于langchain框架的实现细节和文本分割器的具体实现。一种可能的实现方式是,在将文本分割成块的过程中,将每个块与其来源进行关联,并将这些信息保存为元数据。这些来源可以是文件名、文档ID、URL或其他标识符,具体取决于应用场景和数据集的特点。

例如,如果使用langchain中的文本分割器来将大型文本集合分割成较小的段落或句子,那么"Adds Metadata"选项可以用于控制是否在生成的每个文本块中添加关于原始文档或段落的来源信息。这些来源信息可以作为元数据附加到每个文本块上,并在后续的处理和分析中使用。

参考文献:https://huggingface.co/docs/transformers/model_doc/llama2
https://python.langchain.com/docs/modules/data_connection/document_transformers/
Text Splitters | 🦜️🔗 Langchain
https://github.com/openai/tiktoken
https://blog.csdn.net/shichaog/article/details/132927557
https://towardsdatascience.com/byte-pair-encoding-the-dark-horse-of-modern-nlp-eb36c7df4f10

  • 20
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

六五酥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值