Usare ai.extract con PySpark

La ai.extract funzione estrae campi come nomi, posizioni o entità personalizzate da ogni riga di input.

Annotazioni

Informazioni generali

La ai.extract funzione è disponibile per i dataframe Spark. È necessario specificare il nome di una colonna di input esistente come parametro, insieme a un elenco di tipi di entità da estrarre da ogni riga di testo.

La funzione restituisce un nuovo dataframe, con una colonna separata per ogni tipo di entità specificato che contiene valori estratti per ogni riga di input.

Estrazione basata su schema

aifunc.ExtractLabel supporta le definizioni dello schema JSON per l'estrazione strutturata. Oltre ai tipi di base (string, number, integere boolean), è possibile usare:

  • Enumerazioni: vincola i valori a un set fisso (ad esempio, "enum": ["midfielder", "striker", "defender"]).
  • Matrici: definire gli schemi degli elementi tramite items (ad esempio, "type": "array", "items": {"type": "string"}).
  • Oggetti con proprietà: specificare i campi annidati con properties e i loro tipi.
  • Campi obbligatori: contrassegnare i campi obbligatori con required per assicurarsi che siano sempre presenti nell'output.
  • Nessun campo aggiuntivo: impostato additionalProperties=false per impedire al modello di restituire campi esterni allo schema definito.
  • Valori nullable: esprimono tipi nullable (ad esempio, type=["string", "null"]) per indicare dati facoltativi.

Quando viene usato in PySpark, ai.extract viene eseguito come una trasformazione Spark distribuita tra le partizioni Spark di Fabric.

Sintassi

from synapse.ml.spark import aifunc

Annotazioni

Il percorso di importazione pySpark è from synapse.ml.spark import aifunc. Per pandas, usare from synapse.ml import aifunc.

df.ai.extract(labels=["entity1", "entity2", "entity3"], input_col="input")

Parametri

Nome Description
labels
Obbligatorio
Matrice di stringhe che rappresenta il set di tipi di entità da estrarre dai valori di testo nella colonna di input.
input_col
Obbligatorio
Stringa contenente il nome di una colonna esistente con valori di testo di input da analizzare per le entità personalizzate.
aifunc.ExtractLabel
Opzionale
Una o più definizioni di etichetta che descrivono i campi da estrarre. Vedi i parametri di ExtractLabel.
error_col
Opzionale
Stringa contenente il nome di una nuova colonna per archiviare eventuali errori OpenAI risultanti dall'elaborazione di ogni riga di testo di input. Se non si imposta questo parametro, viene generato un nome predefinito per la colonna di errore. Se una riga di input non contiene errori, il valore in questa colonna è null.

Parametri di ExtractLabel

Nome Description
label
Obbligatorio
Stringa che rappresenta l'entità da estrarre dai valori di testo di input.
description
Opzionale
Stringa che aggiunge un contesto aggiuntivo per il modello di intelligenza artificiale. Può includere requisiti, contesto o istruzioni per l'intelligenza artificiale da considerare durante l'esecuzione dell'estrazione.
max_items
Opzionale
Valore int che specifica il numero massimo di elementi da estrarre per questa etichetta.
type
Opzionale
Tipo di schema JSON per il valore estratto. I tipi supportati per questa classe includono string, numberinteger, boolean, , objecte array.
properties
Opzionale
Proprietà aggiuntive dello schema JSON per il tipo, ad esempio items, propertiesenum, required, e additionalProperties. Esprimere i valori nullabili con type=["string", "null"]. Consulta Structured Outputs: schemi supportati.
raw_col
Opzionale
Stringa che imposta il nome della colonna per la risposta LLM non elaborata. La risposta non elaborata fornisce un elenco di coppie di dizionario per ogni etichetta di entità, tra cui "reason" e "extraction_text".

Restituzioni

La funzione restituisce un dataframe Spark con una nuova colonna per ogni tipo di entità specificato. La colonna o le colonne contengono le entità estratte per ogni riga di testo di input. Se non viene trovata alcuna corrispondenza, il risultato è null.

Il tipo restituito predefinito è un elenco di stringhe per ogni etichetta. Quando max_items non viene specificato, le corrispondenze multiple vengono restituite sotto forma di elenco. Se si specifica un tipo diverso nella aifunc.ExtractLabel configurazione , ad esempio , type="integer"l'output è un elenco di valori di tale tipo. Se si specifica max_items=1, viene generato un elenco a singolo elemento per tale etichetta. Il tipo di elemento di ogni elenco segue lo schema specificato.

Example

# This code uses AI. Always review output for mistakes. 

df = spark.createDataFrame([
        ("MJ Lee lives in Tucson, AZ, and works as a software engineer for Contoso.",),
        ("Kris Turner, a nurse at NYU Langone, is a resident of Jersey City, New Jersey.",)
    ], ["descriptions"])

df_entities = df.ai.extract(labels=["name", "profession", "city"], input_col="descriptions")
display(df_entities)

Risultato:

Screenshot che mostra un nuovo frame di dati con le colonne 'name', 'profession' e 'city', contenenti i dati estratti dal frame di dati originale.

Input multimodale

Per estrarre campi da immagini, PDF o file di testo, impostare input_col_type="path". Per la configurazione, vedere Usare l'input multimodale con Funzioni di intelligenza artificiale.

# This code uses AI. Always review output for mistakes.

extracted = custom_df.ai.extract(
    labels=[
        aifunc.ExtractLabel(
            "name",
            description="The full name of the candidate, first letter capitalized.",
            max_items=1,
        ),
        "companies_worked_for",
        aifunc.ExtractLabel(
            "year_of_experience",
            description="The total years of professional work experience the candidate has, excluding internships.",
            type="integer",
            max_items=1,
        ),
    ],
    input_col="file_path",
    input_col_type="path",
)
display(extracted)