赞
踩
使用的 docx 文档是一个 示例.docx
文档,内容截图如下:
基本的文档处理参数如下:
chunk_overlap = 50
chunk_size = 250
embed_model = 'm3e-large'
vs_type = 'fassi'
zh_title_enhance = False
详细解释如下:
chunk_overlap = 50
: chunk_overlap
是指在进行文本分块时,每个块之间的重叠量。在处理文本时,通常将文本分成多个块以便更有效地处理,而重叠量可以确保在相邻的块之间不会丢失重要的信息。在这个例子中,重叠量为 50,表示相邻块之间会有 50 个字符的重叠。
chunk_size = 250
: chunk_size
是指每个文本块的大小。将长文本分成适当大小的块有助于更高效地处理文本数据。在这里每个文本块的大小为 250 个字符。
embed_model = 'm3e-large
: embed_model
是指用于文本嵌入(embedding)的模型。文本嵌入是将文本数据转换成向量的过程,通常用于表示文本数据。在这里,使用了名为 m3e-large
的嵌入模型。
vs_type = 'fassi'
: vs_type
是向量数据库名称。
zh_title_enhance = False
: zh_title_enhance
是一个布尔值,用于指示是否要增强中文标题。当设置为 True
时,表示对中文标题进行增强处理;当设置为 False
时,表示不进行增强处理。
这里我使用的是自定义的 document_loaders.mydocloader.RapidOCRDocLoader
,处理过程的核心代码如下:
def _get_elements(self) -> List: def doc2text(filepath): from docx.table import _Cell, Table from docx.oxml.table import CT_Tbl from docx.oxml.text.paragraph import CT_P from docx.text.paragraph import Paragraph from docx import Document, ImagePart from PIL import Image from io import BytesIO import numpy as np from rapidocr_onnxruntime import RapidOCR ocr = RapidOCR() doc = Document(filepath) resp = "" def iter_block_items(parent): from docx.document import Document if isinstance(parent, Document): parent_elm = parent.element.body elif isinstance(parent, _Cell): parent_elm = parent._tc else: raise ValueError("RapidOCRDocLoader parse fail") for child in parent_elm.iterchildren(): if isinstance(child, CT_P): yield Paragraph(child, parent) elif isinstance(child, CT_Tbl): yield Table(child, parent) b_unit = tqdm.tqdm(total=len(doc.paragraphs)+len(doc.tables), desc="RapidOCRDocLoader block index: 0") for i, block in enumerate(iter_block_items(doc)): b_unit.set_description( "RapidOCRDocLoader block index: {}".format(i)) b_unit.refresh() if isinstance(block, Paragraph): resp += block.text.strip() + "\n" images = block._element.xpath('.//pic:pic') # 获取所有图片 for image in images: for img_id in image.xpath('.//a:blip/@r:embed'): # 获取图片id part = doc.part.related_parts[img_id] # 根据图片id获取对应的图片 if isinstance(part, ImagePart): image = Image.open(BytesIO(part._blob)) result, _ = ocr(np.array(image)) if result: ocr_result = [line[1] for line in result] resp += "\n".join(ocr_result) elif isinstance(block, Table): for row in block.rows: for cell in row.cells: for paragraph in cell.paragraphs: resp += paragraph.text.strip() + "\n" b_unit.update(1) return resp text = doc2text(self.file_path) from unstructured.partition.text import partition_text return partition_text(text=text, **self.unstructured_kwargs)
这里使用了一个叫 Document
的 python 库可以直接提取 docx 文件中的信息,Document 专门用于处理 Microsoft Word 文档。我们这里主要处理的只有两种类型的内容,分别对应 paragraphs
和 tables
,处理逻辑如下:
优点
缺点
GEOcoding & CSV export:类似于知识库问答,因为需要返回准确的经纬度
只能查询
Administrative layers&export to QGIS: 与app.ageospatial.com进行数据访问
无法对结果进行操作交互
Population data:与app.ageospatial.com进行数据访问人口数据分布
输入数据格式有限
Sentinel-2 imagery and NDVl(Normalized Difference Vegetation Index) :与app.ageospatial.com进行数据访问卫星影像
依赖于自己的数据,因为都是专业涉密数据,准确性也高
Building data&export to QGIS
最终将所有paragraphs
和 tables
中的字符串都拼接起来形成一个长字符串,最后使用一个 partition_text
函数进行了一定的切分,将得到的字符串列表返回即可,其实这一步感觉没啥用处,因为后边其实还使用了ChineseRecursiveTextSplitter
来对长文本进行了递归拆分。
将得到文本进行拆分之后,以方便后续的内容向量化,将上面的结果包装成一个包含了许多 Document 列表,,这些 Document 有利于后续向量化入库,每个 Document 中有 pagecontent
和 metadata
,前者存放部分文本内容,后者存放该内容的元数据,比如文件位置等等,部分内容展示如下图。
随便找一个可以使用的向量模型,我这里使用的是 m3e-large
,另外还有找自己合适的向量数据库,我这里使用的是 fassi
,将上面处理好的内容都经过向量化存入 fassi 中,后面结合大模型即可即可进行文档的问答和检索。这里展示了使用我这个文档进行的问答过程。
作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
学习大型人工智能模型,如GPT-3、BERT或任何其他先进的神经网络模型,需要系统的方法和持续的努力。既然要系统的学习大模型,那么学习路线是必不可少的,下面的这份路线能帮助你快速梳理知识,形成自己的体系。
L1级别:AI大模型时代的华丽登场
L2级别:AI大模型API应用开发工程
L3级别:大模型应用架构进阶实践
L4级别:大模型微调与私有化部署
一般掌握到第四个级别,市场上大多数岗位都是可以胜任,但要还不是天花板,天花板级别要求更加严格,对于算法和实战是非常苛刻的。建议普通人掌握到L4级别即可。
以上的AI大模型学习路线,不知道为什么发出来就有点糊,高清版可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。