Search
Close this search box.
Análise de toxicidade com inteligência artificial
Análise de toxicidade

Posts Relacionados:

A análise de toxicidade é um campo da inteligência artificial (IA) dedicado a identificar automaticamente conteúdos de texto nocivos ou ofensivos. Serviços de atendimento ao cliente e monitoramento dos níveis gerais de toxicidade em grupos são algumas de suas aplicações. Neste post, apresentaremos um pouco sobre nossa abordagem na área.

Receba nossa newsletter

análise de toxicidade com IA

Análise de toxicidade é um campo da inteligência artificial (IA) dedicado a identificar conteúdos nocivos ou ofensivos. Mais especificamente, ela é uma subárea da análise de sentimentos, ramo que pertence ao processamento de linguagem natural. Ou seja, a análise de toxicidade está integrada ao campo da IA responsável pela compreensão de linguagem.

A análise de toxicidade é comumente empregada para identificar conteúdos como: discurso de ódio, ameaças, insultos, ataques pessoais e obscenidade. Mas ela pode ser personalizada para casos específicos.

O emprego mais comum de análise de toxicidade é na proteção de comunidades online e na preservação da imagem de empresas. Seus principais casos de uso são para moderação de mídias sociais, plataformas de jogos, fóruns online e em sistemas de atendimento ao cliente. Nesse último caso, ela é essencial para sinalizar consultas abusivas que exigem tratamento especial. A análise de toxicidade também pode ser utilizada no monitoramento dos níveis de toxicidade de comunidades ou grupos.

Implementação de Análise de Toxicidade

Implementações de análise de toxicidade costumam ser feitas com algoritmos de machine learning incluindo redes neurais. Modelos para projetos simples podem ser feitos com técnicas tradicionais de machine learning como regressão logística e support vector machine (SVMs). Para cenários complexos ou situações que precisam de detecções sutis, as melhores ferramentas disponíveis são as redes neurais. Redes deep learning com arquiteturas avançadas como Transformer são particularmente importantes para implementações para contextos complexos.

Como a análise de toxicidade pertence ao campo do processamento de linguagem natural, os procedimentos de sua implementação seguem as linhas gerais da área. Além disso, as bibliotecas Python para processamento de linguagem natural podem ser usadas para análise de toxicidade. Bibliotecas Python como spaCy, por exemplo, fornecem ferramentas essenciais para a realização do pré-processamento de textos, análises linguísticas, extração de recursos e até para integração com modelos grandes de linguagem.

Geralmente, os modelos de análise de toxicidade são treinados em grandes conjuntos de dados de textos rotulados. Ou seja, dados previamente categorizados como tóxicos ou não tóxicos. Também é possível usar dados categorizados em vários tipos de toxicidade. Durante as etapas de treinamento, os algoritmos aprendem padrões na linguagem que se correlacionam com toxicidade. Após o treinamento, quando um novo texto é analisado, o modelo o avalia conforme os padrões nocivos que aprendeu. A partir dessa avaliação, ele atribui um índice de toxicidade ou informa a probabilidade do texto pertencer a uma categoria tóxica.

Implementação Ilustrativa em Python

Python, com sua sintaxe clara e enorme ecossistema de bibliotecas, é a linguagem de programação ideal para implementações de análise de toxicidade. No geral, a implementação de análise de toxicidade segue as etapas regulares de um modelo de processamento de linguagem natural. A seguir, ilustraremos as etapas gerais para implementar uma análise de toxicidade usando técnicas tradicionais de machine learning com scikit-learn.

Os dados

O primeiro ponto de qualquer modelo de machine learning é a obtenção de um conjunto de dados. Usaremos os dados ilustrativos mostrados no código abaixo. Ele consiste em 10 frases rotuladas como 0 (não tóxicas) ou 1 (tóxicas). É possível fazer análises mais complexas considerando vários tipos de toxicidade, como obscenidade, ofensas, racismo, etc. Mas, para este exemplo, faremos uma classificação binária.

				
					
import pandas as pd
data = pd.DataFrame({'text': ['Você é uma pessoa maravilhosa!', 
                               'Amei seu comentário', 
                               'Vai pastar sua anta', 
                               'Faz tempo que eu fui lá',  
                               'Lá vem os mortadelas encher o saco',  
                               'O site deles é bom',  
                               'Tá cheio de otário aqui', 
                               'Quando é o show deles?',
                               'Cala a boca babaca!', 
                               'Odiei seu comentário'],
                     'toxic': [0, 0, 1, 0, 1, 0, 1, 0, 1, 1]})
print(data)
				
			
				
					                                 
                                     text  toxic
0      Você é uma pessoa maravilhosa!      0
1                 Amei seu comentário      0
2                 Vai pastar sua anta      1
3             Faz tempo que eu fui lá      0
4  Lá vem os mortadelas encher o saco      1
5                  O site deles é bom      0
6             Tá cheio de otário aqui      1
7              Quando é o show deles?      0
8                 Cala a boca babaca!      1
9                Odiei seu comentário      1
				
			

A etapa seguinte consiste no pré-processamento dos dados. Ela não será realizada nesse exemplo, pois ele é apenas ilustrativo. Se você quer conhecer melhor como o pré-processamento pode ser feito, clique aqui.

Extração de recursos

Em seguida, é preciso fazer a extração de recursos. Ela consiste na transformação dos dados de texto em números para que eles possam ser usados em modelos de machine learning. No nosso exemplo, utilizaremos Bag-of-Words (CountVectorizer) para fazer a vetorização dos textos. Para implementações de sistemas mais complexos, vetorizações com word embedding podem ser mais apropriadas.

				
					                                 
 from sklearn.feature_extraction.text import CountVectorizer

vectorizer = CountVectorizer()
features = vectorizer.fit_transform(data['text'])
				
			
Treinamento do modelo

Na etapa seguinte, separamos os dados em conjuntos de treino e conjuntos de teste.

				
					from sklearn.model_selection import train_test_split

# Divide os dados em conjuntos de treino e de teste
X_train, X_test, y_train, y_test = train_test_split(features, data['toxic'], test_size=0.25, random_state=42) 

				
			

Depois, realizamos o treino do modelo usando regressão logística como algoritmo classificador.

				
					from sklearn.linear_model import LogisticRegression

# Treina o classificador (regressão logística)
classifier = LogisticRegression()
classifier.fit(X_train, y_train) 

				
			

Após o treino, o modelo pode ser testado com novas sentenças para gerar classificações.

				
					novos_exemplos = ["Que ideia maravilhosa!", "Você é um babaca!"]
new_features = vectorizer.transform(novos_exemplos)
predictions = classifier.predict(new_features)
print(predictions)
				
			

Predições obtidas:

				
					[0 1]
				
			
Outras opções

A implementação que fizemos é apenas ilustrativa. Sua eficácia para problemas reais depende muito da qualidade dos dados de treino e do tipo de cenário onde o modelo deverá operar. Se a intenção é usá-lo num contexto complexo, opções mais avançadas são mais indicadas. Implementações mais robustas podem ser feitas com bibliotecas de deep learning como PyTorch ou Keras. Elas seguem a lógica geral do código mostrado acima (dados, pré-processamento, extração de recursos, treinamento e predição). Outra alternativa é usar modelos pré-treinados com arquitetura Transformer disponíveis na plataforma Hugging Face. Eles precisam de ajuste fino, mas, com um pouco de insistência, geram resultados bastante robustos.

Análise de Toxicidade como Ferramenta Preditiva?

No início desse texto, mencionamos que uma das possíveis aplicações da análise de toxicidade é no monitoramento do nível de toxicidade presente num grupo ou numa comunidade. Esse tipo de análise é bastante importante para criar um retrato do momento, mas será que ela pode ajudar a prever o futuro? Essa é a nossa intenção. Estamos desenvolvendo um sistema com várias técnicas de processamento de linguagem natural para realizar análises preditivas. Nosso sistema se baseia principalmente no monitoramento do estado emocional geral e do nível de toxicidade presente na nossa comunidade para prever para onde estamos caminhando. Ele combina várias técnicas de IA e estará disponível em breve.

Conclusões

Neste post, fizemos uma introdução à análise de toxicidade, uma subárea da análise de sentimentos. A análise de toxicidade é o ramo da IA dedicado a identificar conteúdos nocivos. Ela tem inúmeras aplicações, incluindo o monitoramento da toxicidade de grupos, moderação de comunidades e fóruns online, entre outras. Ela também é bastante útil em serviços de atendimento ao cliente para detectar e encaminhar comportamentos abusivos. Para saber mais sobre a análise de toxicidade, uma dica é consultar o site do kaggle para conhecer alguns conjuntos de dados e implementações.

Imagem com IA Generativa – Dia 274

IA generativa img 274

Arte com IA generativa: imagem do dia

Todos os dias, postamos um exemplo de imagem artística gerada com inteligência artificial.

Tutoriais

Postagens Mais Recentes

Outras Postagens Que Podem Interessar

Veja
Mais

Fique em contato

Se inscreva para receber nossa newsletter com novidades.

aprendiz artificial