التعامل مع الملفات

بالإضافة إلى البيانات النصية الخام، قد ترغب في استخراج المعلومات من أنواع ملفات أخرى مثل عروض الباوربوينت أو ملفات PDF.

يمكنك استخدام محملات مستندات لانغتشاين لتحليل الملفات وتحويلها إلى تنسيق نصي يمكن تغذيته إلى النماذج اللغوية.

الحلقات المستندة على نوع MIME

هنا، سننظر إلى التحليل القائم على نوع MIME والذي يكون غالبًا مفيدًا لتطبيقات الاستخراج إذا كنت تكتب رمز خادم يقبل ملفات تم تحميلها من قبل المستخدم.

في هذه الحالة، من الأفضل أن نفترض أن امتداد الملف الذي قدمه المستخدم خاطئ وبدلاً من ذلك نستنتج نوع MIME من المحتوى الثنائي للملف.

دعنا نقوم بتنزيل بعض المحتوى. سيكون هذا ملف HTML، لكن الكود أدناه سيعمل مع أنواع ملفات أخرى.

import requests

response = requests.get("https://en.wikipedia.org/wiki/Car")
data = response.content
data[:20]
b'<!DOCTYPE html>\n<htm'

تكوين المحللين

import magic
from langchain.document_loaders.parsers import BS4HTMLParser, PDFMinerParser
from langchain.document_loaders.parsers.generic import MimeTypeBasedParser
from langchain.document_loaders.parsers.txt import TextParser
from langchain_community.document_loaders import Blob

HANDLERS = {
    "application/pdf": PDFMinerParser(),
    "text/plain": TextParser(),
    "text/html": BS4HTMLParser(),
}

MIMETYPE_BASED_PARSER = MimeTypeBasedParser(
    handlers=HANDLERS,
    fallback_parser=None,
)

mime = magic.Magic(mime=True)
mime_type = mime.from_buffer(data)

blob = Blob.from_data(
    data=data,
    mime_type=mime_type,
)

parser = HANDLERS[mime_type]
documents = parser.parse(blob=blob)
print(documents[0].page_content[:30].strip())
Car - Wikipedia