[玩转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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/492326.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Redis学习笔记03】Java客户端

1. 初识Jedis Jedis的官网地址&#xff1a;https://github.com/redis/jedis 1.1 快速入门 使用步骤&#xff1a; 注意&#xff1a;如果是云服务器用户使用redis需要先配置防火墙&#xff01; 引入maven依赖 <dependencies><!-- 引入Jedis依赖 --><dependency&g…

Apache DolphinScheduler 3.2.1 版本发布:增强功能与安全性的全面升级

近期&#xff0c;Apache DolphinScheduler 社区激动地宣布 3.2.1 版本的发布。此次更新不仅着力解决了前一版本&#xff08;3.2.0&#xff09;中遗留的问题&#xff0c;而且引入了一系列的功能增强和优化措施。 原先的问题主要源于部分重要代码在发布过程中未能成功合并&#x…

防御保护第八、九、十、十一天笔记

一、内容安全 1、DFI和DPI技术 --- 深度检测技术 DPI是一种基于应用层的流量检测和控制技术&#xff0c;它会对流量进行拆包&#xff0c;分析包头和应用层的内容&#xff0c;从而识别应用程序和应用程序的内容。这种技术增加了对应用层的分析&#xff0c;识别各种应用&#xf…

Learning to Branch for Multi-Task Learning

activations bent 辅助信息 作者未提供代码

4.4 MySQL存储

目录 1、使用前提 2、使用连接数据库最初步骤 2.1 最初步骤 2.2 connect()方法中参数简单传递 3、创建数据库(创建架构)和创建表 3.1 创建数据库(创建架构) 3.2 创建表 3.2.1 基本创建 3.2.2 创建自增主键 4、Pycharm 可视化连接 MySQL 图形界面 5、插入、更新、查询…

云HIS支持连锁集团化管理,1+N模式,支撑运营,管理,决策多位一体

目录 云HIS系统特色 使用简易化 连锁集团化 可扩展化 系统描述 云HIS系统优势 &#xff08;1&#xff09;客户/用户角度 &#xff08;2&#xff09;开发/运维角度 &#xff08;3&#xff09;成功应用案例 HIS分系统&#xff08;HIS子系统&#xff09; 1、医疗业务子…

回归预测 | Matlab实现CPO-HKELM冠豪猪算法优化混合核极限学习机多变量回归预测

回归预测 | Matlab实现CPO-HKELM冠豪猪算法优化混合核极限学习机多变量回归预测 目录 回归预测 | Matlab实现CPO-HKELM冠豪猪算法优化混合核极限学习机多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现CPO-HKELM冠豪猪算法优化混合核极限学习机…

高频面试题整理(二)

文章目录 索引相关问题优化你的索引 密集索引和稀疏索引如何定位并优化慢查询sqlMyISAM与InnoDB 关于锁方面的区别是什么&#xff1f;MyISAMInnoDB事务隔离级别 多线程并发的相关问题Thread中的start和run方法的区别Thread和Runnable是什么关系&#xff1f;如何处理线程的返回值…

Python实现力扣经典面试题——删除有序数组中的重复项 II

题目:删除有序数组中的重复项 II 给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使得出现次数超过两次的元素只出现两次 &#xff0c;返回删除后数组的新长度。不要使用额外的数组空间&#xff0c;你必须在 原地 修改输入数组 并在使用 O(1) 额外…

2627. 函数防抖

说在前面 &#x1f388;不知道大家对于算法的学习是一个怎样的心态呢&#xff1f;为了面试还是因为兴趣&#xff1f;不管是出于什么原因&#xff0c;算法学习需要持续保持。 题目描述 请你编写一个函数&#xff0c;接收参数为另一个函数和一个以毫秒为单位的时间 t &#xff0…

【C++精简版回顾】10.this

1.定义 在 C 中&#xff0c;每一个对象都能通过 this 指针来访问自己的地址&#xff08;指向本身&#xff09;。this 指针是所有成员函数的隐含参数。因此&#xff0c;在成员函数内部&#xff0c;它可以用来指向调用对象。 2.this作用域是在类内部&#xff0c;只能在成员…

《Docker 简易速速上手小册》第7章 高级容器管理(2024 最新版)

文章目录 7.1 容器监控与日志7.1.1 重点基础知识7.1.2 重点案例&#xff1a;监控 Flask 应用7.1.3 拓展案例 1&#xff1a;使用 ELK Stack 收集和分析日志7.1.4 拓展案例 2&#xff1a;使用集成监控工具 7.2 性能调优与资源限制7.2.1 重点基础知识7.2.2 重点案例&#xff1a;Fl…