SpaCy para NLP: Processamento de Linguagem Natural Avançado

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução ao SpaCy

SpaCy é uma biblioteca de ponta para Processamento de Linguagem Natural (NLP), projetada especificamente para uso em produção. Criada pela equipe da Explosion AI, esta biblioteca se tornou o padrão de facto para soluções industriais de NLP devido à sua alta performance, precisão e facilidade de uso.

Principais Vantagens do SpaCy

Arquitetura e Performance

SpaCy é construída na linguagem de programação Cython, o que garante uma velocidade excepcional no processamento de dados textuais. A biblioteca utiliza algoritmos e estruturas de dados otimizados, permitindo processar milhões de tokens por minuto em hardware padrão.

Suporte Multilíngue

A biblioteca suporta mais de 20 idiomas, incluindo português, inglês, espanhol, chinês, japonês, árabe e muitos outros. Cada idioma possui modelos pré-treinados especializados, otimizados para as características linguísticas específicas.

Modelos Prontos para Uso

SpaCy oferece modelos pré-treinados de diferentes tamanhos (small, medium, large), permitindo escolher o equilíbrio ideal entre velocidade e precisão para cada tarefa.

Instalação e Configuração do SpaCy

Instalação da Biblioteca Base

pip install spacy

Download dos Modelos de Idioma

Para o idioma inglês:

python -m spacy download en_core_web_sm
python -m spacy download en_core_web_md
python -m spacy download en_core_web_lg

Para o idioma português:

python -m spacy download pt_core_news_sm
python -m spacy download pt_core_news_md
python -m spacy download pt_core_news_lg

Importação e Inicialização

import spacy

# Carregar o modelo
nlp = spacy.load("pt_core_news_sm")

# Processar o texto
doc = nlp("A Apple está considerando comprar uma startup no Reino Unido.")

Componentes Principais do Pipeline do SpaCy

Tokenização

SpaCy divide automaticamente o texto em tokens, levando em conta as características do idioma, pontuação e caracteres especiais:

doc = nlp("Não se preocupe, está funcionando!")
for token in doc:
    print(token.text, token.is_alpha, token.is_punct, token.like_num)

Análise Morfológica

Cada token contém informações morfológicas detalhadas:

for token in doc:
    print(f"Palavra: {token.text}")
    print(f"Lema: {token.lemma_}")
    print(f"Classe gramatical: {token.pos_}")
    print(f"Tag: {token.tag_}")
    print(f"Atributos morfológicos: {token.morph}")

Análise Sintática

SpaCy constrói uma árvore de dependências para cada frase:

for token in doc:
    print(f"{token.text} <- {token.dep_} <- {token.head.text}")
    print(f"Filhos: {[child.text for child in token.children]}")

Lematização e Stemming

Lematização no SpaCy

SpaCy oferece lematização de alta qualidade pronta para uso:

doc = nlp("Os gatos estão correndo e pulando")
for token in doc:
    print(f"{token.text} -> {token.lemma_}")

Alternativas para Stemming

Embora o SpaCy não inclua stemming diretamente, é possível integrá-lo com outras bibliotecas:

from nltk.stem import PorterStemmer
stemmer = PorterStemmer()

def add_stemming(doc):
    for token in doc:
        token._.stem = stemmer.stem(token.text)
    return doc

# Adicionar como atributo personalizado
spacy.tokens.Token.set_extension("stem", default=None)

Reconhecimento de Classes Gramaticais

Tags POS Universais

SpaCy utiliza um sistema universal

Recommendations