Casa > Q > Qual É A Principal Diferença Entre A Palavra2Vec E O Fasttext?

Qual é a principal diferença entre a palavra2vec e o fastText?

Diferença chave, entre word2vec e fasttext é exatamente o que Trevor mencionou

  • word2vec trata cada palavra em corpus como uma entidade atômica e gera um vetor para cada palavra. Neste sentido, Word2vec é muito parecido com Glove - ambos tratam as palavras como a menor unidade a ser treinada. Referência. Qual é a diferença entre fastText e GloVe?

Fasttext (que é essencialmente uma extensão do modelo da palavra2vec), trata cada palavra como composta de ngramas de caracteres. Então o vetor para uma palavra é feito da soma deste caractere n gramas. Por exemplo, a palavra vetor "apple" é uma soma dos vetores dos n-gramas "", "ppl", "pple", "pple>", "ple", "ple>", "le>" (assumindo que hiperparâmetros para o menor ngrama[minn] é 3 e o maior ngrama[maxn] é 6). Esta diferença manifesta-se da seguinte forma.

  1. Gerar melhor incorporação de palavras para palavras raras (mesmo que as palavras sejam raras, o seu carácter n gramas ainda são partilhados com outras palavras - daí que as incorporações ainda possam ser boas).
    1. Isto é simplesmente porque, na palavra2vec uma palavra rara (por exemplo, 10 ocorrências) tem menos vizinhos para serem puxados, em comparação com uma palavra que ocorre 100 vezes - esta última tem mais palavras de contexto vizinhas e por isso é puxada com mais frequência resultando em melhores vectores de palavras. Referência. Como funciona a palavra2vec?
  2. Out of vocabulary words - eles podem construir o vetor para uma palavra a partir de seu caracter n grams mesmo que a palavra não't apareça no corpus de treinamento. Tanto Word2vec quanto Glove can't.
  3. li> Do ponto de vista do uso prático, a escolha de hiperparâmetros para gerar incrustações de texto rápido torna-se chave
    1. li>sem que o treinamento está no nível de caractere n-grama, leva mais tempo para gerar incrustações de texto rápido em comparação ao word2vec - a escolha de hiperparâmetros controlando os tamanhos mínimo e máximo de n-grama tem uma relação direta com este tempo.
    2. À medida que o tamanho do corpus cresce, a necessidade de memória também cresce - o número de n-gramas que se precipitam no mesmo balde de n-grama cresceria. Assim, a escolha do hiperparâmetro que controla o total dos baldes de hash, incluindo o tamanho mínimo e máximo do n-grama, tem um rolamento. Por exemplo, mesmo uma máquina de 256GB de RAM é insuficiente (com espaço swap explicitamente definido muito baixo para evitar swap) para criar vetores de palavras para um corpus com ~50 milhões de palavras vocab exclusivas com minn=3 e maxn=3 e min contagem de palavras 7. A contagem de palavras min teve que ser aumentada para 15 (assim, deixando cair um grande número de palavras com contagem de ocorrências inferior a 15) para gerar vetores de palavras.
  4. O uso de embutimentos de caracteres (caracteres individuais em oposição a n-gramas) para tarefas downstream tem mostrado recentemente aumentar o desempenho dessas tarefas em comparação ao uso de embutimentos de palavras como word2vec ou Glove.
    1. li> Enquanto os artigos relatando essas melhorias tendem a usar LSTMs de caracteres para gerar embeddings, eles não citam o uso de embeddings de fasttext. https://arxiv.org/pdf/1508.02096.pdf (código fonte baseado em Java para esse modelo - wlin12/JNN)
    2. Talvez valha a pena considerar embeddings de fasttext para essas tarefas, uma vez que a geração de embeddings de fasttext (apesar de ser mais lenta que o word2vec) provavelmente será mais rápida que LSTMs (isso é apenas um palpite do tempo que as LSTMs levam - precisa ser validado. For instance one test could be to compare fasttext with minn=1, maxn=1 with a corrsesponding char LSTM and evaluate performance for a POS tagging task).

Additional references

Does Facebook’s fastText library have a concept of word boundaries?

How does fastText output a vector for a word that is not in the pre-trained model?

De Bridgid Moosman

Como a Instagram começou, e foram os fundadores programadores? :: Quais são os benefícios de jogar videojogos?