本文来自欧巴Godwin的博客 ,引用必须注明出处!

用LangChain读取Word和PDF的文字内容是好的,但如果内容包含表格则读取出来的内容完全没法看。用ChatGPT往往是做企业知识库,所以会出现一个场景,即员工想让ChatGPT讲解包含表格的内容。

要达到效果,本文的做法是:

1、用pandoc把Doc文档转为MarkDown而且是GitHub模式,是重点,因为MarkDown可以作为文本被embedding并且输出内容包含原汁原味的表格<Table>标签

2、用"\n## "作为MarkDown文件的切割符,用TXTLoader读取MD文件并embedding

3、这里只用embedding而不用ChatGPT,本文只做整体表格输出,不做表格格单元具体分析

直接贴出Doc表格和embedding输出的MarkDown表格对比:

1、先贴出pandoc的命令,用pandoc把Doc转为MD文件:

pandoc -s test.docx -t gfm -o test.md

2、贴出Python源码:

import os
from langchain.embeddings import OpenAIEmbeddings
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import Chromafrom langchain.document_loaders.pdf import PDFMinerLoader
from langchain.document_loaders import TextLoader
from langchain.document_loaders import UnstructuredMarkdownLoader# 1、把MD文件当做TXT加载
loader = TextLoader(".\\单文件\\test.md","UTF-8")
pages = loader.load_and_split()# 2、拆分文件
text_splitter = CharacterTextSplitter(separator = "\n## ",chunk_size = 500, #chunk_size = 1000,chunk_overlap = 0
)# 切割加载的 document
split_docs = text_splitter.split_documents(pages)
print(f'documents:{len(split_docs)}')
#print("拆分后的文档:" + str(split_docs))# 3、将文件embedding
os.environ["OPENAI_API_TYPE"] = "azure"
os.environ["OPENAI_API_KEY"] = "xxxxxxxxxxxx"
os.environ["OPENAI_API_BASE"] = "https://yyyyyyyyyyy.openai.azure.com/"
embeddings = OpenAIEmbeddings(model="text-embedding-ada-002", deployment="lk-text-embedding-ada-002", chunk_size=1)print("开始embedding")# 4、将拆分后的文本embeddings后存储到Vector数据库
vectordb = Chroma.from_documents(split_docs, embedding=embeddings, persist_directory="./")
vectordb.persist()result_list=vectordb.search("岗位设置是什么",'similarity')
print(result_list[0])

3、运行代码终端输出的内容,把内容贴到txt文件另保存为.md,再上传到有道云笔记这类支持MD格式的软件即可看到上图MD格式内容:

page_content='岗位设置\n\n根据项目研发过程主要分为需求整理、项目研发、生产发布三个阶段。明确工作职责,逐步实现产品经理、项目经理、软件工程师师、测试工程师、运维工程师的岗位设置。\n\n<table>\n<colgroup>\n<col style="width: 16%" />\n<col style="width: 56%" />\n<col style="width: 27%" />\n</colgroup>\n<thead>\n<tr class="header">\n<th><strong>岗位</strong></th>\n<th><strong>工作内容</strong></th>\n<th><strong>责任</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr class="odd">\n<td>产品经理</td>\n<td><p>1、负责分析需求、整理需求,编写需求文档。</p>\n<p>2、绘制界面原型demo等,设计功能使用的具体描述、行为者、前置条件、后置条件、UI描述、业务流程/子流程/分支流程,界面
说明等,完成大部分的前端设计,小部分的后端设计。</p>\n<p>3、对项目组成员详细讲解需求。</p>\n<p>4、项目过程中维护和跟踪需求状态。</p></td>\n<td><p>1、对产品需求的真实
度负责。</p>\n<p>2、对产品整体风格负责。</p>\n<p>3、对项目整体设计流程负责。</p>\n<p>4、对需求的生命周期负责。</p></td>\n</tr>\n<tr class="even">\n<td>项目经理</td>\n<td><p>1、选定项目组成员,成立项目组,安排任务分工。</p>\n<p>2、制定研发主计划,包括需求,设计,编码,测试这几个阶段的计划。</p>\n<p>3、评估项目研发投入的资源。</p>\n<p>4、制定项目组开发进度表, 对组内人员工作进度监控。</p>\n<p>5、对文档的质量进行检查、把关。</p>\n<p>6、组织需求评审、技术评审等会议。</p></td>\n<td><p>1、对项目资源
有效使用负责。</p>\n<p>2、对各岗位沟通协调工作负责。</p>\n<p>3、对项目的进度负责。</p>\n<p>4、对系统总体设计、详细设计文档质量负责。</p>\n<p>5、对项目组会议质量负责。</p></td>\n</tr>\n<tr class="odd">\n<td>软件工程师</td>\n<td><p>1、负责把产品需求分解为研发任务。</p>\n<p>2、负责系统的模块设计。</p>\n<p>3、负责模块的代码编写、维护
。</p>\n<p>4、负责技术文档的编写、维护。</p>\n<p>5、负责与测试工程师的交互,处理测试工程师的问题。</p>\n<p>6、对项目组成员进行技术指导。</p></td>\n<td><p>1、对研发任
务的有效性负责。</p>\n<p>2、对模块设计的有效性负责。</p>\n<p>3、对模块的开发效率和代码质量负责。</p>\n<p>4、对技术文档的完整性、实时性、可读性负责。</p></td>\n</tr>\n<tr class="even">\n<td>测试工程师</td>\n<td><p>1、根据需求分析和系统总体设计,编写测试文档和测试用例。</p>\n<p>2、对系统的功能、性能、异常进行测试。</p>\n<p>3、编写测试报告。</p>\n<p>4、组织SIT、UAT等各类测试活动。</p></td>\n<td><p>1、对测试的质量负责。</p>\n<p>2、对测试报告负责。</p>\n<p>3、对各类测试活动的质量负责。</p></td>\n</tr>\n<tr class="odd">\n<td>运维工程师</td>\n<td><p>1、保障线上环境的正常运行,处理线上的各种问题;</p>\n<p>2、监控线上系统,分析和预防线上系统出现问题;</p>\n<p>3、构建自动化运维平台,提高运维效率;</p>\n<p>4、规范运维流程,定期提交汇总报告;</p>\n<p>5、\n周期做数据备份,测试数据备份的正确性和完整性,以增强服务器的安全性。</p></td>\n<td><p>1、对线上环境的稳定性负责。</p>\n<p>2、对服务器的安全性负责。</p>\n<p>3、对数据备份的正确性和完整性负责。</p></td>\n</tr>\n</tbody>\n</table>' metadata={'source': '.\\单文件\\test.md'}

ChatGPT | Word表格整体输出相关推荐

  1. PHPword表格中输出不同字体的汉子

    Phpword在word表格中输出不同字体的汉子 1.     在PHPWord\PHPWord\Section\Table\cell.php 找到: public function addText( ...

  2. Python将word表格存入excel —— 格式化pg参数手册

    一. 背景 收到一份<PostgreSQL13商用文档之PG参数参考手册>,打算学习一下,打开文档一看,151页T_T.参数虽然有分类,但不太有规律,word文档格式如下: 个人觉得如果用 ...

  3. POI利用word模板动态生成word报表以及动态生成word表格

    目录 核心依赖 动态表格 测试类 工具类 动态数据 测试类 工具类 核心依赖 <dependency><groupId>org.apache.poi</groupId&g ...

  4. python 读取 word 表格_python读取word表格

    python调用com,如何完成word表格操作 word中doc这个格式的文件是微软特有格式,微软没有向外公开任何的api接口文档,只能通过微软提供的OLE组件来提其COM接口,只要你的机器上安装了 ...

  5. apache poi 修改docx表格_word 模板内容的替换和生成word 表格(使用poi)

    1. maven 相关依赖 和模板 org.apache.poi poi-ooxml 3.15-beta2 org.apache.poi ooxml-schemas 1.1 2.  工具类中的方法 / ...

  6. 如何自动从Word表格中提取高亮(不同颜色)文本--Java实现

    文章目录 问题情境 相关jar包 Java实现程序 Email:1563178220@qq.com 内容可能有不到之处,欢迎交流. 未经本人允许禁止转载. 问题情境 在word中存在多个表格,每个表格 ...

  7. poi 设置word表格颜色_办公软件小课堂 Word表格的设置

    你是否还在为考证烦恼?是否不知从何学起?学习部每周的办公软件小课堂!这里总有你想要的! 本周给大家整理的是 Word表格的设置 01 插入选择卡→表格 02 文本转表格 步骤1:选中要转换成表格的文本 ...

  8. Java中利用freemarker导出word表格并合并单元格

    1.word表格的模板 另存为xml格式: 将保存的xml改成.ftl 格式化一下xml,看看文件中的带有${}是否正确 如果出现这种情况,手动修改下(可复制上一个正确的改下名字) 2.Java代码 ...

  9. word表格函数 计算机应用基础(6)

    表格函数 基础篇 理解什么是表格函数 数学学科的一个基本概念. 函数(function)表示每个输入值对应唯一输出值的一种对应关系. 可以通俗地理解为,函数是一种工具,它可以帮助我们实现某一功能. 例 ...

最新文章

  1. java课程实战培训,终获offer
  2. 如何选购晨检机器人_扫地机器人好不好用?如何选购?答案在这
  3. curl-loader介绍
  4. oracle自动提交没有生效,JBoss对Oracle的自动提交始终不起作用
  5. SAP系统和微信集成的系列教程之七:使用Redis存储微信用户和公众号的对话记录
  6. Coins POJ - 1742(多重背包+是否装满问题)
  7. 手动为linux系统添加新用户——过程详解
  8. 生活中的英语 —— 动植物篇
  9. C#基础笔记(第十天)
  10. 前端工程师拿到全新的 Mac 需要做哪些准备
  11. 网外(Internet)访问代理服务器内部的实现方法
  12. 简略谈谈AS安装的一些小问题
  13. html添加田字,兆加页(是加三个田是什么字)
  14. 泛函分析 04.02 有界线性算子 - 有界线性算子空间的收敛与完备性
  15. 数学建模 Lingo 基本算法模板
  16. 10只狗怎么鉴别1000瓶水哪瓶有毒
  17. 境外显示手机无服务器,手机卡在国外无服务怎么办
  18. WPF使用Blend
  19. 化学专业有必要学python吗-cnBeta.COM - 中文业界资讯站
  20. Structed Streaming(Continuous Processing报错):StreamingQueryException;java.util.NoSuchElementException

热门文章

  1. 【转】window7下Word 2007报“Microsoft office word已停止工作“
  2. [LTTng实操]------开发Babeltrace 2插件
  3. 华测测绘仪X5安装问题笔记
  4. CSMA/CD协议与广播信道
  5. c语言 define和int,C语言中define与const的用法区别分析
  6. 中国最高法院承认区块链证据具有法律效力
  7. linux模拟键盘按键方案(收藏)
  8. 生活常用类API推荐
  9. 独家专访LAION创始人:高中生与科学家同酬,Discord上一呼百应
  10. CSDN 签到在哪里