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

旅行网站设计做网站注册页面

旅行网站设计,做网站注册页面,做百度网站网站排名赚钱吗,从seo角度去建设网站文章目录1 文件的加载1.1 Markdown 的加载1.2 PDF 的加载2 数据的清理(以PDF的第一页数据为例)3 内容的分割总结本文主要讲解langchain 如何加载PDF、Markdown源文件。 清理的PDF文件为南瓜书。 1 文件的加载 1.1 Markdown 的加载 from langchain.docu…

文章目录

  • 1 文件的加载
    • 1.1 Markdown 的加载
    • 1.2 PDF 的加载
  • 2 数据的清理(以PDF的第一页数据为例)
  • 3 内容的分割
  • 总结

本文主要讲解langchain 如何加载PDF、Markdown源文件。

清理的PDF文件为南瓜书。

1 文件的加载

1.1 Markdown 的加载

from langchain.document_loaders.markdown import UnstructuredMarkdownLoaderloader = UnstructuredMarkdownLoader("data_base/example.md")  # 实例化对象,传入Markdown文件地址
md_pages = loader.load()  # 加载文件内容,返回Document对象列表,List[Document]type(md_pages), len(md_pages), md_pages[0].metadata, md_pages[0].page_content  # 使用返回结果,可以查看类型、页数、文件名、内容等等

1.2 PDF 的加载

from langchain.document_loaders import PyMuPDFLoaderloader = PyMuPDFLoader("data_base/example.pdf")  # 实例化对象,传入PDF文件地址
pdf_pages = loader.load()  # 加载文件内容,返回Document对象列表type(pdf_pages), len(pdf_pages), pdf_pages[0].metadata, pdf_pages[0].page_content# 使用返回结果,可以查看类型、页数、文件名、内容等等

这里给出一个document数据的示例(pdf_pages[0]):
在这里插入图片描述

2 数据的清理(以PDF的第一页数据为例)

这里我们要处理的是数据内容,也就是content部分。

使用正则表达式处理。

# 提取第一页内容
pdf_page = pdf_pages[0]# 引入re模块
import re"替换掉每句话之间的换行符和两个符号之间的\n"
pattern = re.compile(r'["\u4e00-\u9fff](n)["\u4e00-\u9fff]', re.DOTALL)   # 正则表达式
pdf_page.page_content = re.sub(pattern, lambda match: match.group(0).replace('n', ''), pdf_page.page_content)  # 替换操作。re.sub(pattern, repl, string) # 清除多余'•'和空格
pdf_page.page_content = pdf_page.page_content.replace('•', '')
pdf_page.page_content = pdf_page.page_content.replace(' ', '')

3 内容的分割

由于上下文过长会导致检索得到的知识太长,超过模型能处理能力。因此,不会直接将单个文件转为向量存入向量数据库,进行检索。

在存入向量数据库之前,需要将其进行分割,以便于后续处理。

通常,将单个文档按长度或某规则分割成若干个chunk,然后将每个chunk转化为词向量,并存储到向量数据库中。

chunk指的是文档的片段,比如一个文档有1000个字符,那么将其按500个字符进行分割,就会得到5个chunk。

在检索时,会以chunk为元单位进行检索。每一次检索到k个chunk,其作为参考的知识,来回答用户。k的值有我们决定。

我们可以使用langchainCharacterTextSplitter分割方法:

langchain.text_splitter.CharacterTextSplitter(separator: str = "(n(n"chunk_size=4000,chunk_overlap=200,length_function=<builtin function len>,)
Methods:create_documents()-Create documents from a list of texts.split_documents()-Split documents.
  • chunk_size 指每个块包含的字符或Token(如单词、句子等)的数量
  • chunk_overlap 指两个块之间共享的字符数量,用于保持上下文的连贯性,避免分割丢失上下文信息

langchain还有其它文档分割方式,区别在怎么确定块与块之间的边界、块由哪些字符/token组成、以及如何测量块大小。

接下来,

# 引入模块
from langchain_text_splitters import RecursiveCharacterTextSplitte # 实例化RecursiveCharacterTextSplitter对象
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)"""对文本切割  .split_text()"""
chunks = text_splitter.split_text(pdf_page.page_content) # 对pdf_page.page_content进行分割,得到List列表"""对文件切割  .split_documents()"""
chunks = text_splitter.split_documents(pdf_pages[0:3])  # 返回List列表

额外地,这里其实可以对文件总数tokens进行统计。

sum([len(chunk.page_content) for chunk in chunks])

总结

以上就是如何对源文件数据进行处理。

  • 加载。 使用 langchain.document_loaders 下的模块,实例化后,.load() 加载文件
  • 清理。 使用正则表达式或简单替换删除不需要的字符
  • 分割。 使用 langchain_text_splitters 下的模块,实例化后,.split_text() 或 .split_documents() 分割内容为多个chunks,为后续存入数据库做准备
http://www.dtcms.com/a/501434.html

相关文章:

  • 学做衣服上什么网站好wordpress 淘宝客 采集
  • 宜兴建设局 审图中心 网站团员信息查询系统入口
  • 网站的建设费计入无形资产吗数据需求 网站建设
  • 银行校招知识点突击
  • 网站域名 文件夹制作个人网站教程
  • 好看动漫网替代网站做那事的网站
  • 番禺网站开发公司电话运营小程序的成本有哪些
  • 开发个网站需要多少钱编程猫的网站是什么
  • Pod 控制器与配置资源管理
  • 怎么做汽车网站软件公司招聘信息
  • 网站制作需要哪些软件wordpress文章输出数
  • 手机影视素材网站大全厦门工商网站查询企业信息
  • Linux中互斥锁
  • 为网站网站做代理被判缓刑四秒网站建设
  • 青岛网站集约化管理平台成品网页大全下载
  • 电影网站怎么做流量东莞市企业招聘信息网
  • NVIDIA Omniverse-开发下一代基于物理的 AI 应用程序-简单体验与介绍
  • 酒泉建设厅网站网站流量一直做不起来
  • 网站数据库设计模板网站流量查询平台
  • 佛山网站建设技术托管百度怎么免费推广
  • 英文网站推广方法移动网站网上营业厅
  • 中国建设银行车主卡网站自建网站需要哪些技术
  • 嵌入式进阶:C语言内联汇编
  • 万网虚拟主机建网站买布做衣裳 在哪个网站买好
  • 网站1g空间多大济宁专业网站建设
  • 网站建设預算免费自动建站
  • 企业网站设计开发服务单位网站的建设
  • 微信商城和微网站a站是什么
  • 峰峰网站建设wordpress下载网站模板
  • wix建站是免费的吗logo制作在线