Udostępnij za pośrednictwem


Samouczek: analiza tekstu z usługami Azure AI

Z tego samouczka dowiesz się, jak używać analiza tekstu do analizowania tekstu bez struktury w usłudze Azure Synapse Analytics. analiza tekstu to usługi sztucznej inteligencji platformy Azure, które umożliwiają wyszukiwanie tekstu i analizę tekstu za pomocą funkcji przetwarzania języka naturalnego (NLP).

W tym samouczku pokazano używanie analizy tekstu z usługą SynapseML w celu:

  • Wykrywanie etykiet tonacji na poziomie zdania lub dokumentu
  • Identyfikowanie języka dla danego tekstu wejściowego
  • Rozpoznawanie jednostek z tekstu za pomocą linków do dobrze znanego baza wiedzy
  • Wyodrębnianie kluczowych fraz z tekstu
  • Identyfikowanie różnych jednostek w tekście i kategoryzowanie ich do wstępnie zdefiniowanych klas lub typów
  • Identyfikowanie i redagowanie poufnych jednostek w danym tekście

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.

Wymagania wstępne

Rozpocznij

Otwórz program Synapse Studio i utwórz nowy notes. Aby rozpocząć, zaimportuj usługę SynapseML.

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

Konfigurowanie analizy tekstu

Użyj połączonej analizy tekstu skonfigurowanej w krokach wstępnej konfiguracji.

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

Tonacja tekstu

Analiza tonacji tekstu umożliwia wykrywanie etykiet tonacji (takich jak "negatywne", "neutralne" i "pozytywne") oraz wyniki ufności na poziomie zdania i dokumentu. Aby uzyskać listę obsługiwanych języków, zobacz Obsługiwane języki w interfejsie API analiza tekstu.


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

Oczekiwane wyniki

text Sentyment
Jestem dziś bardzo szczęśliwy, to słoneczne! positive
Jestem sfrustrowany tym ruchem w godzinach szczytu negative
Usługi sztucznej inteligencji platformy Azure na platformie Spark są złe neutral

Detektor języka

Detektor języka ocenia wprowadzanie tekstu dla każdego dokumentu i zwraca identyfikatory języka z wynikiem wskazującym siłę analizy. Ta możliwość jest przydatna w przypadku magazynów zawartości przechowujących dowolne teksty, których język nie jest znany. Aby uzyskać listę obsługiwanych języków, zobacz Obsługiwane języki w interfejsie API analiza tekstu.

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

Oczekiwane wyniki

Oczekiwane wyniki narzędzia do wykrywania języka w wersji 3.1

Detektor jednostek

Wykrywacz jednostek zwraca listę rozpoznanych jednostek z linkami do dobrze znanego baza wiedzy. Aby uzyskać listę obsługiwanych języków, zobacz Obsługiwane języki w interfejsie API analiza tekstu.

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

Oczekiwane wyniki

Oczekiwane wyniki narzędzia do wykrywania jednostek w wersji 3.1


Moduł wyodrębniania kluczowych fraz

Wyodrębnianie kluczowych fraz ocenia tekst bez struktury i zwraca listę kluczowych fraz. Ta możliwość jest przydatna, jeśli chcesz szybko zidentyfikować główne tematy w kolekcji dokumentów. Aby uzyskać listę obsługiwanych języków, zobacz Obsługiwane języki w interfejsie API analiza tekstu.

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

Oczekiwane wyniki

text keyPhrases
Cześć ludzie. To jest jakiś tekst wejściowy, który kocham. "["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"]"

Rozpoznawanie jednostek nazwanych

Rozpoznawanie jednostek nazwanych (NER) to możliwość identyfikowania różnych jednostek w tekście i kategoryzowania ich w wstępnie zdefiniowanych klas lub typów, takich jak: osoba, lokalizacja, zdarzenie, produkt i organizacja. Aby uzyskać listę obsługiwanych języków, zobacz Obsługiwane języki w interfejsie API analiza tekstu.

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

Oczekiwane wyniki

Oczekiwane wyniki dla nazwanego rozpoznawania jednostek w wersji 3.1


Dane osobowe (PII) w wersji 3.1

Funkcja pii jest częścią NER i może identyfikować i redagować poufne jednostki w tekście, które są skojarzone z osobą indywidualną, takie jak: numer telefonu, adres e-mail, adres e-mail, adres wysyłkowy, numer paszportu. Aby uzyskać listę obsługiwanych języków, zobacz Obsługiwane języki w interfejsie API analiza tekstu.

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

Oczekiwane wyniki

Oczekiwane wyniki dla danych osobowych w wersji 3.1


Czyszczenie zasobów

Aby upewnić się, że wystąpienie platformy Spark jest wyłączone, zakończ wszystkie połączone sesje (notesy). Pula zostanie zamknięta po osiągnięciu czasu bezczynności określonego w puli platformy Apache Spark. Możesz również wybrać pozycję Zatrzymaj sesję na pasku stanu w prawym górnym rogu notesu.

Zrzut ekranu przedstawiający przycisk Zatrzymaj sesję na pasku stanu.