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
- Azure Synapse Analytics-munkaterület alapértelmezett tárolóként konfigurált Azure Data Lake Storage Gen2 tárfiókkal. Önnek kell lennie annak a Data Lake Storage Gen2 fájlrendszernek a storage blobadatok közreműködőjének, amellyel dolgozik.
- Spark-készlet a Azure Synapse Analytics-munkaterületen. Részletekért lásd: Spark-készlet létrehozása Azure Synapse.
- Az Azure AI-szolgáltatások konfigurálása Azure Synapse című oktatóanyagban ismertetett konfigurálás előtti lépések.
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
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
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
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
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.