ファイルの処理

生のテキストデータ以外にも、PowerPointプレゼンテーションやPDFなどの他のファイルタイプから情報を抽出したい場合があります。

LangChainのドキュメントローダーを使用して、ファイルをテキスト形式にパースしてLLMsに入力できます。

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