Tutorial: Text Analytics dengan layanan Azure AI

Text Analytics adalah layanan Azure AI yang memungkinkan Anda melakukan penambangan teks dan analisis teks dengan fitur Natural Language Processing (NLP). Dalam tutorial ini, Anda akan belajar cara menggunakan Text Analytics untuk menganalisis teks yang tidak terstruktur di Azure Synapse Analytics.

Tutorial ini menunjukkan cara menggunakan analisis teks dengan SynapseML untuk:

  • Mendeteksi label sentimen pada tingkat kalimat atau dokumen
  • Mengidentifikasi bahasa untuk input teks yang diberikan
  • Mengenali entitas dari teks dengan tautan ke basis pengetahuan terkenal
  • Mengekstrak fase kunci dari teks
  • Mengidentifikasi entitas yang berbeda dalam teks dan mengategorikannya ke dalam kelas atau jenis yang telah ditentukan sebelumnya
  • Mengidentifikasi dan menghapus entitas sensitif dalam teks tertentu

Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum memulai.

Prasyarat

Mulai

Buka Synapse Studio dan buat notebook baru. Untuk memulai, impor SynapseML.

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

Mengonfigurasi analisis teks

Gunakan analisis teks tertaut yang Anda konfigurasikan dalam langkah-langkah pra-konfigurasi .

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

Sentimen Teks

Analisis Sentimen Teks menyediakan cara untuk mendeteksi label sentimen (seperti "negatif", "netral" dan "positif") dan skor kepercayaan pada kalimat dan tingkat dokumen. Lihat bahasa yang didukung di API Analisis Teks untuk daftar bahasa yang diaktifkan.


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

Hasil yang diharapkan

teks sentimen
Saya sangat senang karena hari ini cuacanya cerah! positif
Saya stres karena lalu lintas pada jam sibuk ini negatif
Layanan Azure AI pada spark aint buruk positif

Detektor Bahasa

Detektor Bahasa mengevaluasi input teks untuk setiap dokumen dan mengembalikan pengidentifikasi bahasa dengan skor yang menunjukkan kekuatan analisis. Kemampuan ini berguna untuk penyimpanan konten yang mengumpulkan teks acak, saat bahasa tidak diketahui. Lihat bahasa yang didukung di API Analisis Teks untuk daftar bahasa yang diaktifkan.

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

Hasil yang diharapkan

Hasil yang diharapkan untuk detektor bahasa V3.1

Detektor Entitas

Detektor Entitas mengembalikan daftar entitas yang diakui dengan tautan ke basis pengetahuan terkenal. Lihat bahasa yang didukung di API Analisis Teks untuk daftar bahasa yang diaktifkan.

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

Hasil yang diharapkan

Hasil yang diharapkan untuk detektor entitas v3.1


Ekstraktor Frasa Kunci

Ekstraksi Frasa Kunci mengevaluasi teks yang tidak terstruktur dan mengembalikan daftar frasa kunci. Kemampuan ini berguna jika Anda perlu dengan cepat mengidentifikasi poin utama dalam kumpulan dokumen. Lihat bahasa yang didukung di API Analisis Teks untuk daftar bahasa yang diaktifkan.

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

Hasil yang diharapkan

teks keyPhrases
Halo dunia. Ini adalah beberapa teks input yang saya sukai. "["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"]"

Pengenalan Entitas Karakter (NER)

Pengenalan Entitas Karakter (NER) adalah kemampuan untuk mengidentifikasi entitas yang berbeda dalam teks dan mengategorikannya ke dalam kelas atau jenis yang telah ditentukan sebelumnya seperti: orang, lokasi, peristiwa, produk, dan organisasi. Lihat bahasa yang didukung di API Analisis Teks untuk daftar bahasa yang diaktifkan.

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

Hasil yang diharapkan

Hasil yang diharapkan untuk pengenalan entitas karakter v3.1


Informasi Pengidentifikasi Pribadi (PII) V3.1

Fitur PII adalah bagian dari NER dan dapat mengidentifikasi dan meredaksi entitas sensitif dalam teks yang terkait dengan orang perorangan seperti: nomor telepon, alamat email, alamat surat, nomor paspor. Lihat bahasa yang didukung di API Analisis Teks untuk daftar bahasa yang diaktifkan.

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

Hasil yang diharapkan

Hasil yang diharapkan untuk informasi identitas pribadi v3.1


Membersihkan sumber daya

Untuk memastikan instans Spark dimatikan, akhiri semua sesi yang tersambung (notebook). Kumpulan dimatikan ketika waktu siaga yang ditentukan di kumpulan Apache Spark tercapai. Anda juga dapat memilih hentikan sesi dari bilah status di kanan atas notebook.

Cuplikan layar memperlihatkan tombol Hentikan sesi pada bilah status.

Langkah berikutnya