Brug ai.extract med PySpark

Funktionen ai.extract udtrækker felter som navne, placeringer eller brugerdefinerede enheder fra hver inputrække.

Notat

Oversigt

Funktionen ai.extract er tilgængelig for Spark DataFrames. Du skal angive navnet på en eksisterende inputkolonne som en parameter sammen med en liste over objekttyper, der skal udtrækkes fra hver tekstrække.

Funktionen returnerer en ny DataFrame med en separat kolonne for hver angivet objekttype, der indeholder udtrukne værdier for hver inputrække.

Skema-drevet ekstraktion

aifunc.ExtractLabel understøtter JSON Schema-definitioner til struktureret udtræk. Ud over de grundlæggende typer (string, , integernumber, og boolean), kan du bruge:

  • Enums: Begræns værdier til et fast sæt (for eksempel, "enum": ["midfielder", "striker", "defender"]).
  • Arrays: Definer elementskemaer via items (for eksempel, "type": "array", "items": {"type": "string"}).
  • Objekter med egenskaber: Angiv indlejrede felter med properties og deres typer.
  • Påkrævede felter: Marker obligatoriske felter med required for at sikre, at de altid er til stede i outputtet.
  • Ingen ekstra felter: Sæt additionalProperties=false til at forhindre modellen i at returnere felter uden for det definerede skema.
  • Nullbare værdier: Udtryk nullable typer (for eksempel type=["string", "null"]) for valgfri data.

Når den bruges i PySpark, ai.extract kører den som en distribueret Spark-transformation på tværs af Fabric Spark-partitioner.

Syntaks

from synapse.ml.spark import aifunc

Notat

PySpark-importstien er from synapse.ml.spark import aifunc. For pandaer, brug from synapse.ml import aifunc.

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

Parametre

Navn Beskrivelse
labels
Påkrævet
En matrix af strenge , der repræsenterer det sæt af objekttyper, der skal udtrækkes fra tekstværdierne i inputkolonnen.
input_col
Påkrævet
En streng , der indeholder navnet på en eksisterende kolonne med inputtekstværdier, der skal scannes efter de brugerdefinerede objekter.
aifunc.ExtractLabel
Valgfrit
En eller flere label-definitioner, der beskriver felterne, der skal udtrækkes. Se ExtractLabel-parametre.
error_col
Valgfrit
En streng , der indeholder navnet på en ny kolonne for at gemme eventuelle OpenAI-fejl, der skyldes behandling af hver inputtekstrække. Hvis du ikke angiver denne parameter, genereres der et standardnavn for fejlkolonnen. Hvis der ikke er nogen fejl i en inputrække, er værdien i denne kolonne null.

ExtractLabel-parametre

Navn Beskrivelse
label
Påkrævet
En streng , der repræsenterer den enhed, der skal udtrækkes fra inputtekstens værdier.
description
Valgfrit
En streng , der tilføjer ekstra kontekst til AI-modellen. Det kan indeholde krav, kontekst eller instruktioner, som AI'en skal overveje under udtrækningen.
max_items
Valgfrit
En int, der specificerer det maksimale antal genstande, der skal udtrækkes til denne etiket.
type
Valgfrit
JSON-skematype for den udtrukne værdi. Understøttede typer for denne klasse inkluderer string, number, integer, , booleanobject, , og array.
properties
Valgfrit
Yderligere JSON-skemaegenskaber for typen, såsom items, properties, , enum, required, og additionalProperties. Udtryk nullbare værdier med type=["string", "null"]. Se Strukturerede output: Understøttede skemaer.
raw_col
Valgfrit
En streng , der sætter kolonnenavnet for det rå LLM-svar. Det rå svar giver en liste over ordbogspar for hver entitetslabel, inklusive "reason" og "extraction_text".

Returnerer

Funktionen returnerer en Spark DataFrame med en ny kolonne for hver angivet objekttype. Kolonnen eller kolonnerne indeholder de enheder, der er udtrukket for hver række med inputtekst. Hvis der ikke findes et match, er resultatet null.

Standard-returtypen er en liste over strenge for hver label. Når ikke max_items er angivet, returneres flere matches som en liste. Hvis du angiver en anden type i konfigurationen aifunc.ExtractLabel (for eksempel type="integer"), er outputtet en liste over værdier af den type. Hvis du specificerer max_items=1, produceres en enkelt-element-liste for den pågældende label. Elementtypen i hver liste følger det skema, du angiver.

Eksempel

# 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)

Output:

Skærmbillede, der viser en ny dataramme med kolonnerne 'navn', 'erhverv' og 'by', der indeholder de data, der er udtrukket fra den oprindelige dataramme.

Multimodal input

For at udtrække felter fra billeder, PDF'er eller tekstfiler, sæt input_col_type="path". For opsætning, se Brug multimodal input med AI-funktioner.

# 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)