Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A Tradução é um dos Serviços de IA do Azure que permite fazer a tradução de idiomas e outras operações relacionadas ao idioma. Neste tutorial, você aprenderá a usar o Tradutor para criar soluções inteligentes em vários idiomas no Azure Synapse Analytics.
Este tutorial demonstra como usar o tradutor com o MMLSpark para:
- Traduzir o texto
- Transcrição de texto
- Detectar o idioma
- Interromper a frase
- Pesquisa no dicionário
- Exemplo de dicionário
Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.
Pré-requisitos
- Workspace do Azure Synapse Analytics com uma conta de armazenamento do Azure Data Lake Storage Gen2 configurada como o armazenamento padrão. Você precisa ser Colaborador de Dados do Storage Blob do sistema de arquivos Data Lake Storage Gen2 com o qual você trabalha.
- Pool do Spark no workspace do Azure Synapse Analytics. Para obter detalhes, confira Criar um Pool do Spark no Azure Synapse.
- Etapas de pré-configuração descritas no tutorial Como configurar os serviços de IA do Azure no Azure Synapse.
Introdução
Abra o Synapse Studio e crie um notebook. Para começar, importe o MMLSpark.
import mmlspark
from mmlspark.cognitive import *
from notebookutils import mssparkutils
from pyspark.sql.functions import col, flatten
Configurar o tradutor
Use o tradutor vinculado configurado nas etapas de pré-configuração.
ai_service_name = "<Your linked service for translator>"
Traduzir o texto
A principal operação do serviço de Tradução é traduzir o texto.
df = spark.createDataFrame([
(["Hello, what is your name?", "Bye"],)
], ["text",])
translate = (Translate()
.setLinkedService(ai_service_name)
.setTextCol("text")
.setToLanguage(["zh-Hans", "fr"])
.setOutputCol("translation")
.setConcurrency(5))
display(translate
.transform(df)
.withColumn("translation", flatten(col("translation.translations")))
.withColumn("translation", col("translation.text"))
.select("translation"))
Resultados esperados
["你好,你叫什么名字?","Bonjour, quel est votre nom?","再见","Au revoir"]
Transliterar o texto
A transliteração é o processo de converter uma palavra ou frase do script (alfabeto) de uma linguagem para outra com base na similaridade fonética.
transliterateDf = spark.createDataFrame([
(["こんにちは", "さようなら"],)
], ["text",])
transliterate = (Transliterate()
.setLinkedService(ai_service_name)
.setLanguage("ja")
.setFromScript("Jpan")
.setToScript("Latn")
.setTextCol("text")
.setOutputCol("result"))
display(transliterate
.transform(transliterateDf)
.withColumn("text", col("result.text"))
.withColumn("script", col("result.script"))
.select("text", "script"))
Resultados esperados
text | Script |
---|---|
"["Kon'nichiwa","sayonara"]" | "["Latn","Latn"]" |
Detectar o idioma
Se você souber que precisará de tradução, mas não souber o idioma do texto que será enviado ao serviço de Tradução, poderá usar a operação de detecção de idioma.
detectDf = spark.createDataFrame([
(["Hello, what is your name?"],)
], ["text",])
detect = (Detect()
.setLinkedService(ai_service_name)
.setTextCol("text")
.setOutputCol("result"))
display(detect
.transform(detectDf)
.withColumn("language", col("result.language"))
.select("language"))
Resultados esperados
"["en"]"
Interromper a frase
Identifica o posicionamento dos limites de frase em uma parte do texto.
bsDf = spark.createDataFrame([
(["Hello, what is your name?"],)
], ["text",])
breakSentence = (BreakSentence()
.setLinkedService(ai_service_name)
.setTextCol("text")
.setOutputCol("result"))
display(breakSentence
.transform(bsDf)
.withColumn("sentLen", flatten(col("result.sentLen")))
.select("sentLen"))
Resultados esperados
"[25]"
Pesquisa em dicionário (traduções alternativas)
Com o ponto de extremidade, você pode obter traduções alternativas para uma palavra ou frase.
dictDf = spark.createDataFrame([
(["fly"],)
], ["text",])
dictionaryLookup = (DictionaryLookup()
.setLinkedService(ai_service_name)
.setFromLanguage("en")
.setToLanguage("es")
.setTextCol("text")
.setOutputCol("result"))
display(dictionaryLookup
.transform(dictDf)
.withColumn("translations", flatten(col("result.translations")))
.withColumn("normalizedTarget", col("translations.normalizedTarget"))
.select("normalizedTarget"))
Resultados esperados
normalizedTarget |
---|
"["volar","mosca","operan","pilotar","moscas","marcha"]" |
Exemplos de dicionário (traduções no contexto)
Depois de executar uma pesquisa em dicionário, você pode passar o texto de origem e a tradução para o ponto de extremidade de dicionário/exemplos para obter uma lista de exemplos que mostram os dois termos no contexto de uma frase ou oração.
dictDf = spark.createDataFrame([
([("fly", "volar")],)
], ["textAndTranslation",])
dictionaryExamples = (DictionaryExamples()
.setLinkedService(ai_service_name)
.setFromLanguage("en")
.setToLanguage("es")
.setTextAndTranslationCol("textAndTranslation")
.setOutputCol("result"))
display(dictionaryExamples
.transform(dictDf)
.withColumn("examples", flatten(col("result.examples")))
.select("examples"))
Resultados esperados
[{"sourcePrefix":"I mean, for a guy who could ","sourceSuffix":".","targetPrefix":"Quiero decir, para un tipo que podía ","targetTerm":"volar","sourceTerm":"fly","targetSuffix":"."},{"sourcePrefix":"Now it's time to make you ","sourceSuffix":".","targetPrefix":"Ahora es hora de que te haga ","targetTerm":"volar","sourceTerm":"fly","targetSuffix":"."},{"sourcePrefix":"One happy thought will make you ","sourceSuffix":".","targetPrefix":"Uno solo te hará ","targetTerm":"volar","sourceTerm":"fly","targetSuffix":"."},{"sourcePrefix":"They need machines to ","sourceSuffix":".","targetPrefix":"Necesitan máquinas para ","targetTerm":"volar","sourceTerm":"fly","targetSuffix":"."},{"sourcePrefix":"That should really ","sourceSuffix":".","targetPrefix":"Eso realmente debe ","targetTerm":"volar","sourceTerm":"fly","targetSuffix":"."},{"sourcePrefix":"It sure takes longer when you can't ","sourceSuffix":".","targetPrefix":"Lleva más tiempo cuando no puedes ","targetTerm":"volar","sourceTerm":"fly","targetSuffix":"."},{"sourcePrefix":"I have to ","sourceSuffix":" home in the morning.","targetPrefix":"Tengo que ","targetTerm":"volar","sourceTerm":"fly","targetSuffix":" a casa por la mañana."},{"sourcePrefix":"You taught me to ","sourceSuffix":".","targetPrefix":"Me enseñaste a ","targetTerm":"volar","sourceTerm":"fly","targetSuffix":"."},{"sourcePrefix":"I think you should ","sourceSuffix":" with the window closed.","targetPrefix":"Creo que debemos ","targetTerm":"volar","sourceTerm":"fly","targetSuffix":" con la ventana cerrada."},{"sourcePrefix":"They look like they could ","sourceSuffix":".","targetPrefix":"Parece que pudieran ","targetTerm":"volar","sourceTerm":"fly","targetSuffix":"."},{"sourcePrefix":"But you can ","sourceSuffix":", for instance?","targetPrefix":"Que puedes ","targetTerm":"volar","sourceTerm":"fly","targetSuffix":", por ejemplo."},{"sourcePrefix":"At least until her kids can be able to ","sourceSuffix":".","targetPrefix":"Al menos hasta que sus hijos sean capaces de ","targetTerm":"volar","sourceTerm":"fly","targetSuffix":"."},{"sourcePrefix":"I thought you could ","sourceSuffix":".","targetPrefix":"Pensé que podías ","targetTerm":"volar","sourceTerm":"fly","targetSuffix":"."},{"sourcePrefix":"I was wondering what it would be like to ","sourceSuffix":".","targetPrefix":"Me preguntaba cómo sería ","targetTerm":"volar","sourceTerm":"fly","targetSuffix":"."},{"sourcePrefix":"But nobody else can ","sourceSuffix":".","targetPrefix":"Pero nadie puede ","targetTerm":"volar","sourceTerm":"fly","targetSuffix":"."}]
Limpar os recursos
Para garantir que a instância do Spark seja desligada, encerre todas as sessões conectadas (notebooks). O pool é desligado quando o tempo ocioso especificado no Pool do Apache Spark é atingido. Você também pode selecionar encerrar sessão na barra de status na parte superior direita do notebook.