概述:
除了原始文本数据,可能还希望从其他文件类型(如PowerPoint演示文稿或PDF)中提取信息。
可以使用LangChain文档加载程序将文件解析为可以输入LLM的文本格式。
基于MIME类型的解析
数据加载
python
import requests
response = requests.get("https://en.wikipedia.org/wiki/Car")
data = response.content
data[:20]
返回:
python
b'<!DOCTYPE html>\n<htm'
配置解析器
加载依赖
python
import magic #导入 magic 库,这是一个在 Python 中用于文件类型检测的库,可以根据文件内容判断其 MIME 类型
pip install python-magic-bin
python
from langchain.document_loaders.parsers import BS4HTMLParser, PDFMinerParser #BS4HTMLParser 用于解析 HTML 文件,PDFMinerParser 用于解析 PDF 文件
from langchain.document_loaders.parsers.generic import MimeTypeBasedParser # MimeTypeBasedParser 是一个基于 MIME 类型的通用解析器,
from langchain.document_loaders.parsers.txt import TextParser#TextParser 用于解析纯文本文件
from langchain_community.document_loaders import Blob #Blob 用于表示二进制数据。
数据加载
python
#定义一个字典用于存储不同的解释器
HANDLERS = {
"application/pdf": PDFMinerParser(),
"text/plain": TextParser(),
"text/html": BS4HTMLParser(),
}
# 使用给定的解析器实例化基于mimetype的解析器
MIMETYPE_BASED_PARSER = MimeTypeBasedParser(
handlers=HANDLERS,
fallback_parser=None,#参数指定了当文档的 MIME 类型在 HANDLERS 字典中没有匹配到相应的解析器时,将使用哪个解析器作为备选。
)
数据解析
python
mime = magic.Magic(mime=True) # mime=True 时,magic.Magic 对象会尝试根据文件内容来确定其 MIME 类型,并以字符串的形式返回。
data[0:300]
b'\n<html class="client-nojs
vector-feature-language-in-header-enabled
vector-feature-language-in-main-page-header-disabled
vector-feature-sticky-header-disabled
vector-feature-page-tools-pinned-disabled
vector-feature-toc-pinned-clientpref-1
vector-feature-main-menu-pinned-disabled vect'
数据类型检测
python
# 使用该对象检测一段数据的 MIME 类型
mime_type = mime.from_buffer(data)
print(mime_type)
返回
text/html
数据二进制转换
python
blob = Blob.from_data(
data=data,
mime_type=mime_type,
)
数据获取
python
#根据检测到的 MIME 类型从 HANDLERS 字典中获取相应的解析器对象。
parser = HANDLERS[mime_type]
#调用解析器对象的 parse 方法,并将 blob 对象作为参数传递给它。这个方法负责解析 blob 中的数据,并返回一个或多个文档对象,这些文档对象通常是 Document 类的实例,它们包含了解析后的文本内容以及可能的元数据。
documents = parser.parse(blob=blob)
#解析后的数据打印
print(documents[0].page_content[:30].strip())
Car - Wikipedia
以上是本文的全部内容感谢阅读。