Home › Fóruns › Fórum Processamento de Linguagem Natural com spaCy e Python › Erro no add_pipe na criação de classificador
- Este tópico contém 8 respostas, 7 vozes e foi atualizado pela última vez 1 mês, 3 semanas atrás por Denny Ceccon.
- AutorPosts
- 3 de dezembro de 2021 às 08:52 #32505
Bom dia pessoal. No módulo “Classificação de sentimentos”, tópico “Criação do classificador”, o interpretador do Colab acusa a seguinte situação no trecho de código abaixo, que está logo no início do vídeo:
modelo = spacy.blank(‘pt’)
categorias = modelo.create_pipe(‘textcat’)
categorias.add_label(‘ALEGRIA’)
categorias.add_label(‘MEDO’)
modelo.add_pipe(categorias )O erro é:
—————————————————————————
ValueError Traceback (most recent call last)
<ipython-input-39-7a57ad7a40a1> in <module>()
5 categorias.add_label(‘ALEGRIA’)
6 categorias.add_label(‘MEDO’)
—-> 7 modelo.add_pipe(categorias )
8
9 historico = []/usr/local/lib/python3.7/dist-packages/spacy/language.py in add_pipe(self, factory_name, name, before, after, first, last, source, config, raw_config, validate)
767 bad_val = repr(factory_name)
768 err = Errors.E966.format(component=bad_val, name=name)
–> 769 raise ValueError(err)
770 name = name if name is not None else factory_name
771 if name in self.component_names:ValueError: [E966]
nlp.add_pipe
now takes the string name of the registered component factory, not a callable component. Expected string, but got <spacy.pipeline.textcat.TextCategorizer object at 0x7fd43a1349f0> (name: ‘None’).– If you created your component with
nlp.create_pipe('name')
: remove nlp.create_pipe and callnlp.add_pipe('name')
instead.– If you passed in a component like
TextCategorizer()
: callnlp.add_pipe
with the string name instead, e.g.nlp.add_pipe('textcat')
.– If you’re using a custom component: Add the decorator
@Language.component
(for function components) or@Language.factory
(for class components / factories) to your custom component and assign it a name, e.g.@Language.component('your_name')
. You can then runnlp.add_pipe('your_name')
to add it to the pipeline.Alguém passou por isso?
Obrigado.
5 de dezembro de 2021 às 20:31 #32515Olá Jerri, testei o código da vídeo aula e executou normalmente. Tente executar novamente verificando se alguma linha ficou sem executar, por favor.
Fabio
14 de dezembro de 2021 às 22:07 #32730Olá Fábio.
Obrigado pelo retorno.
O problema é a versão do spacy. Quando, no colab, executo o comando !pip install spacy upgrade, é feita a atualização para a última versão, no caso, 3.2.0, enquanto que no curso está sendo utilizada a versão 2.2.3.
O colab já tem nativo nele a versão 2.2.4, que funcionou o código da aula.
No caso, então, não é necessário realizar instalação do spacy nem atualizá-la, senão, os fontes podem não funcionar.
Saudações a todos.
14 de dezembro de 2021 às 23:50 #32731Olá Jerri, sim, pois se você fizer o upgrade ele vai puxar a última versão do Spacy, a qual, algumas função do código da aula não compatíveis. Todavia, você pode executar o comando abaixo, que é compatível com o código da vídeo aula:
!pip install spacy==2.2.3
Fabio
15 de setembro de 2023 às 17:00 #41817Olá pessoal.
Estou com o mesmo erro apresentado por Jerri, sei que a versão do curso é mais antiga.
Atualmente estou na versão 3.4.4.
Não existe um comando ou função que possa substituir o código
modelo = spacy.blank(‘pt’)
categorias = modelo.create_pipe(‘textcat’)
categorias.add_label(‘ALEGRIA’)
categorias.add_label(‘MEDO’)
modelo.add_pipe(categorias )Estou pesquisando no site oficial da spaCY e ainda não encotrei a solução.
Seria de grande valia se a IA_Experts nos indique como possamos corrigir os erros decorrentes de atualização dos pacotes.
Que é muito frequente, e sempre temos que deixar nossas aplicações com as versões mais atualizadas possíveis.
O erro é:
—————————————————————————
—————————————————————————
ValueError Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_21724\574983386.py in <module>
2 modelo = spacy.blank(‘pt’)
3 categorias = modelo.create_pipe(‘textcat’)
—-> 4 modelo.add_pipe(categorias, last=True)
5 categorias.add_label(“ALEGRIA”)
6 categorias.add_label(“MEDO”)~\Anaconda3\lib\site-packages\spacy\language.py in add_pipe(self, factory_name, name, before, after, first, last, source, config, raw_config, validate)
777 bad_val = repr(factory_name)
778 err = Errors.E966.format(component=bad_val, name=name)
–> 779 raise ValueError(err)
780 name = name if name is not None else factory_name
781 if name in self.component_names:ValueError: [E966]
nlp.add_pipe
now takes the string name of the registered component factory, not a callable component. Expected string, but got <spacy.pipeline.textcat.TextCategorizer object at 0x000001D7899C3D00> (name: ‘None’).– If you created your component with
nlp.create_pipe('name')
: remove nlp.create_pipe and callnlp.add_pipe('name')
instead.– If you passed in a component like
TextCategorizer()
: callnlp.add_pipe
with the string name instead, e.g.nlp.add_pipe('textcat')
.– If you’re using a custom component: Add the decorator
@Language.component
(for function components) or@Language.factory
(for class components / factories) to your custom component and assign it a name, e.g.@Language.component('your_name')
. You can then runnlp.add_pipe('your_name')
to add it to the pipeline.27 de outubro de 2023 às 20:11 #42558Resolvi da seguinte forma
model.add_pipe(‘textcat’)
textcat = model.get_pipe(‘textcat’)
textcat.add_label(‘MEDO’)
textcat.add_label(‘ALEGRIA’)3 de maio de 2024 às 11:20 #44633Que bom que deu certo!
16 de outubro de 2024 às 17:08 #46392Tenho uma coisa para acrescentar, não tem como baixar o Spacy 2.2.3 por causa disso
Coloco !pip install spacy==2.2.3
E aparece: Collecting spacy==2.2.3 Downloading spacy-2.2.3.tar.gz (5.9 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 5.9/5.9 MB 10.0 MB/s eta 0:00:00 Installing build dependencies … done error: subprocess-exited-with-error × Getting requirements to build wheel did not run successfully. │ exit code: 1 ╰─> See above for output. note: This error originates from a subprocess, and is likely not a problem with pip. Getting requirements to build wheel … error error: subprocess-exited-with-error × Getting requirements to build wheel did not run successfully. │ exit code: 1 ╰─> See above for output. note: This error originates from a subprocess, and is likely not a problem with pip.
Indicando que pra quem está no curso atualemnte, não tem como instalar a versão antiga sendo a 2.2.3
A versão que está no Colab atualmente para mim está o 3.7.5 e com isso quando dou um upgrade vai para a versão 3.8.2, e quando eu instalo o !python -m spacy download pt, mas com o !python -m spacy download pt_core_news_sm,
Exemplo, coloco esse código:
import pandas as pd
import string
import spacy
import random
import seaborn as sns
import numpy as npo import (seaborn as sns) fica com mensagem de erro, mesmo eu instlando a versão ou fazendo um upgrade, me fazendo usar a versão do Spacy 3.7.5 no que já está instalado no Colab
- Esta resposta foi modificada 1 mês, 3 semanas atrás por Guilherme Namikawa.
- Esta resposta foi modificada 1 mês, 3 semanas atrás por Guilherme Namikawa.
18 de outubro de 2024 às 18:11 #46427Olá Guilherme,
Fiz uma revisão no notebook da aula, agora não deve ter problema.
- AutorPosts
- Você deve fazer login para responder a este tópico.