Share via


Oktatóanyag: Text Analytics az Azure AI-szolgáltatásokkal

Text Analytics egy Olyan Azure AI-szolgáltatás, amely lehetővé teszi szövegbányászatot és szövegelemzést természetes nyelvi feldolgozási (NLP) funkciókkal. Ebben az oktatóanyagban megtudhatja, hogyan használhatja Text Analytics strukturálatlan szöveg elemzésére Azure Synapse Analyticsben.

Ez az oktatóanyag bemutatja, hogyan használhat szövegelemzést a SynapseML-sel a következő célokra:

  • Hangulatfeliratok észlelése a mondat vagy a dokumentum szintjén
  • Adott szövegbevitel nyelvének azonosítása
  • Entitások felismerése egy jól ismert tudásbázis
  • Kulcsfázisok kinyerása szövegből
  • Különböző entitások azonosítása a szövegben, és előre meghatározott osztályokba vagy típusokba kategorizálni őket
  • Bizalmas entitások azonosítása és ismételt kiosztása egy adott szövegben

Ha nem rendelkezik Azure-előfizetéssel, a kezdés előtt hozzon létre egy ingyenes fiókot.

Előfeltételek

Bevezetés

Nyissa meg Synapse Studio, és hozzon létre egy új jegyzetfüzetet. Első lépésként importálja a SynapseML-t.

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

Szövegelemzés konfigurálása

Használja a konfigurálás előtti lépésekben konfigurált csatolt szövegelemzést.

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

Szöveg hangulata

A Szöveges hangulatelemzés lehetővé teszi a hangulatfeliratok (például a "negatív", a "semleges" és a "pozitív") és a megbízhatósági pontszámok észlelését a mondat és a dokumentum szintjén. Az engedélyezett nyelvek listáját az Text Analytics API támogatott nyelvei című témakörben találja.


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

Várt eredmények

szöveg Hangulat
Olyan boldog vagyok ma, a napsütötte! pozitív
Frusztrált vagyok a csúcsforgalom miatt negatív
A Sparkon futó Azure AI-szolgáltatások nem megfelelőek pozitív

Nyelvi detektor

A Language Detector kiértékeli az egyes dokumentumok szövegbevitelét, és olyan pontszámmal adja vissza a nyelvi azonosítókat, amelyek az elemzés erősségét jelzik. Ez a funkció véletlen szöveget gyűjtő tartalom áruházak számára hasznos, amikor a nyelv ismeretlen. Az engedélyezett nyelvek listáját az Text Analytics API támogatott nyelvei című témakörben találja.

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

Várt eredmények

A 3.1-es verziós nyelvérzékelő várt eredményei

Entitásérzékelő

Az Entitásérzékelő egy jól ismert tudásbázis mutató hivatkozásokkal rendelkező elismert entitások listáját adja vissza. Az engedélyezett nyelvek listáját az Text Analytics API támogatott nyelvei című témakörben találja.

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

Várt eredmények

Az entitásérzékelő 3.1-s verzióra vonatkozó várt eredményei


Kulcskifejezés-kiválasztó

A kulcskifejezések kinyerése strukturálatlan szöveget értékel ki, és visszaadja a kulcskifejezések listáját. Ez a funkció akkor hasznos, ha szeretné gyorsan azonosítani a dokumentum gyűjtemény fő témáit. Az engedélyezett nyelvek listáját az Text Analytics API támogatott nyelvei című témakörben találja.

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

Várt eredmények

szöveg keyPhrases
Helló világ. Ez egy szövegbeviteli szöveg, amit szeretek. "["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"]"

Nevesített entitásfelismerés (NER)

A nevesített entitásfelismerés (NER) lehetővé teszi a különböző entitások azonosítását a szövegben, és előre meghatározott osztályokba vagy típusokba sorolhatja őket, például: személy, hely, esemény, termék és szervezet. Az engedélyezett nyelvek listáját az Text Analytics API támogatott nyelvei című témakörben találja.

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

Várt eredmények

A nevesített entitásfelismerés 3.1-hez várt eredményei


Személyazonosításra alkalmas adatok (PII) V3.1

A PII-funkció a NER része, és képes azonosítani és újra kiírni azokat a bizalmas entitásokat, amelyek egy adott személyhez vannak társítva, például: telefonszám, e-mail cím, levelezési cím, útlevélszám. Az engedélyezett nyelvek listáját az Text Analytics API támogatott nyelvei című témakörben találja.

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

Várt eredmények

A személyes azonosításra alkalmas adatok 3.1-s verziójának várt eredményei


Az erőforrások eltávolítása

A Spark-példány leállításához zárja be a csatlakoztatott munkameneteket (jegyzetfüzeteket). A készlet leáll az Apache Spark-készletben megadott tétlenségi idő elérésekor. A leállítási munkamenetet a jegyzetfüzet jobb felső sarkában található állapotsoron is kiválaszthatja.

Képernyőkép az állapotsor Munkamenet leállítása gombjáról.

Következő lépések