Share via


Zelfstudie: Text Analytics met Azure AI-services

Text Analytics is een Azure AI-service waarmee u tekstanalyse en tekstanalyse kunt uitvoeren met NLP-functies (Natural Language Processing). In deze zelfstudie leert u hoe u Text Analytics kunt gebruiken om ongestructureerde tekst in Azure Synapse Analytics te analyseren.

In deze zelfstudie wordt het gebruik van tekstanalyse met SynapseML gedemonstreert voor het volgende:

  • Gevoelslabels op zin- of documentniveau detecteren
  • De taal voor een bepaalde tekstinvoer identificeren
  • Entiteiten herkennen vanuit een tekst met koppelingen naar een bekende Knowledge Base
  • Belangrijke fasen uit een tekst extraheren
  • Verschillende entiteiten in tekst identificeren en deze categoriseren in vooraf gedefinieerde klassen of typen
  • Gevoelige entiteiten in een bepaalde tekst identificeren en redigeren

Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

Vereisten

Aan de slag

Open Synapse Studio en maak een nieuw notitieblok. Importeer SynapseML om aan de slag te gaan.

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

Tekstanalyse configureren

Gebruik de gekoppelde tekstanalyse die u hebt geconfigureerd in de stappen vóór configuratie .

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

Tekstsentiment

De analyse van tekstsentiment biedt een manier om de gevoelslabels (zoals 'negatief', 'neutraal' en 'positief') en betrouwbaarheidsscores op zins- en documentniveau te detecteren. Zie ondersteunde talen in Text Analytics API voor de lijst met ingeschakelde talen.


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

Verwachte resultaten

tekst gevoel
I am so happy today, its sunny! (Ik ben zo blij vandaag, de zon schijnt!) positief
I am frustrated by this rush hour traffic (Ik ben geïrriteerd vanwege het verkeer in de spits) negatief
De Azure AI-services op spark-aint slecht positief

Taaldetector

Language Detector evalueert tekstinvoer voor elk document en retourneert taal-id's met een score die de sterkte van de analyse aangeeft. Deze mogelijkheid is handig voor inhoudsarchieven die willekeurige tekst verzamelen, waarin de taal onbekend is. Zie ondersteunde talen in Text Analytics API voor de lijst met ingeschakelde talen.

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

Verwachte resultaten

Verwachte resultaten voor taaldetector V3.1

Entiteitsdetector

Entity Detector retourneert een lijst met herkende entiteiten met koppelingen naar een bekende Knowledge Base. Zie ondersteunde talen in Text Analytics API voor de lijst met ingeschakelde talen.

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

Verwachte resultaten

Verwachte resultaten voor entiteitsdetector v3.1


Sleuteltermextractor

Sleuteltermextractie evalueert ongestructureerde tekst en retourneert een lijst met sleuteltermen. Deze functie is handig als u snel de belangrijkste punten moet identificeren van een verzameling documenten. Zie ondersteunde talen in Text Analytics API voor de lijst met ingeschakelde talen.

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

Verwachte resultaten

tekst keyPhrases
Hallo mensen. Dit is een invoertekst waar ik dol op ben. "["Hallo wereld","invoertekst"]"
Bonjour tout le monde "["Bonjour","monde"]"
La lana estaba atascada. Había mucho tráfico el día de ayer. "["mucho tráfico","día","engelstalig","ayer"]"

NER (Herkenning van benoemde entiteiten)

Named Entity Recognition (NER) is de mogelijkheid om verschillende entiteiten in tekst te identificeren en deze te categoriseren in vooraf gedefinieerde klassen of typen, zoals: persoon, locatie, gebeurtenis, product en organisatie. Zie ondersteunde talen in Text Analytics API voor de lijst met ingeschakelde talen.

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

Verwachte resultaten

Verwachte resultaten voor herkenning van benoemde entiteiten v3.1


Persoonlijk identificeerbare informatie (PII) V3.1

De functie PII maakt deel uit van NER en kan gevoelige entiteiten identificeren en redigeren in tekst die zijn gekoppeld aan een individuele persoon, zoals: telefoonnummer, e-mailadres, postadres, paspoortnummer. Zie ondersteunde talen in Text Analytics API voor de lijst met ingeschakelde talen.

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

Verwachte resultaten

Verwachte resultaten voor persoonsgegevens v3.1


Resources opschonen

Om ervoor te zorgen dat de Spark-instantie wordt afgesloten, beëindigt u alle verbonden sessies (notebooks). De pool wordt afgesloten wanneer de niet-actieve tijd is bereikt die is opgegeven in de Apache Spark-pool. U kunt sessie stoppen ook selecteren in de statusbalk rechtsboven in het notitieblok.

Schermopname van de knop Sessie stoppen op de statusbalk.

Volgende stappen