Clasificación Avanzada de Documentos con Modelos de Lenguaje Grande (LLMs)

Clasificación Avanzada de Documentos con Modelos de Lenguaje Grande (LLMs)

Read Time:4 Minute, 27 Second

En la era de la inteligencia artificial, la clasificación de documentos ha evolucionado significativamente. Los Modelos de Lenguaje Grande (LLMs) han emergido como una herramienta poderosa y flexible para esta tarea. Este artículo explora cómo utilizar LLMs para la clasificación avanzada de documentos, ofreciendo una alternativa dinámica y agnóstica a los servicios tradicionales de clasificación.

Clasificación con LLMs

El proceso de clasificación con LLMs implica extraer el contenido del documento (por ejemplo, usando pypdf) y agregarlo a un prompt junto con las posibles clasificaciones. Aquí hay un ejemplo básico de cómo estructurar la respuesta de clasificación usando instructor, ya que es sencillo de utilizar.:

from typing import Optional
from pydantic import BaseModel, Field

class ClassificationResponse(BaseModel):
    name: str
    confidence: Optional[int] = Field("From 1 to 10. 10 being the highest confidence")

Este ejemplo básico te dará la mejor categorización y nivel de certeza. Si el nivel de confianza no es adecuado, puedes optar por usar otro modelo como una alternativa fácil y eficaz.

Ejemplo de clasificación con LLMs (https://miro.medium.com/v2/resize:fit:4800/format:webp/1*kxu4485P5Ee98unvMSzJ2Q.png)

Mapeo de Tipos con Estructura de Contrato

Para mejorar la confianza en la clasificación, se puede incluir la estructura del contrato en el prompt. Esto es particularmente útil cuando la clasificación va seguida de una extracción de datos. Aquí hay un ejemplo de cómo agregar la estructura del contrato al prompt usando Pydantic:

def _add_classification_structure(self, contract: BaseModel) -> str:
    content = ""
    if contract:
        content = "\tContract Structure:\n"
        for name, field in contract.model_fields.items():
            field_str = str(field)
            field_type = field_str.split('=')[1].split(' ')[0]
            required = 'required' in field_str
            attributes = f"required={required}"
            field_details = f"\t\tName: {name}, Type: {field_type}, Attributes: {attributes}"
            content += field_details + "\n"
    return content
Ejemplo del prompt con la estructura del contrato ( https://miro.medium.com/v2/resize:fit:1400/format:webp/1*Gf74PXScur2eu3G_bL5Nlg.png )

Comparación de Imágenes

La clasificación basada en imágenes puede ser crucial para documentos donde la estructura visual es importante. Aunque más costosa, esta técnica puede proporcionar resultados más precisos. Se recomienda una combinación de modelos como Azure phi-3 vision, Claude 3 y GPT-4 Vision para un stack de producción robusto.

Mezcla de Modelos (MoM)

La Mezcla de Modelos es una estrategia para aumentar la confianza en la clasificación. Implica usar múltiples modelos en paralelo y combinar sus resultados. Las estrategias comunes incluyen:

  1. CONSENSO: Todos los modelos deben tener el mismo resultado.
  2. ORDEN SUPERIOR: Se elige el resultado con la puntuación más alta.
  3. CONSENSO CON UMBRAL: Una combinación de las dos anteriores con un umbral requerido.

Implementación con ExtractThinker

ExtractThinker es una biblioteca que simplifica la implementación de estas técnicas avanzadas de clasificación. Aquí hay un ejemplo de cómo usar ExtractThinker para clasificación básica:

classifications = [
    Classification(
        name="Driver License",
        description="This is a driver license",
        contract=DriverLicense,  # opcional
    ),
    Classification(
        name="Invoice",
        description="This is an invoice",
        contract=InvoiceContract,  # opcional
    ),
]

document_loader = DocumentLoaderTesseract(tesseract_path)
extractor = Extractor(document_loader)
extractor.load_llm("gpt-4o")

result = extractor.classify(INVOICE_FILE_PATH, classifications)

Para implementar una Mezcla de Modelos, ExtractThinker proporciona la clase Process:

# Common classifications setup
classifications = [
    Classification(
        name="Driver License",
        description="This is a driver license",
    ),
    Classification(
        name="Invoice",
        description="This is an invoice",
    ),
]

tesseract_path = os.getenv("TESSERACT_PATH")
document_loader = DocumentLoaderTesseract(tesseract_path) # Can be any other

# Initialize the GPT-3.5 turbo extractor
gpt_3_5_turbo_extractor = Extractor(document_loader)
gpt_3_5_turbo_extractor.load_llm("gpt-3.5-turbo")

# Initialize the Claude 3 Haiku extractor
claude_3_haiku_extractor = Extractor(document_loader)
claude_3_haiku_extractor.load_llm("claude-3-haiku-20240307")

# Initialize the GPT-4 extractor
gpt_4_extractor = Extractor(document_loader)
gpt_4_extractor.load_llm("gpt-4o")

# Initialize the claude opus extractor
opus_extractor = Extractor(document_loader)
opus_extractor.load_llm("claude-3-opus-20240229")


process = Process()
# Create the process with the extractors
process = Process()
process.add_classify_extractor(
    [
        [gpt_3_5_turbo_extractor, claude_3_haiku_extractor],
        [gpt_4_extractor, opus_extractor],
    ]
)

result = process.classify(INVOICE_FILE_PATH, classifications, strategy=ClassificationStrategy.ConsensusWithThreshold, threshold=9)

El código es fácil de seguir. Se puede crear un proceso con múltiples extractores en cada paso, siguiendo un protocolo específico. En la imagen, el porcentaje representa la cantidad de carga que va a cada paso. Se puede desarrollar una estrategia que permita alcanzar un alto nivel de certeza (99%) al clasificar con LLM.

El proceso con MoM sobre clasificación ( https://miro.medium.com/v2/resize:fit:1400/format:webp/1*6uetjXEhO2-vOp7lWwa-nQ.png )

La clasificación de documentos con LLMs ofrece una flexibilidad y precisión sin precedentes. Las estrategias como el Mapeo de Tipos, la Comparación de Imágenes y la Mezcla de Modelos permiten alcanzar altos niveles de certeza en la clasificación. Herramientas como ExtractThinker simplifican la implementación de estas técnicas avanzadas, haciendo que la clasificación de documentos sea más eficiente y efectiva que nunca.

A medida que los LLMs continúan evolucionando, podemos esperar mejoras aún mayores en nuestra capacidad para clasificar documentos con alta precisión, abriendo nuevas posibilidades en el procesamiento y análisis de documentos.

Esto ha sido todo por ahora, espero que este artículo te sea de utilidad, si llegaste hasta aquí, déjame un comentario. Nos vemos en otra entrega de «Inteligencia Artificial Para Todos»

Happy
Happy
0 %
Sad
Sad
0 %
Excited
Excited
0 %
Sleepy
Sleepy
0 %
Angry
Angry
0 %
Surprise
Surprise
0 %

Average Rating

5 Star
0%
4 Star
0%
3 Star
0%
2 Star
0%
1 Star
0%

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.