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 6 posts - 1 até 6 (de 6 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’)

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