Algoritmos de incorporação de palavras em termos de desempenho

11

Estou tentando incorporar cerca de 60 milhões de frases em um espaço vetorial e calcular a semelhança de cosseno entre elas. Eu tenho usado o sklearn's CountVectorizercom uma função de tokenizer personalizada que produz unigramas e bigrams. Acontece que, para obter representações significativas, tenho que permitir um número tremendo de colunas, linear no número de linhas. Isso leva a matrizes incrivelmente esparsas e está prejudicando o desempenho. Não seria tão ruim se houvesse apenas 10.000 colunas, o que eu acho bastante razoável para incorporar palavras.

Estou pensando em tentar usar o Google, word2vecporque tenho certeza de que produz muito menos dimensões e combinações mais densas. Mas antes disso, existem outros casamentos que possam justificar uma olhada no início? O principal requisito seria poder escalar cerca de 60 milhões de frases (linhas).

Eu sou muito novo no campo de incorporação de palavras, portanto, qualquer conselho ajudaria.

Devo acrescentar também que já estou usando decomposição de valor singular para melhorar o desempenho.

Kevin Johnson
fonte
Você está usando o Spark?
Eliasah 22/09/2015
1
Essa é uma das razões pelas quais sugeri o Spark no início. Me desculpe, estou no meu telefone. Não tenho acesso a nenhuma referência sobre técnicas de pré-incorporação de PCA.
eliasah 23/09
1
Não tenho certeza se é um exagero com essa quantidade de dados.
eliasah 23/09/15
1
A remoção de tokens supérfluos não deve reduzir muito a dimensão, pois você está trabalhando em textos. Considerando um dicionário de 150000 palavras, remover palavras de parada, por exemplo, beneficiaria você com algumas dúzias. Isso não vai ajudar.
eliasah 23/09/2015
1
Caso contrário, convém considerar a modelagem de tópicos com Alocação de Dirichlet Latente para reduzir o tamanho do vetor de texto por frase.
eliasah 23/09/15

Respostas:

3

Recentemente, tem havido algum trabalho em atribuir dinamicamente a dimensão word2vec (ignorar grama) usando máquinas Boltzmann. Confira este artigo:

"Incorporação infinita de palavras dimensionais" -Nalsnick, Ravi

A idéia básica é permitir que seu conjunto de treinamento dite a dimensionalidade do seu modelo word2vec, que é penalizado por um termo de regularização relacionado ao tamanho da dimensão.

O artigo acima faz isso por palavras, e eu ficaria curioso para ver como isso funciona com as frases.

Alex R.
fonte