Megosztás a következőn keresztül:


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

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

Ez az oktatóanyag bemutatja, hogy a Text Analytics és a SynapseML a következő célokra használható:

  • Hangulatfeliratok észlelése mondat- vagy dokumentumszinten
  • Adott szövegbevitel nyelvének azonosítása
  • Entitások felismerése egy jól ismert tudásbázis
  • Kulcskifejezések kinyerése szövegből
  • A szöveg különböző entitásainak azonosítása és kategorizálása előre definiált osztályokba vagy típusokba
  • Bizalmas entitások azonosítása és ismételt kiírása egy adott szövegben

Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.

Előfeltételek

Első lépések

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

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

Szövegelemzés konfigurálása

Használja az előre konfigurálási lépésekben konfigurált csatolt szövegelemzést.

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

Szöveg hangulata

A szöveges hangulatelemzés lehetővé teszi a hangulatcímkék (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 dokumentumszinten. Az engedélyezett nyelvek listáját a Text Analytics API támogatott nyelvei között találja.


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

Várt eredmények

text Hangulat
Olyan boldog vagyok ma, hogy napsütés van! pozitív
Frusztrált ez a csúcsforgalom negatív
Az Azure AI-szolgáltatások a Sparkon nem megfelelőek semleges

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 a Text Analytics API támogatott nyelvei között 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 V3.1 nyelvdetektor várható eredményei

Entitásérzékelő

Az Entitásérzékelő egy jól ismert tudásbázis mutató hivatkozásokkal rendelkező felismert entitások listáját adja vissza. Az engedélyezett nyelvek listáját a Text Analytics API támogatott nyelvei között 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-ben várt eredményei


Kulcskifejezés-kinyerő

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 a Text Analytics API támogatott nyelvei között 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

text 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ások felismerése (NER)

A nevesített entitásfelismerés (NER) lehetővé teszi a szöveg különböző entitásainak azonosítását, és előre meghatározott osztályokba vagy típusokba kategorizálhatja őket, például: személy, hely, esemény, termék és szervezet. Az engedélyezett nyelvek listáját a Text Analytics API támogatott nyelvei között 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

Az elnevezett entitásfelismerés 3.1-ben várt eredményei


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

A PII szolgáltatás 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 a Text Analytics API támogatott nyelvei között 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 várható eredményei 3.1-ben


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

A Spark-példány leállítása érdekében 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.