Erro no add_pipe na criação de classificador

Home Fóruns Fórum Processamento de Linguagem Natural com spaCy e Python Erro no add_pipe na criação de classificador

Visualizando 9 posts - 1 até 9 (de 9 do total)
  • Autor
    Posts
  • #32505
    Jerri
    Participante

      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 call nlp.add_pipe('name') instead.

      – If you passed in a component like TextCategorizer(): call nlp.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 run nlp.add_pipe('your_name') to add it to the pipeline.

      Alguém passou por isso?

      Obrigado.

      #32515
      Fábio Spak
      Participante

        Olá 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

        #32730
        Jerri
        Participante

          Olá 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.

          #32731
          Fábio Spak
          Participante

            Olá 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

            #41817

            Olá 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 call nlp.add_pipe('name') instead.

            – If you passed in a component like TextCategorizer(): call nlp.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 run nlp.add_pipe('your_name') to add it to the pipeline.

            #42558
            Matheus Dias
            Participante

              Resolvi da seguinte forma

              model.add_pipe(‘textcat’)

              textcat = model.get_pipe(‘textcat’)
              textcat.add_label(‘MEDO’)
              textcat.add_label(‘ALEGRIA’)

              #44633
              Jones Granatyr
              Moderador

                Que bom que deu certo!

                #46392
                Guilherme Namikawa
                Participante

                  Tenho 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 np

                  o 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

                  #46427
                  Denny Ceccon
                  Moderador

                    Olá Guilherme,

                    Fiz uma revisão no notebook da aula, agora não deve ter problema.

                  Visualizando 9 posts - 1 até 9 (de 9 do total)
                  • Você deve fazer login para responder a este tópico.