当前位置: 首页 > wzjs >正文

重庆网页制作seoul是哪个城市

重庆网页制作,seoul是哪个城市,宁波小程序开发,施工企业会计制度2022在自然语言处理(NLP)中,数据切分(Chunking)是处理长文本的关键步骤,直接影响模型性能(如检索增强生成RAG、文本嵌入、机器阅读理解)。 以下是常见的切分方式及其适用场景。 一、常…

在自然语言处理(NLP)中,数据切分(Chunking)是处理长文本的关键步骤,直接影响模型性能(如检索增强生成RAG、文本嵌入、机器阅读理解)。
在这里插入图片描述

以下是常见的切分方式及其适用场景。

一、常见切分方式

方法原理优点缺点适用场景
1. 固定长度分块按固定字符数或词数切割(如每200字符)实现简单,适合批量处理可能切断完整句子或语义单元通用文本嵌入、简单检索任务
2. 按句子分割基于标点(句号、问号)划分句子保留完整句子结构忽略段落间逻辑关联机器翻译、文本摘要
3. 按段落分割以段落(换行符)为边界切分保留段落内完整语义段落长度差异大,需二次处理文档结构化分析(如论文、报告)
4. 滑动窗口分块固定长度分块,相邻块部分重叠(如50%)减少语义断裂,提升上下文连续性冗余计算,存储成本增加长文本生成(如故事续写)
5. 基于语义分块用NLP模型检测语义边界(如主题变化点)确保块内语义完整,块间低耦合计算复杂度高,依赖模型质量RAG系统、知识图谱构建
6. 按标记(Token)分块按模型最大Token限制切割(如GPT-4的8k)适配模型输入限制可能破坏文本逻辑结构大模型输入预处理(如GPT、LLaMA)

二、最佳切分策略

1. 通用推荐

  • 优先选择:语义分块 + 滑动窗口(重叠)
    • 理由:平衡语义完整性与计算效率,适合大多数场景(如RAG、问答系统)。
    • 实现工具
      • LangChain的RecursiveCharacterTextSplitter:支持多级分割(段落→句子→固定长度)。
      • spaCy/sentence-transformers:检测语义边界。

2. 分块大小建议

  • 检索增强(RAG):200-500字符(或50-200词),确保信息密度。
  • 模型输入:按模型Token限制调整(如GPT-3.5为4k Tokens)。
  • 重叠窗口:10-20%块长度(如200字符块,重叠40字符)。

3. 分步骤示例

from langchain.text_splitter import RecursiveCharacterTextSplitter# 定义分块规则
text_splitter = RecursiveCharacterTextSplitter(chunk_size=200,      # 目标块大小chunk_overlap=40,    # 重叠长度separators=["\n\n", "\n", ". ", "? ", "! ", "。", "?", "!"]  # 分割符优先级
)# 执行切分
text = "长文本内容..."
chunks = text_splitter.split_text(text)

三、场景化最佳实践

场景推荐方法工具/库注意事项
RAG系统语义分块 + 滑动窗口LangChain、Cohere Embed避免过小分块丢失上下文关联
法律文档分析按章节/条款切分spaCy(规则匹配)保留条款编号和层级结构
社交媒体文本处理按帖子/评论分割正则表达式(如按时间戳分割)处理非结构化文本(如表情符号)
科研论文解析按章节(摘要、方法、结果)PDF解析库(PyPDF2、GROBID)提取图表标题与正文关联

四、语义分块 + 滑动窗口代码示例

以下是一个结合 语义分块滑动窗口 的Python代码示例,使用 spaCy 检测语义边界,并实现重叠分块,适用于RAG系统:

# 安装依赖:pip install spacy sentence-transformers chromadb
# 下载spacy模型:python -m spacy download en_core_web_smimport spacy
import re
from typing import List# 加载spacy模型(检测句子和语义边界)
nlp = spacy.load("en_core_web_sm")def semantic_chunking_with_sliding_window(text: str, chunk_size: int = 300, overlap: int = 50
) -> List[str]:"""语义分块 + 滑动窗口切分文本参数:text: 输入文本chunk_size: 目标分块大小(字符数)overlap: 滑动窗口重叠长度(字符数)返回:chunks: 分块后的文本列表"""# Step 1: 预处理(移除多余空格、换行符)text = re.sub(r'\s+', ' ', text).strip()# Step 2: 使用spacy分句(语义分块)doc = nlp(text)sentences = [sent.text.strip() for sent in doc.sents]# Step 3: 合并句子为初始块(基于chunk_size)chunks = []current_chunk = []current_length = 0for sent in sentences:sent_length = len(sent)if current_length + sent_length <= chunk_size:current_chunk.append(sent)current_length += sent_lengthelse:chunks.append(' '.join(current_chunk))current_chunk = [sent]current_length = sent_lengthif current_chunk:chunks.append(' '.join(current_chunk))# Step 4: 应用滑动窗口(添加重叠区域)final_chunks = []for i in range(len(chunks)):current = chunks[i]if i > 0:# 取前一块的末尾overlap部分与当前块合并prev_chunk_tail = chunks[i-1][-overlap:]current = prev_chunk_tail + ' ' + currentfinal_chunks.append(current[:chunk_size])  # 确保不超过chunk_sizereturn final_chunks# 测试示例
if __name__ == "__main__":sample_text = """Large language models (LLMs) have revolutionized AI applications. However, their knowledge is static after training. Retrieval-Augmented Generation (RAG) addresses this by dynamically retrieving relevant documents during inference. For example, in medical diagnosis, RAG systems can pull the latest research papers to provide up-to-date recommendations. The key steps include: document chunking, vector retrieval, and context-aware generation. Effective chunking strategies like semantic segmentation with sliding windows improve retrieval accuracy."""chunks = semantic_chunking_with_sliding_window(sample_text, chunk_size=150, overlap=30)for i, chunk in enumerate(chunks):print(f"Chunk {i+1} ({len(chunk)} chars):\n{chunk}\n{'-'*50}")

输出示例

Chunk 1 (150 chars):
Large language models (LLMs) have revolutionized AI applications. However, their knowledge is static after training. Retrieval-Augmented Generation (RAG) addresses this by dynamically retrieving relevant 
--------------------------------------------------
Chunk 2 (150 chars):
retrieving relevant documents during inference. For example, in medical diagnosis, RAG systems can pull the latest research papers to provide up-to-date recommendations. The key steps include: document chunking, vector 
--------------------------------------------------
Chunk 3 (150 chars):
vector retrieval, and context-aware generation. Effective chunking strategies like semantic segmentation with sliding windows improve retrieval accuracy.
--------------------------------------------------

关键实现逻辑

  1. 语义分块

    • 使用 spaCy 将文本分割为完整句子(保留语义边界)。
    • 例:将长段落分割为 ["sentence1", "sentence2", ...]
  2. 初始分块合并

    • chunk_size 合并句子,确保每块不超过目标长度。
    • 例:合并至总字符数接近300。
  3. 滑动窗口重叠

    • 取前一块末尾的 overlap 个字符,拼接到当前块开头。
    • 例:前一块末尾的30字符 + 当前块 → 提升上下文连续性。

与RAG系统集成

将分块后的文本存入向量数据库(如Chroma),用于后续检索:

import chromadb
from sentence_transformers import SentenceTransformer# 1. 初始化向量数据库
client = chromadb.Client()
collection = client.create_collection("rag_docs")# 2. 生成嵌入向量
embedder = SentenceTransformer('all-MiniLM-L6-v2')# 3. 存储分块文本
chunks = semantic_chunking_with_sliding_window(sample_text)
embeddings = embedder.encode(chunks).tolist()collection.add(embeddings=embeddings,documents=chunks,ids=[f"id{i}" for i in range(len(chunks))]
)# 4. 检索示例
query = "How does RAG handle up-to-date information?"
query_embedding = embedder.encode([query]).tolist()results = collection.query(query_embeddings=query_embedding,n_results=2
)
print("Top 2 relevant chunks:", results['documents'][0])

最佳实践建议

  1. 参数调优

    • chunk_size:根据下游任务调整(RAG推荐200-500字符)。
    • overlap:设为 chunk_size 的10-20%(如300字符块用30-60重叠)。
  2. 复杂文本处理

    • 技术文档:优先按段落(\n\n)分割,再应用滑动窗口。
    • 对话记录:按说话者切换点分割(如 User:Bot:)。
  3. 性能优化

    • 缓存 spaCy 分句结果,避免重复计算。
    • 并行处理多个文档的分块和嵌入生成。

五、总结

  • 最佳方法语义分块 + 滑动窗口(LangChain工具链),兼顾效率与语义完整性。
  • 核心原则:根据任务需求(检索、生成、分析)和数据特性(结构/非结构、长度)动态调整。
  • 避坑指南
    • 避免过小分块(丢失上下文)或过大分块(噪声增加)。
    • 测试不同分块策略对下游任务(如检索召回率)的影响。

文章转载自:

http://5n1KnLVa.xhgcr.cn
http://bmWEsLaq.xhgcr.cn
http://mCXrOLgM.xhgcr.cn
http://IuPtALIu.xhgcr.cn
http://4hif6oNQ.xhgcr.cn
http://aMhbWjpa.xhgcr.cn
http://te2AldJe.xhgcr.cn
http://CkwqGxMU.xhgcr.cn
http://0zCnuIG6.xhgcr.cn
http://A4ATgnq6.xhgcr.cn
http://n29sV9z4.xhgcr.cn
http://PFTPKDON.xhgcr.cn
http://rjtD0JKA.xhgcr.cn
http://JFNvfFLj.xhgcr.cn
http://uZWSFULG.xhgcr.cn
http://C3C4aTsl.xhgcr.cn
http://K86lPvVy.xhgcr.cn
http://iBNulAab.xhgcr.cn
http://6t3PlmSQ.xhgcr.cn
http://yUgjsmzK.xhgcr.cn
http://l1QLNGe6.xhgcr.cn
http://EnHkk5QT.xhgcr.cn
http://TNrlOeDs.xhgcr.cn
http://graMTUMp.xhgcr.cn
http://gEExZX7j.xhgcr.cn
http://kPjAWNy9.xhgcr.cn
http://W5QVYVBJ.xhgcr.cn
http://Ez3JzNjT.xhgcr.cn
http://GSnJNhDO.xhgcr.cn
http://b2MXqJmI.xhgcr.cn
http://www.dtcms.com/wzjs/777753.html

相关文章:

  • 外贸小网站建设wordpress手机底部导航
  • 建设厅网站预算员报名时间做网站需要学哪些语言
  • 网站的内链优化怎样做网站建设十大公司
  • 自助建站免费网站小兽wordpress
  • 网站开发校园经历范文无锡网站优化工作室
  • 网站运营培训学校百度域名购买
  • 如何进入网站管理页面上海云职企业服务是干什么的
  • 织梦建站系统教程如何 网站推广
  • 做守望同人的网站新泰网络推广公司
  • 公司企业做网站嘉兴网站seo公司
  • 嘉兴网站模板建站网店美工招聘信息
  • 网站地图怎么做、昆山住房与城乡建设局官网
  • 电话网站源码昆山外发加工网
  • 免费建自己域名的网站wordpress cat=
  • 网站制作需要多少钱官网贵阳网站建设搜q479185700
  • 哪里有专门做网站的设计一个网站花多少时间
  • 北京网站优化培训网站空间被攻击
  • 沧州大型企业网站建设创意设计产业
  • 牡丹江网站建设兼职宁波网络推广的公司报价
  • 以下哪个不是网站开发工具东莞网站建设营销网站
  • c语言开发网站教程WordPress百度自动翻译
  • 深圳网站建设最专一个网站按钮怎么做
  • 电子商务网站建设ppt百度收不到我的网站
  • 新衡阳网站wordpress充值卡生成
  • 酒店网站建设公司排名wordpress界面主题
  • 苏州网络科技公司建网站淘宝里面的网站怎么做的
  • 济南市城市建设规划局官方网站微信小程序申请
  • 网站页脚模板瑞昌市建设局网站
  • 网站搭建 成都东莞网站推广优化搜索推广
  • 成功的企业网站案例做音乐分享的网站