Dela via


Självstudie: Textanalys med Azure AI-tjänster

I den här självstudien lär du dig hur du använder Textanalys för att analysera ostrukturerad text i Azure Synapse Analytics. Textanalys är en Azure AI-tjänst som gör att du kan utföra textutvinning och textanalys med NLP-funktioner (Natural Language Processing).

Den här självstudien visar hur du använder textanalys med SynapseML för att:

  • Identifiera sentimentetiketter på menings- eller dokumentnivå
  • Identifiera språket för en viss textinmatning
  • Identifiera entiteter från en text med länkar till en välkänd kunskapsbas
  • Extrahera nyckelfraser från en text
  • Identifiera olika entiteter i text och kategorisera dem i fördefinierade klasser eller typer
  • Identifiera och redigera känsliga entiteter i en viss text

Om du inte har någon Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.

Förutsättningar

Kom igång

Öppna Synapse Studio och skapa en ny notebook-fil. Kom igång genom att importera SynapseML.

import synapse.ml
from synapse.ml.services import *
from pyspark.sql.functions import col

Konfigurera textanalys

Använd den länkade textanalys som du konfigurerade i förkonfigurationsstegen.

linked_service_name = "<Your linked service for text analytics>"

Textsentiment

Analys av textsentiment är ett sätt att identifiera sentimentetiketterna (till exempel "negativa", "neutrala" och "positiva") och konfidenspoäng på menings- och dokumentnivå. Se språk som stöds i Textanalys API för listan över aktiverade språk.


# Create a dataframe that's tied to it's column names
df = spark.createDataFrame([
  ("I am so happy today, it's sunny!", "en-US"),
  ("I am frustrated by this rush hour traffic", "en-US"),
  ("The Azure AI services on spark aint bad", "en-US"),
], ["text", "language"])

# Run the Text Analytics service with options
sentiment = (TextSentiment()
    .setLinkedService(linked_service_name)
    .setTextCol("text")
    .setOutputCol("sentiment")
    .setErrorCol("error")
    .setLanguageCol("language"))

# Show the results of your text query in a table format
results = sentiment.transform(df)

display(results
    .withColumn("sentiment", col("sentiment").getItem("document").getItem("sentences")[0].getItem("sentiment"))
    .select("text", "sentiment"))

Förväntat resultat

text känsla
Jag är så glad idag, det är soligt! positivt
Jag är frustrerad över denna rusningstrafik negativt
Azure AI-tjänsterna på spark aint bad neutralt

Språkidentifiering

Språkidentifieringen utvärderar textindata för varje dokument och returnerar språkidentifierare med en poäng som anger analysens styrka. Den här funktionen är användbar för innehållslager samlar in godtycklig text, där språket är okänt. Se språk som stöds i Textanalys API för listan över aktiverade språk.

# Create a dataframe that's tied to it's column names
df = spark.createDataFrame([
  ("Hello World",),
  ("Bonjour tout le monde",),
  ("La carretera estaba atascada. Había mucho tráfico el día de ayer.",),
  ("你好",),
  ("こんにちは",),
  (":) :( :D",)
], ["text",])

# Run the Text Analytics service with options
language = (LanguageDetector()
    .setLinkedService(linked_service_name)
    .setTextCol("text")
    .setOutputCol("language")
    .setErrorCol("error"))

# Show the results of your text query in a table format
display(language.transform(df))

Förväntat resultat

Förväntade resultat för språkidentifiering V3.1

Entitetsidentifiering

Entitetsidentifieringen returnerar en lista över identifierade entiteter med länkar till en välkänd kunskapsbas. Se språk som stöds i Textanalys API för listan över aktiverade språk.

df = spark.createDataFrame([
    ("1", "Microsoft released Windows 10"),
    ("2", "In 1975, Bill Gates III and Paul Allen founded the company.")
], ["if", "text"])

entity = (EntityDetector()
    .setLinkedService(linked_service_name)
    .setLanguage("en")
    .setOutputCol("replies")
    .setErrorCol("error"))

display(entity.transform(df).select("if", "text", col("replies").getItem("document").getItem("entities").alias("entities")))

Förväntat resultat

Förväntade resultat för entitetsidentifiering v3.1


Extraktor för nyckelfras

Extrahering av nyckelfras utvärderar ostrukturerad text och returnerar en lista med nyckelfraser. Den här funktionen är användbar om du snabbt behöver identifiera de viktigaste punkterna i en samling av dokument. Se språk som stöds i Textanalys API för listan över aktiverade språk.

df = spark.createDataFrame([
    ("en", "Hello world. This is some input text that I love."),
    ("fr", "Bonjour tout le monde"),
    ("es", "La carretera estaba atascada. Había mucho tráfico el día de ayer.")
], ["lang", "text"])

keyPhrase = (KeyPhraseExtractor()
    .setLinkedService(linked_service_name)
    .setLanguageCol("lang")
    .setOutputCol("replies")
    .setErrorCol("error"))

display(keyPhrase.transform(df).select("text", col("replies").getItem("document").getItem("keyPhrases").alias("keyPhrases")))

Förväntat resultat

text keyPhrases
Hej världen. Detta är några indatatext som jag älskar. "["Hello world","input text"]"
Bonjour tout le monde "["Bonjour","monde"]"
La carretera estaba atascada. Había mucho tráfico el día de ayer. "["mucho tráfico","día","carretera","ayer"]"

Igenkänning av namngiven enhet (NER)

Med namnet Entity Recognition (NER) kan du identifiera olika entiteter i text och kategorisera dem i fördefinierade klasser eller typer som: person, plats, händelse, produkt och organisation. Se språk som stöds i Textanalys API för listan över aktiverade språk.

df = spark.createDataFrame([
    ("1", "en", "I had a wonderful trip to Seattle last week."),
    ("2", "en", "I visited Space Needle 2 times.")
], ["id", "language", "text"])

ner = (NER()
    .setLinkedService(linked_service_name)
    .setLanguageCol("language")
    .setOutputCol("replies")
    .setErrorCol("error"))

display(ner.transform(df).select("text", col("replies").getItem("document").getItem("entities").alias("entities")))

Förväntat resultat

Förväntade resultat för namngiven entitetsigenkänning v3.1


Personligt identifierbar information (PII) V3.1

PII-funktionen är en del av NER och kan identifiera och redigera känsliga entiteter i text som är associerade med en enskild person, till exempel: telefonnummer, e-postadress, postadress, passnummer. Se språk som stöds i Textanalys API för listan över aktiverade språk.

df = spark.createDataFrame([
    ("1", "en", "My SSN is 859-98-0987"),
    ("2", "en", "Your ABA number - 111000025 - is the first 9 digits in the lower left hand corner of your personal check."),
    ("3", "en", "Is 998.214.865-68 your Brazilian CPF number?")
], ["id", "language", "text"])

pii = (PII()
    .setLinkedService(linked_service_name)
    .setLanguageCol("language")
    .setOutputCol("replies")
    .setErrorCol("error"))

display(pii.transform(df).select("text", col("replies").getItem("document").getItem("entities").alias("entities")))

Förväntat resultat

Förväntade resultat för personlig identifierbar information v3.1


Rensa resurser

För att säkerställa att Spark-instansen stängs av avslutar du alla anslutna sessioner (notebook-filer). Poolen stängs av när den inaktiva tid som anges i Apache Spark-poolen har nåtts. Du kan också välja stoppa session från statusfältet längst upp till höger i anteckningsboken.

Skärmbild som visar knappen Stoppa session i statusfältet.