小智头像图片
AI教程 2025年01月17日
0 收藏 0 点赞 339 浏览 2963 个字
摘要 :

面向开发者的LLM入门教程-基于字符分割: 基于字符分割 如何进行文本分割,往往与我们的任务类型息息相关。当我们拆分代码时,这种相关性变得尤为突出。因此,我们引入……

哈喽!伙伴们,我是小智,你们的AI向导。欢迎来到每日的AI学习时间。今天,我们将一起深入AI的奇妙世界,探索“面向开发者的LLM入门教程-基于字符分割”,并学会本篇文章中所讲的全部知识点。还是那句话“不必远征未知,只需唤醒你的潜能!”跟着小智的步伐,我们终将学有所成,学以致用,并发现自身的更多可能性。话不多说,现在就让我们开始这场激发潜能的AI学习之旅吧。

面向开发者的LLM入门教程-基于字符分割

面向开发者的LLM入门教程-基于字符分割:

基于字符分割

如何进行文本分割,往往与我们的任务类型息息相关。当我们拆分代码时,这种相关性变得尤为突出。因此,我们引入了一个语言文本分割器,其中包含各种为 Python、Ruby、C 等不同编程语言设计的分隔符。在对这些文档进行分割时,必须充分考虑各种编程语言之间的差异。

我们将从基于字符的分割开始探索,借助 LangChain 提供的 RecursiveCharacterTextSplitter 和CharacterTextSplitter 工具来实现此目标。

CharacterTextSplitter 是字符文本分割,分隔符的参数是单个的字符串;

RecursiveCharacterTextSplitter 是递归字符文本分割,将按不同的字符递归地分割(按照这个优先级[“nn”, “n”, ” “, “”]),这样就能尽量把所有和语义相关的内容尽可能长时间地保留在同一位置。因此, RecursiveCharacterTextSplitter 比 CharacterTextSplitter 对文档切割得更加碎片化

RecursiveCharacterTextSplitter 需要关注的是如下4个参数:

· separators – 分隔符字符串数组
· chunk_size – 每个文档的字符数量限制
· chunk_overlap – 两份文档重叠区域的长度
· length_function – 长度计算函数

1.短句分割

# 导入文本分割器
from langchain.text_splitter import RecursiveCharacterTextSplitter,
CharacterTextSplitter

chunk_size = 20 #设置块大小
chunk_overlap = 10 #设置块重叠大小

# 初始化递归字符文本分割器
r_splitter = RecursiveCharacterTextSplitter(
chunk_size=chunk_size,
chunk_overlap=chunk_overlap
)

# 初始化字符文本分割器
c_splitter = CharacterTextSplitter(
chunk_size=chunk_size,
chunk_overlap=chunk_overlap
)

接下来我们对比展示两个字符文本分割器的效果。

text = “在AI的研究中,由于大模型规模非常大,模型参数很多,在大模型上跑完来验证参数好不好训练时间
成本很高,所以一般会在小模型上做消融实验来验证哪些改进是有效的再去大模型上做实验。” #测试文本
r_splitter.split_text(text)

[‘在AI的研究中,由于大模型规模非常大,模’,
‘大模型规模非常大,模型参数很多,在大模型’,
‘型参数很多,在大模型上跑完来验证参数好不’,
‘上跑完来验证参数好不好训练时间成本很高,’,
‘好训练时间成本很高,所以一般会在小模型上’,
‘所以一般会在小模型上做消融实验来验证哪些’,
‘做消融实验来验证哪些改进是有效的再去大模’,
‘改进是有效的再去大模型上做实验。’]

可以看到,分割结果中,第二块是从“大模型规模非常大,模”开始的,刚好是我们设定的块重叠大小

#字符文本分割器
c_splitter.split_text(text)

[‘在AI的研究中,由于大模型规模非常大,模型参数很多,在大模型上跑完来验证参数好不好训练时间成本很
高,所以一般会在小模型上做消融实验来验证哪些改进是有效的再去大模型上做实验。’]

可以看到字符分割器没有分割这个文本,因为字符文本分割器默认以换行符为分隔符,因此需要设置“,”为分隔符。

# 设置空格分隔符
c_splitter = CharacterTextSplitter(
chunk_size=chunk_size,
chunk_overlap=chunk_overlap,
separator=’,’
)
c_splitter.split_text(text)

Created a chunk of size 23, which is longer than the specified 20

[‘在AI的研究中,由于大模型规模非常大’,
‘由于大模型规模非常大,模型参数很多’,
‘在大模型上跑完来验证参数好不好训练时间成本很高’,
‘所以一般会在小模型上做消融实验来验证哪些改进是有效的再去大模型上做实验。’]

设置“,”为分隔符后,分割效果与递归字符文本分割器类似。

可以看到出现了提示”Created a chunk of size 23, which is longer than the specified 20″,意思是“创建了一个长度为23的块,这比指定的20要长。”。这是因为 CharacterTextSplitter 优先使用我们自定义的分隔符进行分割,所以在长度上会有较小的差距

2.长文本分割

接下来,我们来尝试对长文本进行分割。

# 中文版
some_text = “””在编写文档时,作者将使用文档结构对内容进行分组。
这可以向读者传达哪些想法是相关的。 例如,密切相关的想法
是在句子中。 类似的想法在段落中。 段落构成文档。 nn
段落通常用一个或两个回车符分隔。
回车符是您在该字符串中看到的嵌入的“反斜杠 n”。
句子末尾有一个句号,但也有一个空格。
并且单词之间用空格分隔”””

print(len(some_text))

177

我们使用以上长文本作为示例。

c_splitter = CharacterTextSplitter(
chunk_size=80,
chunk_overlap=0,
separator=’ ‘
)
”’
对于递归字符分割器,依次传入分隔符列表,分别是双换行符、单换行符、空格、空字符
因此在分割文本时,首先会采用双分换行符进行分割,同时依次使用其他分隔符进行分割

”’
r_splitter = RecursiveCharacterTextSplitter(
chunk_size=80,
chunk_overlap=0,
separators=[“nn”, “n”, ” “, “”]
)

字符分割器结果:

c_splitter.split_text(some_text)

[‘在编写文档时,作者将使用文档结构对内容进行分组。 这可以向读者传达哪些想法是相关的。 例如,密切
相关的想法 是在句子中。 类似的想法在段落中。 段落构成文档。’,
‘段落通常用一个或两个回车符分隔。 回车符是您在该字符串中看到的嵌入的“反斜杠 n”。 句子末尾有一个
句号,但也有一个空格。 并且单词之间用空格分隔’]

递归字符分割器效果:

r_splitter.split_text(some_text)

[‘在编写文档时,作者将使用文档结构对内容进行分组。 这可以向读者传达哪些想法是相关的。 例如,
密切相关的想法 是在句子中。 类似的想法在段落中。’,
‘段落构成文档。’,
‘段落通常用一个或两个回车符分隔。 回车符是您在该字符串中看到的嵌入的“反斜杠 n”。 句子
末尾有一个句号,但也有一个空格。’,
‘并且单词之间用空格分隔’]

如果需要按照句子进行分隔,则还要用正则表达式添加一个句号分隔符

r_splitter = RecursiveCharacterTextSplitter(
chunk_size=30,
chunk_overlap=0,
separators=[“nn”, “n”, “(?<=。 )", " ", ""] ) r_splitter.split_text(some_text)

[‘在编写文档时,作者将使用文档结构对内容进行分组。’,
‘这可以向读者传达哪些想法是相关的。’,
‘例如,密切相关的想法 是在句子中。’,
‘类似的想法在段落中。 段落构成文档。’,
‘段落通常用一个或两个回车符分隔。’,
‘回车符是您在该字符串中看到的嵌入的“反斜杠 n”。’,
‘句子末尾有一个句号,但也有一个空格。’,
‘并且单词之间用空格分隔’]

这就是递归字符文本分割器名字中“递归”的含义,总的来说,我们更建议在通用文本中使用递归字符文本分割器

面向开发者的LLM入门教程-基于Token分割
面向开发者的LLM入门教程-基于Token分割:基于Token分割 很多 LLM 的上下文窗口长度限制是按照 Token 来计数的。因此,以 LLM 的视角...

嘿,伙伴们,今天我们的AI探索之旅已经圆满结束。关于“面向开发者的LLM入门教程-基于字符分割”的内容已经分享给大家了。感谢你们的陪伴,希望这次旅程让你对AI能够更了解、更喜欢。谨记,精准提问是解锁AI潜能的钥匙哦!如果有小伙伴想要了解学习更多的AI知识,请关注我们的官网“AI智研社”,保证让你收获满满呦!

微信打赏二维码 微信扫一扫

支付宝打赏二维码 支付宝扫一扫

版权: 转载请注明出处:https://www.ai-blog.cn/2782.html

相关推荐

AI视频-Vidu提示词指南之Prompt关键词(2): 电影风格 以下是整理好的电影风格提示词生成的视频案…

小智头像图片
46

AI视频-Vidu提示词指南之Prompt关键词(1): Vidu Prompt 关键词​ ​ 以“Teddy bear/泰迪熊”为主角…

小智头像图片
339

AI视频-Vidu提示词指南之Prompt基本构成(3): 3.效果示例​ 3.1 概述​ 当提示词遵循主体/场景(主…

小智头像图片
339

AI视频-Vidu提示词指南之Prompt基本构成(2): 2、提示词与画面联想程度的说明​ 为了帮助你更好的…

小智头像图片
339

AI视频-Vidu提示词指南之Prompt基本构成(1): Vidu Prompt 基本构成​ 1、提示词基础架构​ ​ 主体…

小智头像图片
339

AI绘画-即梦ai风格词之基于特定艺术家或流派分类: 基于特定艺术家或流派分类:致敬大师风采​ 想要…

小智头像图片
52

AI绘画-即梦ai风格词之基于视觉风格特征分类: 基于视觉风格特征分类:打造独特的视觉语言​ 通过视…

小智头像图片
339

AI绘画-即梦ai风格词之基于应用场景分类: 基于应用场景分类:为你的创作找到完美定位​ 根据应用场…

小智头像图片
339
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力原创内容

快速提升站内名气成为大牛

扫描二维码

手机访问本站

二维码
vip弹窗图片