Questão:
O que significa média do vetor word2vec?
Yong Jin Kim
2017-12-15 00:37:14 UTC
view on stackexchange narkive permalink

O artigo que estou lendo diz:

tweet é representado pela média dos vetores de incorporação de palavras de as palavras que compõem o tweet.

Isso significa que cada palavra no tweet (frase) deve ser representada como a média de seu vetor de palavras (ainda com o mesmo comprimento),

ou significa que a própria frase deve ser a média de todos os valores calculados acima (média dos vetores de palavras da palavra que a frase contém)?

Estou confuso.

Será difícil responder a isso sem mais contexto.Você poderia criar um link para o artigo e fornecer uma citação completa (no caso de o link morrer)?
Significa simplesmente que o autor precisava de um único vetor para representar um tweet para que ele possa executar um classificador (provavelmente).Em outras palavras, a média dos vetores foi definida a jusante por uma ferramenta que aceitou um único vetor.
Você pode postar o nome do artigo para contexto?
Trzy respostas:
itdxer
2017-12-15 01:11:56 UTC
view on stackexchange narkive permalink

Você pode pensar nisso em termos de analogia física. Você pode pegar uma superfície plana, como uma mesa, e organizar 30 bolas nela. Depois, você pode cortar as pernas da mesa e substituí-la por uma única perna. Para descobrir onde colocar esta perna, você precisa encontrar o centro de massa de todas as 30 bolas na mesa. Supondo que cada bola tenha o mesmo tamanho e peso do centro de massa, seria a posição média de todas as bolas.

enter image description here

Na foto acima, no primeiro exemplo com 3 objetos, você pode ver aquele centro de massa muito mais próximo dos dois objetos que formam um pequeno aglomerado. A mesma ideia com vetores de palavras. Cada palavra é um objeto e a frase (ou tweet) é apenas um conjunto desses objetos. Se muitos vetores do tweet estiverem próximos uns dos outros no espaço, a média geral estará próxima a este cluster e seria uma boa representação do tweet.

Uma observação é que tirar a média pode ser o mesmo que somar vetores, porque na maioria dos casos você usará a similaridade de cosseno para encontrar vetores próximos. E com a similaridade do cosseno, dividir o vetor por $ n $ é o mesmo que multiplicá-lo por $ 1 / n $, que é um escalar e a escala do vetor não importa se você medir a distância usando ângulos.

Akavall
2020-01-13 00:32:17 UTC
view on stackexchange narkive permalink

Isso significa que a incorporação de todas as palavras tem a média e, portanto, obtemos um vetor 1D de recursos correspondentes a cada tweet. Esse formato de dados é o que os modelos de aprendizado de máquina típicos esperam, portanto, de certa forma, é conveniente.

No entanto, isso deve ser feito com muito cuidado porque a média não leva em conta a ordem das palavras. Por exemplo:

  nosso presidente é um bom líder ele não falhará

nosso presidente não é um bom líder, ele irá falhar
 

Têm as mesmas palavras e, portanto, têm a mesma incorporação de palavras comum, mas os tweets têm significados muito diferentes.

Editar:

Para resolver esse problema, pode-se pesquisar: Sentença-BERT

https://github.com/UKPLab/sentence-transformers e https://arxiv.org/abs/1908.10084

Aqui está uma ilustração rápida com o exemplo acima:

  de frase_transformers importar SentençaTransformer
importar numpy como np

def cosseno_similaridade (frase_embeddings, ind_a, ind_b):
    s = frase_embeddings
    return np.dot (s [ind_a], s [ind_b]) / (np.linalg.norm (s [ind_a]) * np.linalg.norm (s [ind_b]))

model = SentençaTransformer ('bert-base-nli-mean-tokens')

s0 = "nosso presidente é um bom líder ele não irá falhar"
s1 = "nosso presidente não é um bom líder, ele irá falhar"
s2 = "nosso presidente é um bom líder"
s3 = "nosso presidente terá sucesso"

sentenças = [s0, s1, s2, s3]

sentenças_embeddings = model.encode (sentenças)

s = frase_embeddings

imprimir (f "{s0} < - > {s1}: {cosine_similarity (frase_embeddings, 0, 1)}")
imprimir (f "{s0} < - > {s2}: {cosine_similarity (frase_embeddings, 0, 2)}")
imprimir (f "{s0} < - > {s3}: {cosine_similarity (frase_embeddings, 0, 3)}")
 

Resultado:

  nosso presidente é um bom líder ele não vai falhar < - > nosso presidente não é um bom líder ele irá falhar: 0.46340954303741455
nosso presidente é um bom líder, ele não falhará < - > nosso presidente é um bom líder: 0,8822922110557556
nosso presidente é um bom líder, ele não falhará < - > nosso presidente terá sucesso: 0,7640182971954346
 
Você fez um bom ponto aí.Alguma sugestão sobre quais abordagens tomar para evitar essa armadilha?
Alex R.
2017-12-15 00:45:41 UTC
view on stackexchange narkive permalink

Você tem um tweet $ T $, que é composto pelas palavras $ w_1, w_2, \ cdots, w_n $.Cada palavra tem uma incorporação word2vec $ u_ {w_1}, u_ {w_2}, .., u_ {w_n} $.Portanto, você define a incorporação do tweet como: $ u_T: = \ frac {1} {n} \ sum_ {i = 1} ^ nu_ {w_i} $.



Estas perguntas e respostas foram traduzidas automaticamente do idioma inglês.O conteúdo original está disponível em stackexchange, que agradecemos pela licença cc by-sa 3.0 sob a qual é distribuído.
Loading...