Share via


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

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

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 nyckelfaser 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 kan du skapa 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.cognitive import *
from pyspark.sql.functions import col

Konfigurera textanalys

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

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

Textsentiment

Textsentimentanalysen är ett sätt att identifiera sentimentetiketterna (till exempel "negativ", "neutral" och "positiv") och förtroendepoäng på menings- och dokumentnivå. I språk som stöds i Textanalys API finns en lista över aktiverade språk.


# Create a dataframe that's tied to it's column names
df = spark.createDataFrame([
  ("I am so happy today, its 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å lycklig idag, dess soliga! positivt
Jag är frustrerad över denna rusningstrafik negativt
Azure AI-tjänsterna på Spark är inte bra positivt

Språkidentifiering

Språkidentifieringen utvärderar textindata för varje dokument och returnerar språkidentifierare med en poäng som anger styrkan i analysen. Den här funktionen är användbar för innehållslager samlar in godtycklig text, där språket är okänt. I språk som stöds i Textanalys API finns en lista ö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. I språk som stöds i Textanalys API finns en lista ö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


Nyckelfrasextraktor

Extrahering av nyckelfraser 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. I språk som stöds i Textanalys API finns en lista ö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 entitet (NER)

Igenkänning av namngiven entitet (NER) är möjligheten att identifiera olika entiteter i text och kategorisera dem i fördefinierade klasser eller typer som: person, plats, händelse, produkt och organisation. I språk som stöds i Textanalys API finns en lista ö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. I språk som stöds i Textanalys API finns en lista ö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 inaktivitetstid som anges i Apache Spark-poolen nås. 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.

Nästa steg