Limpeza e pré-processamento de dados de texto no Pandas para tarefas de PNL

NLP (Natural Language Processing)
Getting your Trinity Audio player ready...

 

PNL (Processamento de Linguagem Natural)
Imagem do responsável

A limpeza e o pré-processamento de dados costumam ser uma das fases mais desafiadoras, porém críticas, na geração de soluções de IA e estágio de máquina alimentadas por dados, e dados de texto não são exceção.

Leste tutorial quebra o gelo ao mourejar com o duelo de preparar dados de texto para tarefas de PNL, uma vez que aquelas que os Modelos de Linguagem (LMs) podem resolver. Ao encapsular seus dados de texto em DataFrames do pandas, as etapas aquém ajudarão você a deixar seu texto pronto para ser digerido por modelos e algoritmos de PNL.

Carregue os dados em um Pandas DataFrame

Para manter leste tutorial simples e focado em entender as etapas necessárias de limpeza e pré-processamento de texto, vamos considerar uma pequena exemplar de quatro instâncias de dados de texto de atributo único que serão movidas para uma instância do DataFrame do pandas. Doravante, aplicaremos todas as etapas de pré-processamento neste objeto DataFrame.

import pandas as pd
data = {'text': ["I love cooking!", "Baking is fun", None, "Japanese cuisine is great!"]}
df = pd.DataFrame(data)
print(df)

Saída:

    text
0   I love cooking!
1   Baking is fun
2   None
3   Japanese cuisine is great!

Mourejar com valores ausentes

Você notou o valor ‘None’ em uma das instâncias de dados de exemplo? Isso é publicado uma vez que valor ausente. Valores ausentes são comumente coletados por vários motivos, geralmente acidentais. Resumindo: você precisa mourejar com eles. A abordagem mais simples Sua visita nos ajuda a continuar oferecendo o melhor para você! simplesmente detectar e remover instâncias que contenham valores ausentes, uma vez que feito no código aquém:

df.dropna(subset=['text'], inplace=True)
print(df)

Saída:

    text
0    I love cooking!
1    Baking is fun
3    Japanese cuisine is great!

Normalize o texto para torná-lo consistente

Regularizar texto implica padronizar ou unificar elementos que podem desabrochar em diferentes formatos em diferentes instâncias, por exemplo, formatos de data, nomes completos ou sensibilidade a maiúsculas e minúsculas. A abordagem mais simples para regularizar nosso texto é convertê-lo Sua visita nos ajuda a continuar oferecendo o melhor para você! para minúsculas, uma vez que a seguir.

df['text'] = df['text'].str.lower()
print(df)

Saída:

        text
0             i love cooking!
1               baking is fun
3  japanese cuisine is great!

Remover rumor

Soído são dados coletados de forma desnecessária ou inesperada que podem atrapalhar os processos subsequentes de modelagem ou previsão se não forem tratados adequadamente. Em nosso exemplo, assumiremos que sinais de pontuação uma vez que “!” não são necessários para a tarefa NLP subsequente a ser aplicada, portanto, aplicamos alguma remoção de rumor nele detectando sinais de pontuação no texto usando uma frase regular. O pacote Python ‘re’ é usado para trabalhar e executar operações de texto com base na correspondência de frase regular.

import re
df['text'] = df['text'].apply(lambda x: re.sub(r'[^\w\s]', '', x))
print(df)

Saída:

         text
0             i love cooking
1              baking is fun
3  japanese cuisine is great

Tokenizar o texto

Tokenização é sem incerteza a lanço mais importante do pré-processamento de texto – junto com a codificação de texto em uma representação numérica – antes de usar NLP e modelos de linguagem. Consiste em dividir cada ingressão de texto em um vetor de pedaços ou tokens. No cenário mais simples, os tokens são associados a palavras na maioria das vezes, mas em alguns casos, uma vez que palavras compostas, uma vocábulo pode levar a vários tokens. Certos sinais de pontuação (se não foram removidos anteriormente uma vez que rumor) também são às vezes identificados uma vez que tokens autônomos.

Leste código divide cada uma das nossas três entradas de texto em palavras individuais (tokens) e as adiciona uma vez que uma novidade pilastra em nosso DataFrame, portanto exibe a estrutura de dados atualizada com suas duas colunas. A abordagem de tokenização simplificada aplicada é conhecida uma vez que tokenização de espaço em branco simples: ela unicamente usa espaços em branco uma vez que o critério para detectar e separar tokens.

df['tokens'] = df['text'].str.split()
print(df)

Saída:

          text                          tokens
0             i love cooking              [i, love, cooking]
1              baking is fun               [baking, is, fun]
3  japanese cuisine is great  [japanese, cuisine, is, great]

Remover palavras de paragem

Uma vez que o texto é tokenizado, filtramos tokens desnecessários. Esse é tipicamente o caso de stop words, uma vez que artigos “a/an, the”, ou conjunções, que não adicionam semiologia real ao texto e devem ser removidos para processamento eficiente ulterior. Esse processo depende do linguagem: o código aquém usa a livraria NLTK para decrescer um léxico de stop words em inglês e filtrá-los dos vetores de token.

Sua visita nos ajuda a continuar oferecendo o melhor para você! nltk nltk.download('stopwords') stop_words = set(stopwords.words('english')) df['tokens'] = df['tokens'].apply(lambda x: [word for word in x if word not in stop_words]) print(df['tokens'])

Saída:

0               [love, cooking]
1                 [baking, fun]
3    [japanese, cuisine, great]

Derivação e lematização

Quase lá! A derivação e a lematização são etapas adicionais de pré-processamento de texto que podem ser usadas às vezes, dependendo da tarefa específica em questão. A derivação reduz cada token (vocábulo) à sua forma base ou raiz, enquanto a lematização reduz ainda mais ao seu lema ou forma de léxico base, dependendo do contexto, por exemplo, “melhor” -> “bom”. Para simplificar, aplicaremos a derivação somente neste exemplo, usando o PorterStemmer implementado na livraria NLTK, auxiliado pelo conjunto de dados wordnet de associações de raiz de palavras. As palavras derivadas resultantes são salvas em uma novidade pilastra no DataFrame.

from nltk.stem import PorterStemmer
nltk.download('wordnet')
stemmer = PorterStemmer()
df['stemmed'] = df['tokens'].apply(lambda x: [stemmer.stem(word) for word in x])
print(df[['tokens','stemmed']])

Saída:

          tokens                   stemmed
0             [love, cooking]              [love, cook]
1               [baking, fun]               [bake, fun]
3  [japanese, cuisine, great]  [japanes, cuisin, great]

Transmudar texto em representações numéricas

Por último, mas não menos importante, algoritmos de computador, incluindo modelos de IA/ML, não entendem linguagem humana, mas números, portanto, precisamos mapear nossos vetores de palavras em representações numéricas, comumente conhecidas uma vez que vetores de incorporação, ou simplesmente incorporação. O exemplo aquém converte texto tokenizado na pilastra ‘tokens’ e usa uma abordagem de vetorização TF-IDF (uma das abordagens mais populares nos bons e velhos tempos da PNL clássica) para transformar o texto em representações numéricas.

from sklearn.feature_extraction.text import TfidfVectorizer
df['text'] = df['tokens'].apply(lambda x: ' '.join(x))
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(df['text'])
print(X.toarray())

Saída:

[[0.         0.70710678 0.         0.         0.         0.       0.70710678]
[0.70710678 0.         0.         0.70710678 0.         0.        0.        ]
[0.         0.         0.57735027 0.         0.57735027 0.57735027        0.        ]]

E é isso! Por mais ininteligível que pareça para nós, essa representação numérica do nosso texto pré-processado é o que sistemas inteligentes, incluindo modelos de PNL, entendem e podem mourejar excepcionalmente muito para tarefas desafiadoras de linguagem, uma vez que qualificar sentimentos em texto, resumi-los ou até mesmo traduzi-los para outro linguagem.

O próximo passo seria cevar nosso padrão de PNL com essas representações numéricas para que ele faça sua mágica.

 

Ivan Palomares Carrascosa é um líder, plumitivo, palestrante e consultor em IA, machine learning, deep learning e LLMs. Ele treina e orienta outros a aproveitar a IA no mundo real.

Manancial: https://www.kdnuggets.com/cleaning-and-preprocessing-text-data-in-pandas-for-nlp-tasks?utm_source=rss&utm_medium=rss&utm_campaign=cleaning-and-preprocessing-text-data-in-pandas-for-nlp-tasks

Não perda a chance de explorar nossos produtos na loja.
Dê um passo primeiro e conquiste sua liberdade financeira trabalhando no conforto da sua mansão ou escritório.

Adriano Pina

Adriano Pina

Análise de Sistemas | SEO e Google Ads | Fundador da Loja Script PHP Aqui & Marca Shoslh de tecnologia

Especialista em transformar ideias em soluções digitais e acelerar o crescimento online.

Deixe um comentário

Tem perguntas? Nos envia sua mensagem 24/7!

(17) 99100-0874

Endereço & Contato

Centro, Interior de São Paulo
E-mail: [email protected]

Links Úteis
BAIXAR APP | SCRIPT PHP AQUI
Certificados
0
    0
    Seu carrinho
    Seu carrinho está vazio

    Usamos cookies para garantir que oferecemos a melhor experiência em nosso site. 

       

    X

    Clique em um de nossos representantes abaixo para conversar no WhatsApp ou envie um email para: 📧 [email protected]

    Precisa de ajuda fale conosco?