3
respostas

Classificação da representação vetorial de duas colunas de texto (ERRO)

Olá. como fora no apresentado pelo instrutor Thiago no tópico Passando duas colunas de embeddings para o classificador (Erro) também aberto por mim, bastava utilizar o .reshape(1, -1) em cada para cada amostra, em cada coluna. Porém, como visto em

https://colab.research.google.com/drive/1uLn2cPYYBmaiwm9JCMtoVzKm1qtC988n?usp=sharing`

Após feito isso, as colunas ainda possuem formato (2500, ) ao invés de (2500, 600) como fora citado no outro tópico.

Por conta disso torna-se inviável utilizar as representações vetoriais das sentenças como entrada em um classificador. Gostaria de saber o que estou fazendo de errado.

Grato pela atenção!

3 respostas

Grande Otávio, trabalhando com um banco de dados muito legal do NILC! Pelo visto está gostando de NLP. Muito legal parabéns!

Então, quando comentei com vc sobre o reshape, naquela dúvida era pq provavelmente vc estaria vetorizando uma única frase, correto? Agora vc está vetorizando n_frases, então sua matriz terá shape (n_frases, 300). Então não vai precisar do reshape, ele que está bagunçando as dimensões desta vez! (isso ocorre pela forma inicializamos o nosso vetor (np.zeros)).

Mais um ponto, reparei que vc está usando um word2vec de 300 dimensões, mas inicializa se vetor (np.zeros) com 600 dimensões, tem uma razão específica para isso? Ou acabou passando despercebido mesmo?

Um dica que pode te ajudar a debuggar esses erros de dimensionalidade que são muito comuns! Pensa sempre antes de escrever o código qual é a dimensão que vc espera no final, assim vc consegue criar uns testes tbm. Tipo, eu sei que cada linha da minha matriz tem que representar uma frase, tbm sei que cada coluna representa uma posição do vetor Word2Vec, logo se eu tiver 2 frase e meu vetor tiver 50 posições a minha matriz final precisa ter formato igua a (2, 50).

Abraços e bons estudos!

Olá Thiago. Estou me divertindo muito com as possibilidades em NLP. Dessa vez resolvi investigar o dataset disponibilizado pelo ASSIN de 2016. Onde uma das tarefas era reconhecer inferência textual (do inglês RTE, Recognize Textual Entailment).

Na outra dúvida eu também estava vetorizando todas as frases do conjunto de dados, no caso 2500. Então eu esperava que ficasse (2500, 600) para uma coluna, ou seja, como meu dataset têm as colunas T e H, eu queria que saísse (2500, 600) quando eu fizesse X["T"]. Eu alterei o tamanho fixo do vetor, com esperança que fizesse alguma diferença rsrs

Grato por responder rapidamente, Thiago :]

Olá Thiago, esqueci de mencionar que o que estou passando pro meu SVM, é uma matriz, onde em cada célula contém um vetor que foi obtido através de alguma relação algébrica dos vetores da sentença 1 e 2 (que foram obtidos através da soma dos word embeddings)

Ainda não tive nenhum êxito em utilizar essa estratégia. Então comecei a investigar o BERT para resolver meu problema

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software