Pular para o conteúdo

Como usar o en_core_web_sm no spaCy?

[

spaCy Pipelines

Introduction to NLP and spaCy

Neste capítulo, você será introduzido ao Processamento de Linguagem Natural (NLP) e aprenderá sobre alguns de seus casos de uso, como reconhecimento de entidades nomeadas e chatbots alimentados por IA. Você aprenderá a usar a poderosa biblioteca spaCy para realizar várias tarefas de processamento de linguagem natural, como tokenização, segmentação de frases, marcação de partes do discurso e reconhecimento de entidades nomeadas.

import spacy
# Baixar o modelo de língua em inglês
!python -m spacy download en_core_web_sm
# Carregar o modelo de língua em inglês
nlp = spacy.load('en_core_web_sm')
# Texto de exemplo
texto = "O spaCy é uma biblioteca poderosa para processamento de texto."
# Processar o texto com o spaCy
doc = nlp(texto)
# Tokenização
tokens = []
for token in doc:
tokens.append(token.text)
print(tokens)
# Segmentação de frases
frases = []
for sent in doc.sents:
frases.append(sent.text)
print(frases)
# Marcação de partes do discurso
pos_tags = []
for token in doc:
pos_tags.append(token.text + '=>' + token.pos_)
print(pos_tags)
# Reconhecimento de entidades nomeadas
entities = []
for entity in doc.ents:
entities.append(entity.text + '=>' + entity.label_)
print(entities)

Anotações Linguísticas e Vetores de Palavras spaCy

Neste capítulo, você aprenderá sobre recursos linguísticos, vetores de palavras, similaridade semântica, analogias e operações com vetores de palavras. Você descobrirá como usar o spaCy para extrair vetores de palavras, categorizar textos relevantes para um determinado tópico e encontrar termos semanticamente semelhantes a palavras fornecidas a partir de um corpus ou do vocabulário de um modelo do spaCy.

import spacy
# Carregar o modelo de língua em inglês
nlp = spacy.load('en_core_web_sm')
# Texto de exemplo
texto = "O spaCy é uma biblioteca poderosa para processamento de texto."
# Processar o texto com o spaCy
doc = nlp(texto)
# Vetores de palavras
word_vectors = []
for token in doc:
word_vectors.append(token.text + '=>' + str(token.vector))
print(word_vectors)
# Similaridade semântica
palavra1 = doc[0]
palavra2 = doc[3]
similaridade = palavra1.similarity(palavra2)
print(similaridade)
# Analogias
palavra3 = doc[1]
analogias = palavra1.similarity(palavra2) - palavra3.similarity(palavra2)
print(analogias)

Análise de Dados com spaCy

Neste capítulo, você ficará familiarizado com os componentes do pipeline spaCy, aprenderá como adicionar um novo componente ao pipeline e analisar o pipeline de PNL. Você também aprenderá sobre várias abordagens para extração de informações baseada em regras usando as classes EntityRuler, Matcher e PhraseMatcher no spaCy e no pacote RegEx do Python.

Adicionando pipes no spaCy

import spacy
# Carregar o modelo de língua em inglês
nlp = spacy.load('en_core_web_sm')
# Texto de exemplo
texto = "O spaCy é uma biblioteca poderosa para processamento de texto."
# Processar o texto com o spaCy
doc = nlp(texto)
# Adicionar um novo componente ao pipeline
def meu_componente(doc):
# Implementar seu componente aqui
return doc
nlp.add_pipe(meu_componente, after='parser')
# Processar o texto novamente com o novo componente
doc = nlp(texto)

Analisando pipelines no spaCy

import spacy
# Carregar o modelo de língua em inglês
nlp = spacy.load('en_core_web_sm')
# Texto de exemplo
texto = "O spaCy é uma biblioteca poderosa para processamento de texto."
# Processar o texto com o spaCy
doc = nlp(texto)
# Listar todos os componentes do pipeline
for pipe_name in nlp.pipe_names:
print(pipe_name)
# Obter tokens processados por um componente específico
componente = nlp.get_pipe('parser')
tokens = componente(doc)

EntityRuler spaCy

import spacy
from spacy.pipeline import EntityRuler
# Carregar o modelo de língua em inglês
nlp = spacy.load('en_core_web_sm')
# Texto de exemplo
texto = "O spaCy é uma biblioteca poderosa para processamento de texto."
# Processar o texto com o spaCy
doc = nlp(texto)
# Criar um padrão de reconhecimento de entidades
patterns = [{"label": 'TECNOLOGIA', "pattern": "spaCy"}]
# Criar o EntityRuler
entity_ruler = EntityRuler(nlp)
entity_ruler.add_patterns(patterns)
# Adicionar o EntityRuler ao pipeline do spaCy
nlp.add_pipe(entity_ruler)
# Processar o texto novamente com o EntityRuler
doc = nlp(texto)
# Obter entidades reconhecidas
entities = []
for entity in doc.ents:
entities.append(entity.text + '=>' + entity.label_)
print(entities)

RegEx com spaCy

import spacy
import re
# Carregar o modelo de língua em inglês
nlp = spacy.load('en_core_web_sm')
# Texto de exemplo
texto = "O spaCy é uma biblioteca poderosa para processamento de texto."
# Processar o texto com o spaCy
doc = nlp(texto)
# Expressão regular
pattern = r'spaCy'
# Procurar o padrão no texto utilizando a expressão regular
matches = re.findall(pattern, texto)
# Obter os spans correspondentes
spans = [doc[start:end] for start, end in matches]
# Obter os tokens correspondentes aos spans
tokens = []
for span in spans:
tokens.append(span.text)
print(tokens)

spaCy Matcher e PhraseMatcher

import spacy
from spacy.matcher import Matcher, PhraseMatcher
# Carregar o modelo de língua em inglês
nlp = spacy.load('en_core_web_sm')
# Texto de exemplo
texto = "O spaCy é uma biblioteca poderosa para processamento de texto."
# Processar o texto com o spaCy
doc = nlp(texto)
# Matcher
matcher = Matcher(nlp.vocab)
# Definir padrões a serem procurados
padroes = [{'LOWER': 'spacy'}, {'LOWER': 'biblioteca'}]
# Adicionar os padrões ao matcher
matcher.add("PADRAO1", None, padroes)
# Procurar os padrões no texto
matches = matcher(doc)
# Obter os spans correspondentes
spans = [doc[start:end] for match_id, start, end in matches]
# Obter os tokens correspondentes aos spans
tokens = []
for span in spans:
tokens.append(span.text)
print(tokens)

Personalizando Modelos spaCy

Neste capítulo, você explorará múltiplos casos de uso do mundo real onde os modelos spaCy podem falhar e aprenderá como treiná-los ainda mais para melhorar o desempenho do modelo. Você será apresentado aos passos de treinamento do spaCy e entenderá como treinar um modelo existente do spaCy ou partir do zero e avaliar o modelo no momento da inferência.

import spacy
from spacy.tokens import Doc, Span
from spacy.training import Example
from spacy.util import minibatch, compounding
# Carregar o modelo de língua em inglês
nlp = spacy.load('en_core_web_sm')
# Texto de exemplo
texto = "O spaCy é uma biblioteca poderosa para processamento de texto."
entidade_nomeada = ("spaCy", {"ent_type": "TECNOLOGIA"}) # Definir uma entidade nomeada manualmente
# Criar um objeto Example
example = Example.from_dict(nlp.make_doc(texto), [entidade_nomeada])
# Adicionar o Example aos dados de treinamento
nlp.update([example], sgd=spacy.optimizers.SGD(0.001))
# Treinar o modelo com vários ciclos de treinamento
for _ in range(10):
dados_de_treinamento = minibatch(train_data, size=compounding(4.0, 32.0, 1.001))
for batch in dados_de_treinamento:
texts, annotations = zip(*batch)
docs = nlp.make_doc_batch(texts)
nlp.update(docs, annotations, sgd=optimizer)

Conclusão

Neste curso de spaCy, você aprendeu a usar a biblioteca para realizar várias tarefas de processamento de linguagem natural, desde tarefas básicas como tokenização e segmentação de frases até tarefas avançadas, como reconhecimento de entidades nomeadas e customização de modelos de acordo com seus requisitos específicos. Com o spaCy, você tem à sua disposição uma ferramenta poderosa para lidar com texto de forma eficiente e fácil. Experimente os exemplos acima e explore ainda mais o potencial do spaCy em seus projetos de NLP.