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 5 respostas, 4 vozes e foi atualizado pela última vez 6 meses atrás por Matheus Dias.
- 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’) - AutorPosts
- Você deve fazer login para responder a este tópico.